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. Ejecutaopenbanking login, o coloca tucredentials.jsonexportado 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 ejecutasyncde nuevo. syncdevuelve 0 nuevas pero esperabas datos — la cuenta ya está al día, o su conexión no estáActive. Compruebaopenbanking connections.- Entorno incorrecto — define
OPENBANKING_API_BASE_URLpara apuntar a staging o a una instancia autohospedada sin volver a ejecutarlogin.
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.