Die open-banking.io CLI: ein vollständiger Leitfaden

Die openbanking CLI ist der schnellste Weg, um von einem Terminal aus mit Ihren Bankdaten zu arbeiten — Konten auflisten, Kontoauszüge lesen, frische Transaktionen synchronisieren und nach CSV oder JSON exportieren. Alles ist Zero-Knowledge: Der Dienst speichert stets nur Chiffretext, den er nicht lesen kann, und Ihr Verschlüsselungsschlüssel entschlüsselt jede Antwort lokal auf Ihrem Rechner. Der Schlüssel gelangt niemals auf einen Server, nicht einmal verschlüsselt.

Dieser Leitfaden führt Sie durch die Installation der CLI, die Authentifizierung und jeden einzelnen Befehl, jeweils mit echter Ausgabe.

Installation

Homebrew (macOS / Linux)

brew install open-banking-io/tap/openbanking

Vorkompilierte Binaries (Windows / macOS / Linux)

Laden Sie das Archiv für Ihre Plattform aus dem neuesten Release herunter, entpacken Sie es und legen Sie openbanking in Ihren PATH. Windows wird als .zip ausgeliefert; macOS/Linux als .tar.gz, jeweils mit einer checksums.txt.

Aus dem Quellcode (Go 1.21+)

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

Prüfen Sie, ob es funktioniert:

$ openbanking version
openbanking 1.0.0

Authentifizierung

Sie benötigen ein Credentials-Bundle — eine kleine credentials.json, die Sie einmalig aus der open-banking.io Web-App exportieren. Sie enthält die API-Basis-URL, einen API key (ebk_…) und Ihren privaten Verschlüsselungsschlüssel (PKCS#8). Behandeln Sie sie wie ein Passwort: Sie wird mit 0600 auf die Festplatte geschrieben und verlässt Ihren Rechner niemals.

Der einfache Weg: login

Auf einem Rechner mit Browser richtet ein einziger Befehl alles ein:

openbanking login

Dies startet einen localhost-Loopback- + PKCE-Flow. Im Browser melden Sie sich an und geben Ihre Passphrase ein; die Web-App entsperrt Ihren P-256-Schlüssel und übergibt die vollständigen Credentials direkt zurück an den Loopback der CLI. Flags:

$ 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)

Headless / Server: das Bundle direkt ablegen

Auf einem Rechner ohne Browser (CI, ein Server) exportieren Sie credentials.json aus der Web-App und speichern es im Konfigurationspfad der CLI — das Format auf der Festplatte ist das exportierte Bundle:

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

Oder verweisen Sie mit einer Umgebungsvariable auf einen beliebigen Speicherort:

export OPENBANKING_CONFIG=/secrets/openbanking.json

Es gibt außerdem openbanking key import ./credentials.json, das nur den privaten Verschlüsselungsschlüssel (validiert als P-256) auf einen Rechner importiert, der bereits über einen API key aus login verfügt.

Umgebungen wechseln

Richten Sie jeden Befehl auf eine andere Umgebung (Staging, eine selbst gehostete Instanz) aus, ohne sich erneut authentifizieren zu müssen:

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

Wenn gesetzt, überschreibt dies die in Ihrem Bundle gespeicherte API-Basis-URL.

Ihre Konten auflisten

$ 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…

Aliase: acc, ls. Geldbeträge werden als exakte Dezimalzeichenketten gehalten — niemals als Floats — und Belastungen werden negativ dargestellt.

Leiten Sie es mit JSON oder CSV beliebig weiter (JSON ist der Standard, wenn die Ausgabe per Pipe weitergegeben wird):

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

Ein aktuelles Konto auswählen

use merkt sich ein Standardkonto, sodass transactions und sync keine ID benötigen. Wählen Sie eines interaktiv mit den Pfeiltasten aus oder setzen Sie es direkt:

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

Die Auswahl wird in state.json neben Ihren Credentials gespeichert — sie ist CLI-lokal und wird niemals irgendwohin gesendet. Eine explizit angegebene ID in einem Befehl setzt sie stets außer Kraft.

Einen Kontoauszug lesen

Mit einem gesetzten aktuellen Konto genügt:

$ 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. Geben Sie eine ID für ein beliebiges Konto an und filtern Sie nach Datum oder blättern Sie durch die Ergebnisse:

$ 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

Die JSON-Struktur führt neben jeder Zeile eine stabile Transaktions-id mit, bereit für eine Datenbank oder ein Abgleichsskript:

$ 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
}

Frische Transaktionen abrufen

sync holt die neuesten Transaktionen von der Bank für ein Konto (das aktuelle oder eine von Ihnen angegebene ID):

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

Sync ist inkrementell und idempotent — es fügt nur Zeilen ein, die Sie noch nicht haben, sodass ein erneuter Durchlauf stets sicher ist. Erledigen Sie alle verbundenen Konten auf einmal:

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

Ihre Bankverbindungen

$ 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. Ein Status RequiresReauth bedeutet, dass die Zustimmung der Bank abgelaufen ist und Sie sie in der Web-App neu verbinden müssen, bevor sie wieder synchronisiert.

Welche Banken kann ich verbinden?

$ 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

Das Verbinden einer neuen Bank erfolgt in der Web-App — es erfordert eine interaktive Zustimmungs-Weiterleitung — daher hat die CLI keinen connect-Befehl. Sie liest und synchronisiert die Verbindungen, die Sie bereits haben.

Ausgabeformate, Farbe und Autovervollständigung

Jeder Auflistungsbefehl akzeptiert ein globales -o/--output:

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

Farbe ist für Terminals aktiviert und deaktiviert, wenn per Pipe weitergegeben wird; erzwingen Sie die Deaktivierung mit --no-color oder der Umgebungsvariable NO_COLOR.

Die Shell-Autovervollständigung ist eine einzige Zeile in Ihrer rc-Datei (auch bash, fish):

source <(openbanking completion zsh)

Führen Sie openbanking ohne Argumente in einem Terminal aus, um ein interaktives Menü zu erhalten, das durch dieselben Befehle führt.

Wie das Zero-Knowledge-Modell funktioniert

login stellt das Vertrauen im Browser her und übergibt der CLI zwei Dinge: einen API key (bei jeder Anfrage als X-Api-Key gesendet) und Ihren privaten Verschlüsselungsschlüssel. Jede Antwort des Dienstes ist ein undurchsichtiger Chiffretext-Umschlag; die CLI entschlüsselt ihn prozessintern mit Ihrem Schlüssel über ECDH-P256 → HKDF-SHA256 → AES-256-GCM.

Der Server hält stets nur Ihren öffentlichen Schlüssel. Er kann Ihre Kontonamen, Salden oder Transaktionen nicht lesen — nur Sie können das, auf Ihrem Rechner. Deshalb erfolgen sowohl das Verbinden einer Bank als auch das Entsperren Ihres Schlüssels im Browser, und deshalb hält die CLI credentials.json auf 0600.

Fehlerbehebung

  • no credentials at … — run openbanking login first — die Konfigurationsdatei fehlt. Führen Sie openbanking login aus oder legen Sie Ihre exportierte credentials.json unter ~/.config/open-banking/credentials.json (oder $OPENBANKING_CONFIG) ab.
  • Eine Verbindung zeigt RequiresReauth — die Zustimmung der Bank ist abgelaufen; verbinden Sie sie in der Web-App neu und führen Sie dann erneut sync aus.
  • sync gibt 0 neue zurück, obwohl Sie Daten erwartet haben — das Konto ist bereits auf dem neuesten Stand oder seine Verbindung ist nicht Active. Prüfen Sie openbanking connections.
  • Falsche Umgebung — setzen Sie OPENBANKING_API_BASE_URL, um ohne erneutes Ausführen von login auf Staging oder eine selbst gehostete Instanz zu verweisen.

Wie es weitergeht

Die CLI baut auf denselben quelloffenen SDKs auf, die für .NET, Node, Python, Rust, Go, Java, Ruby und PHP verfügbar sind — alles, was Sie hier tun können, lässt sich also in der Sprache Ihrer Wahl skripten. Holen Sie sich Ihr Credentials-Bundle unter open-banking.io und beginnen Sie in wenigen Minuten, Ihre Daten zu lesen.