Schließen Sie einen Monat Buchhaltung komplett ab mit bea, dem Befehlszeilen-Tool von Beancount.io. Sie eröffnen ein Hauptbuch, erfassen Einkäufe, importieren einen Bankexport, gleichen mit einem Kontoauszugssaldo von 3206,81 USD ab und lesen die Monats-GuV und die Bilanz.
Der Monat ist August 2026 und das Hauptbuch beginnt mit 1.250 USD auf dem Girokonto. Nichts hier verlangt, dass Sie Python oder eine Abfrage schreiben.
Installieren Sie bea zuerst, falls Sie es noch nicht haben: Die Beancount-CLI-Schnellstartanleitung behandelt Homebrew und uv. Lokale Buchhaltung benötigt kein Beancount.io-Konto.
Arbeiten Sie in einem leeren Verzeichnis. Laden Sie die beiden Eingabedateien hinein, bevor Sie beginnen:
- first-month.csv — der Bankexport, den Sie in Woche 3 importieren.
- rules.toml — die Kategorisierungsregeln, die dieser Export verwendet.
Jeder Befehl nennt das Hauptbuch mit --file august/main.bean, sodass Sie sie von diesem Verzeichnis aus ausführen können, ohne in das Hauptbuch zu wechseln.
Woche 1 — Bücher einrichten
Erstellen Sie das Hauptbuch und eröffnen Sie dann das eine Konto, das die Vorlage für diesen Monat nicht enthält.
bea --no-input init august --currency USD --date 2026-08-01 \
--opening-balance "Assets:Checking 1250"
bea --file august/main.bean add open --date 2026-08-01 --account Expenses:Transport:Fuel -c USDinit schreibt august/main.bean mit vierzehn Konten, einschließlich Expenses:Uncategorized. Importe parken Zeilen, die sie nicht kategorisieren können, dort.
Woche 2 — Tägliche Einkäufe erfassen
Erfassen Sie Einkäufe, sobald sie passieren. Das Datum ist standardmäßig heute, daher wird bei rückdatierten Vorgängen --date explizit übergeben.
bea --file august/main.bean add transaction "Coffee" --date 2026-08-03 \
--posting "Expenses:Dining 4.50" --posting "Assets:Checking"
bea --file august/main.bean add transaction "Weekly groceries" --date 2026-08-05 \
--posting "Expenses:Groceries 62.30" --posting "Assets:Checking"
bea --file august/main.bean add transaction --date 2026-08-07 --payee "Employer" \
--narration "August salary" --posting "Assets:Checking 2100" --posting "Income:Salary"Jede Hinzufügung wird gegen das gesamte Hauptbuch geprüft, bevor die Datei ersetzt wird. Die zweite Buchung wird leer gelassen, sodass Beancount den ausgleichenden Betrag ausfüllt.
Woche 3 — Bankexport importieren
Der Export für den Rest des Augusts enthält drei Zeilen:
Date,Payee,Amount
2026-08-10,Whole Foods,-28.40
2026-08-12,Shell,-35.00
2026-08-20,Mystery Shop,-9.99Die Regeln-Datei ordnet einem Zahlungsempfänger ein Konto zu. Regeln werden in Dateireihenfolge ausgeführt, und die erste Übereinstimmung gewinnt.
[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"
[[rule]]
match = "salary|payroll|employer"
account = "Income:Salary"Ordnen Sie die Spalten des Exports mit --csv zu, zeigen Sie das Ergebnis in der Vorschau an und wiederholen Sie es dann mit --apply, um es zu schreiben.
bea --file august/main.bean import first-month.csv \
--csv date=Date,amount=Amount,payee=Payee --account Assets:Checking --rules rules.toml
bea --file august/main.bean import first-month.csv --applyDie Vorschau druckt eine Zeile pro Datensatz mit der passenden Regel sowie den genauen Diff, den sie schreiben würde. Es wird nichts geschrieben, bis --apply verwendet wird.
Der zweite Befehl benötigt keine Flags: Die Spaltenzuordnung, das Konto und die Regeln werden für diese Datei gespeichert. Jeder geschriebene Eintrag trägt eine import-id-Zeile, sodass ein erneuter Import desselben Exports überspringt, was bereits im Hauptbuch ist.
Zwei Zeilen entsprechen einer Regel. Die dritte, Mystery Shop, entspricht keiner, daher wird sie auf Expenses:Uncategorized mit dem Flag ! gebucht — Ihre Prüfwarteschlange für später.
Für Debit- und Kredit-Spaltenformat, andere Währungen und Python-Importer siehe Bankexporte mit der CLI importieren.
Woche 4 — Mit dem Kontoauszug abgleichen
Der August-Kontoauszug schließt das Girokonto bei 3206,81 USD. Ihre Bücher sagen 3209,81 USD. Die Differenz ist eine Bankgebühr von 3,00 USD, die der Export übersehen hat.
Erfassen Sie die Gebühr und bestätigen Sie dann den Kontoauszugssaldo. Beancount prüft eine Saldoprüfung zu Beginn ihres Tages, sodass eine Prüfung am 1. September alle August-Transaktionen abdeckt.
bea --file august/main.bean add transaction "Bank fee" --date 2026-08-31 \
--posting "Expenses:Fees 3.00" --posting "Assets:Checking"
bea --file august/main.bean add balance --date 2026-09-01 --account Assets:Checking \
--amount "3206.81 USD"
bea --file august/main.bean list transaction --flag '!' --detailsDie Warteschlange enthält eine Transaktion, die Mystery-Shop-Zeile. --details druckt ihre Datei- und Zeilennummer.
Öffnen Sie diese Zeile in Ihrem Editor. Ändern Sie ihre Expenses:Uncategorized-Buchung auf das Konto, zu dem sie gehört — hier Expenses:Dining — und ändern Sie ihr Flag von ! auf *, um sie als geprüft zu markieren. Behalten Sie die import-id-Zeile, damit ein erneuter Import die Zeile weiterhin überspringt.
Bestätigen Sie dann, dass das Hauptbuch lädt und die Warteschlange leer ist:
bea --file august/main.bean check
bea --file august/main.bean list transaction --flag '!' --detailsEin sauberes Hauptbuch endet mit 0. Eine fehlerhafte Saldoprüfung oder ein unbekanntes Konto wird mit einem Nicht-Null-Exit aufgelistet. Die Warteschlange druckt jetzt No transactions found.
Den Monat lesen
bea --file august/main.bean report income-statement --time 2026-08
bea --file august/main.bean report balance-sheet
bea --file august/main.bean report income-statement --time monthDie GuV verrechnet das Gehalt von 2.100,00 USD mit 143,19 USD Ausgaben für einen Nettogewinn von 1.956,81 USD. Kontostände werden in Beancount-Vorzeichen gedruckt, daher sind Ertragszeilen negativ. Die Bilanz zeigt das Girokonto bei 3.206,81 USD, passend zum Kontoauszug, mit dem Sie abgeglichen haben.
--time 2026-08 legt den Monat dieses Tutorials fest. --time month bedeutet immer den aktuellen, was Sie verwenden werden, sobald Ihre Bücher aktuell sind.
Weiter von hier
- Bankexporte mit der CLI importieren für Duplikatprüfung, andere Spaltenlayouts und wiederholte Importe.
- Buchhaltung mit bea automatisieren für das JSON-Envelope, Exit-Codes und unbeaufsichtigte Läufe.
- Beancount-CLI-Referenz für jeden Befehl und jede Option.