Zum Hauptinhalt springen

Ihr erster Monat mit bea

Eröffnen Sie ein Hauptbuch, erfassen Sie eine Woche Einkäufe, importieren Sie einen Bankexport, gleichen Sie mit einem Kontoauszugssaldo von 3206,81 USD ab und lesen Sie die Monatsberichte über die bea-Befehlszeile.

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 USD

init 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.99

Die 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 --apply

Die 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 '!' --details

Die 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 '!' --details

Ein 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 month

Die 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

Quelle: https://beancount.io/de/docs/Basics/bea-first-month