La CLI de open-banking.io: la guía completa

La CLI openbanking es la forma más rápida de trabajar con los datos de tu banco desde una terminal — listar cuentas, leer extractos, sincronizar transacciones recientes y exportar a CSV o JSON. Todo es de conocimiento cero: el servicio solo almacena texto cifrado que no puede leer, y tu clave de cifrado descifra cada respuesta localmente en tu máquina. La clave nunca toca un servidor, ni siquiera cifrada.

Esta guía te lleva paso a paso por la instalación de la CLI, la autenticación y cada comando, con salida real.

Instalación

Homebrew (macOS / Linux)

brew install open-banking-io/tap/openbanking

Binarios precompilados (Windows / macOS / Linux)

Descarga el archivo comprimido para tu plataforma desde la última versión, descomprímelo y pon openbanking en tu PATH. Windows incluye un .zip; macOS/Linux un .tar.gz, cada uno con un checksums.txt.

Desde el código fuente (Go 1.21+)

go install github.com/open-banking-io/clients/cli@latest

Comprueba que funciona:

$ openbanking version
openbanking 1.0.0

Autenticación

Necesitas un paquete de credenciales — un pequeño credentials.json que exportas una vez desde la aplicación web de open-banking.io. Contiene la URL base de la API, una API key (ebk_…) y tu clave privada de cifrado (PKCS#8). Trátalo como una contraseña: se escribe en disco con permisos 0600 y nunca sale de tu máquina.

La forma fácil: login

En una máquina con navegador, un solo comando lo configura todo:

openbanking login

Esto ejecuta un flujo de loopback en localhost + PKCE. En el navegador inicias sesión e introduces tu frase de contraseña; la aplicación web desbloquea tu clave P-256 y devuelve las credenciales completas directamente al loopback de la CLI. Opciones:

$ openbanking login --help
Usage of login:
  -api string
        API base URL to log in to (default "https://open-banking.io")
  -timeout duration
        how long to wait for the browser login (default 3m0s)

Sin interfaz / servidores: coloca el paquete en su sitio

En una máquina sin navegador (CI, un servidor), exporta credentials.json desde la aplicación web y guárdalo en la ruta de configuración de la CLI — el formato en disco es el paquete exportado:

mkdir -p ~/.config/open-banking
cp credentials.json ~/.config/open-banking/credentials.json
chmod 600 ~/.config/open-banking/credentials.json

O apunta a cualquier ubicación con una variable de entorno:

export OPENBANKING_CONFIG=/secrets/openbanking.json

También existe openbanking key import ./credentials.json, que importa solo la clave privada de cifrado (validada como P-256) en una máquina que ya tiene una API key obtenida con login.

Cambiar de entorno

Apunta cada comando a un entorno distinto (staging, una instancia autohospedada) sin volver a autenticarte:

export OPENBANKING_API_BASE_URL=https://staging.open-banking.io

Cuando está definida, sobrescribe la URL base de la API guardada en tu paquete.

Lista tus cuentas

$ openbanking accounts
NAME                   IBAN                 TYPE  BALANCE    CUR  BANK        ID
USD                    —                    CACC  —          USD  Mock ASPSP  4506789c…
Grundkonto             DK•• •••• •••• 1555  CACC  111.50     DKK  Nordea      d60d3fff…
Grundkonto             DK•• •••• •••• 7544  CACC  -23576.90  DKK  Nordea      f8d9a25d…
Private Banking konto  DK•• •••• •••• 8028  CACC  -43218.85  DKK  Nordea      f1345859…
Onni Hämäläinen        —                    CARD  98.00      EUR  Mock ASPSP  2383f8d0…
Oliver Hämäläinen      —                    CACC  17.33      EUR  Mock ASPSP  cd7cc500…

Alias: acc, ls. El dinero se mantiene como cadenas decimales exactas — nunca como floats — y los cargos se muestran en negativo.

Redirígelo a donde quieras con JSON o CSV (JSON es el formato por defecto cuando la salida se canaliza por una tubería):

$ openbanking accounts -o json | jq '.[] | {name, balance, currency}'
{
  "name": "Grundkonto",
  "balance": "111.50",
  "currency": "DKK"
}
…
$ openbanking accounts -o csv > accounts.csv

Elige una cuenta actual

use recuerda una cuenta por defecto para que transactions y sync no necesiten un id. Elige una de forma interactiva con las teclas de flecha, o defínela directamente:

$ openbanking use cd7cc500-c9bc-456e-8d8d-f1616d98557c
Current account set to Oliver Hämäläinen (cd7cc500…)

La elección se guarda en state.json junto a tus credenciales — es local a la CLI y nunca se envía a ningún sitio. Un id explícito en un comando siempre tiene prioridad sobre ella.

Lee un extracto

Con una cuenta actual definida, simplemente:

$ openbanking transactions
DATE        AMOUNT  CUR  COUNTERPARTY   INFO                           STATUS
2026-06-15  -9.73   EUR  Ella Virtanen  Ella Virtanen-DBIT-9.73-r4i1r  BOOK
2026-06-15  -3.40   EUR  Ella Korhonen  Ella Korhonen-DBIT-3.40-m3172  BOOK
2026-06-15  0.13    EUR  Aino Nieminen  Aino Nieminen-CRDT-0.13-hxqjw  BOOK
2026-06-15  0.57    EUR  Aino Mäkinen   Aino Mäkinen-CRDT-0.57-y7z4v   BOOK
2026-06-15  3.79    EUR  Onni Korhonen  Onni Korhonen-CRDT-3.79-pfl06  BOOK

8 shown, 8 total

Alias: tx. Pasa un id para cualquier cuenta y filtra por fecha o pagina los resultados:

$ openbanking transactions --help
Usage of transactions:
  -from string    earliest booking date (YYYY-MM-DD)
  -to string      latest booking date (YYYY-MM-DD)
  -limit int      max rows to return (0 = server default)
  -offset int     rows to skip
$ openbanking transactions cd7cc500… --from 2025-01-01 --limit 3 -o csv
DATE,AMOUNT,CUR,COUNTERPARTY,INFO,STATUS
2026-06-15,-9.73,EUR,Ella Virtanen,Ella Virtanen-DBIT-9.73-r4i1r,BOOK
2026-06-15,-3.40,EUR,Ella Korhonen,Ella Korhonen-DBIT-3.40-m3172,BOOK
2026-06-15,0.13,EUR,Aino Nieminen,Aino Nieminen-CRDT-0.13-hxqjw,BOOK

La estructura JSON lleva un id de transacción estable junto a cada fila, lista para una base de datos o un script de conciliación:

$ openbanking transactions cd7cc500… --limit 1 -o json
{
  "items": [
    {
      "id": "c1cb427d-3e2c-4c81-993e-21ef179a7c9d",
      "date": "2026-06-15",
      "amount": "-9.73",
      "currency": "EUR",
      "counterparty": "Ella Virtanen",
      "info": "Ella Virtanen-DBIT-9.73-r4i1r",
      "status": "BOOK"
    }
  ],
  "shown": 1,
  "total": 8
}

Descarga transacciones recientes

sync obtiene las últimas transacciones del banco para una cuenta (la actual, o un id que le pases):

$ openbanking sync
Synced: 0 new transaction(s) (3 fetched)

La sincronización es incremental e idempotente — solo inserta las filas que aún no tienes, así que volver a ejecutarla siempre es seguro. Hazlo con todas las cuentas conectadas a la vez:

$ openbanking sync --all
Synced 3 account(s): 0 new transaction(s)

Tus conexiones bancarias

$ openbanking connections
BANK        COUNTRY  STATUS          ACCOUNTS  PSU       VALID UNTIL           LAST SYNCED           SESSION
Mock ASPSP  DK       Active          1         personal  2026-10-01T18:41:33Z  2026-07-04T16:00:12Z  c5cb2c9d…
Nordea      DK       RequiresReauth  3         personal  2026-09-15T12:22:22Z  2026-06-17T13:22:18Z  4327bcad…
Mock ASPSP  DK       Active          2         personal  2026-09-14T18:49:52Z  2026-07-03T18:45:19Z  701bcce3…

Alias: conn. Un estado RequiresReauth significa que el consentimiento del banco ha caducado y necesitas volver a conectarlo en la aplicación web antes de que se pueda sincronizar de nuevo.

¿Qué bancos puedo conectar?

$ openbanking banks --country DK
NAME               COUNTRY  BIC          PSU TYPES          BETA
Nordea             DK       NDEADKKK     personal
Nordea Corporate   DK       NDEADKKK     business           beta
Vestjysk Bank      DK       VEHODK22     business,personal
Mock ASPSP         DK       —            business,personal
Saxo Bank          DK       SAXODKKKXXX  business,personal  beta
Nordea First Card  DK       NDEADKKK     business

Conectar un banco nuevo ocurre en la aplicación web — necesita una redirección interactiva de consentimiento — por eso la CLI no tiene un comando connect. Lee y sincroniza las conexiones que ya tienes.

Formatos de salida, color y autocompletado

Cada comando de listado acepta un -o/--output global:

openbanking accounts -o table   # pretty table (default in a terminal)
openbanking accounts -o json    # json (default when piped)
openbanking transactions -o csv # csv for spreadsheets

El color está activado para terminales y desactivado cuando se canaliza por una tubería; fuérzalo a desactivarse con --no-color o la variable de entorno NO_COLOR.

El autocompletado del shell es una sola línea en tu archivo rc (también bash, fish):

source <(openbanking completion zsh)

Ejecuta openbanking sin argumentos en una terminal para obtener un menú interactivo que te guía por los mismos comandos.

Cómo funciona el modelo de conocimiento cero

login establece la confianza en el navegador y le entrega a la CLI dos cosas: una API key (enviada como X-Api-Key en cada petición) y tu clave privada de cifrado. Cada respuesta del servicio es un sobre opaco de texto cifrado; la CLI lo descifra en el propio proceso con tu clave usando ECDH-P256 → HKDF-SHA256 → AES-256-GCM.

El servidor solo conserva tu clave pública. No puede leer los nombres de tus cuentas, tus saldos ni tus transacciones — solo tú puedes, en tu máquina. Por eso conectar un banco y desbloquear tu clave ocurren ambos en el navegador, y por eso la CLI mantiene credentials.json con permisos 0600.

Resolución de problemas

  • no credentials at … — run openbanking login first — falta el archivo de configuración. Ejecuta openbanking login, o coloca tu credentials.json exportado en ~/.config/open-banking/credentials.json (o $OPENBANKING_CONFIG).
  • Una conexión muestra RequiresReauth — el consentimiento del banco caducó; vuelve a conectarlo en la aplicación web y luego ejecuta sync de nuevo.
  • sync devuelve 0 nuevas pero esperabas datos — la cuenta ya está al día, o su conexión no está Active. Comprueba openbanking connections.
  • Entorno incorrecto — define OPENBANKING_API_BASE_URL para apuntar a staging o a una instancia autohospedada sin volver a ejecutar login.

Adónde ir a continuación

La CLI está construida sobre los mismos SDK de código abierto disponibles para .NET, Node, Python, Rust, Go, Java, Ruby y PHP — así que cualquier cosa que puedas hacer aquí, puedes programarla en el lenguaje que prefieras. Consigue tu paquete de credenciales en open-banking.io y empieza a leer tus datos en cuestión de minutos.