← Zurück zu Self-Hostern
Beancount-Anleitung

Synchronisieren Sie Ihre Bank in Beancount.

Eine Schritt-für-Schritt-Anleitung für Plaintext-Buchhaltung: Holen Sie Ihre Banktransaktionen aus der EU und Großbritannien direkt in Ihr Beancount-Hauptbuch. 3 €/Monat, kein eIDAS-Zertifikat, keine Rate-Limit-Mauer, und verschlüsselt, sodass nur Sie es lesen können.

€3/Monat — 1 Konto inklusive · Keine Kreditkarte erforderlich

Einrichtung in 5 Minuten

Von der Bank ins Hauptbuch in fünf Schritten.

  1. Importer installieren

    Holen Sie sich den beangulp-Importer von PyPI. Er bringt das benötigte Client-SDK mit, sodass dies die einzige Abhängigkeit ist, die Sie hinzufügen müssen.

    bash

    pip install beancount-openbanking-io
  2. Ihre Zugangsdaten exportieren

    Exportieren Sie credentials.json aus dem open-banking.io-Dashboard — sie verbindet einen API key mit dem Entschlüsselungsschlüssel, den nur Sie besitzen, sodass der Importer Ihre Daten lokal lesen kann.

    bash

    # Dashboard → Settings → API keys → "Export credentials"
    # downloads credentials.json. Keep it next to your ledger.
    mv ~/Downloads/credentials.json ./credentials.json

    list_accounts.py

    from beancount_openbanking_io import Client
    
    client = Client("credentials.json")
    for account in client.accounts():
        print(account.id, account.currency, account.name)

    Das zweite Snippet gibt alle Konto-IDs aus, die Sie zuordnen können. Kopieren Sie die IDs, die Sie synchronisieren möchten — Sie fügen sie im nächsten Schritt in die Konfiguration ein.

  3. Konten in einer Konfigurationsdatei zuordnen

    Erstellen Sie eine *openbanking.yaml-Datei neben Ihrem Hauptbuch. Verweisen Sie sie auf Ihre Zugangsdaten und ordnen Sie jede Bankkonto-ID einem Beancount-Konto zu. currency, counterpart und assert_balance sind pro Konto optional.

    myfinances.openbanking.yaml

    # Any file ending in *openbanking.yaml is picked up by the importer.
    credentials: credentials.json
    
    accounts:
      - id: "a1b2c3d4-0000-1111-2222-333344445555"
        account: Assets:Bank:Checking
        currency: EUR                       # optional — inferred from the bank if omitted
        counterpart: Expenses:Uncategorized # optional — default second posting
        assert_balance: true                # optional — append a balance assertion
    
      - id: "f6e5d4c3-9999-8888-7777-666655554444"
        account: Assets:Bank:Savings

    Jeder Dateiname, der auf openbanking.yaml endet, wird vom identify()-Schritt des Importers automatisch erkannt — behalten Sie eine Datei pro Hauptbuch oder mehrere, wenn Sie Ihre Bücher aufteilen.

  4. Den Import ausführen

    Binden Sie den Importer in ein einzeiliges beangulp-Skript ein, extrahieren Sie dann die Transaktionen und hängen Sie sie an Ihr Hauptbuch an. Führen Sie es von Hand, aus einem Makefile oder per Cron-Zeitplan aus.

    import.py

    #!/usr/bin/env python3
    import beangulp
    from beancount_openbanking_io import OpenBankingImporter
    
    importers = [
        OpenBankingImporter(),
    ]
    
    if __name__ == "__main__":
        beangulp.Ingest(importers).main()

    bash

    python import.py extract myfinances.openbanking.yaml >> ledger.beancount

    beangulps extract gibt Beancount-Einträge auf stdout aus — leiten Sie sie in Ihr Hauptbuch um oder in eine Staging-Datei, die Sie vor dem Zusammenführen prüfen.

  5. Das Ergebnis lesen

    Sie erhalten echte Beancount-Transaktionen mit vorzeichenbehafteten Beträgen, einer obio-id auf jeder Buchung zur Deduplizierung und einer optionalen Saldo-Assertion am Ende jedes Laufs.

    ledger.beancount

    2026-06-28 * "Netto" "Card purchase"
      obio-id: "txn_9f2c7a1e5b"
      Assets:Bank:Checking  -42.18 EUR
    
    2026-06-29 * "ACME A/S" "Salary June"
      obio-id: "txn_1b8e4d9077"
      Assets:Bank:Checking  +2450.00 EUR
    
    2026-06-30 balance Assets:Bank:Checking  8137.55 EUR

    Ein erneutes Ausführen ist sicher: beangulp dedupliziert anhand der obio-id-Metadaten, sodass derselbe Zeitraum nie doppelt importiert wird. Leiten Sie die Ausgabe durch smart_importer, um die zweite Buchung automatisch zu kategorisieren.

Warum es zur Plaintext-Buchhaltung passt

Gebaut so, wie Ihr Hauptbuch bereits funktioniert.

Verschlüsselt — wir können es nicht lesen

Transaktionen werden auf Ihrem Gerät mit einem Schlüssel verschlüsselt, den nur Sie besitzen. Wir speichern Chiffretext, sodass Ihr Kontoauszug nie in lesbarer Form auf unseren Servern liegt.

Kein eIDAS-Zertifikat

Kein PSD2- (eIDAS-)Zertifikat zu kaufen oder zu registrieren und kein Bankantrag, der zuerst einzureichen ist. Verbinden Sie Ihre Bank und beginnen Sie mit dem Import.

Keine Mauer aus 4 Anfragen pro Tag

Keine Grenze von vier Anfragen pro Konto und Tag, um die herum geplant werden muss. Extrahieren Sie so oft, wie Ihre Bücher es tatsächlich benötigen.

Passt gut zu Ihren Werkzeugen

Reine beangulp-Ausgabe — leiten Sie sie durch smart_importer zur automatischen Kategorisierung oder durch fava, bean-check und Ihre eigenen Skripte. Kein Lock-in.

Ersetzen Sie GoCardless oder Nordigen?

Ihr kostenloses Privatpaket nimmt keine neuen Self-Hoster mehr auf, und die Grenze von vier Anfragen pro Konto und Tag stört routinemäßige Beancount-Importe. open-banking.io ist der Ersatz für 3 €/Monat — kein Zertifikat, keine tägliche Mauer, und verschlüsselt, sodass nur Sie es lesen können. (Die Bankanbindung erfolgt über unseren lizenzierten Anbieter Enable Banking.)

Bringen Sie Ihre Bank in Beancount.

Verbinden Sie in wenigen Minuten eine Bank aus der EU oder Großbritannien und halten Sie Ihr Hauptbuch synchron — für 3 € im Monat.

Frühzugang sichern

Keine Kreditkarte erforderlich