Naar hoofdinhoud springen

Je eerste maand met bea

Open een boekhouding, boek een week aan aankopen, importeer een bankexport, reconcileer naar een saldo van 3206,81 USD en lees de rapporten van de maand met de bea-opdrachtregel.

Sluit een volledige maand af met bea, het opdrachtregelprogramma van Beancount.io. Je opent een boekhouding, boekt aankopen, importeert een bankexport, reconcileert naar een saldo van 3206,81 USD en leest de resultatenrekening en balans van de maand.

De maand is augustus 2026 en de boekhouding begint met 1.250 USD op de betaalrekening. Er wordt hier niets van je gevraagd om Python of een query te schrijven.

Installeer bea eerst als je dat nog niet hebt: de Beancount CLI-snelstart behandelt Homebrew en uv. Lokale boekhouding vereist geen Beancount.io-account.

Werk in een lege map. Download de twee invoerbestanden erin voordat je begint:

  • first-month.csv — de bankexport die je in week 3 importeert.
  • rules.toml — de categorisatieregels die die export gebruikt.

Elke opdracht benoemt de boekhouding met --file august/main.bean, zodat je ze vanuit die map kunt uitvoeren zonder naar de boekhouding te hoeven navigeren.

Week 1 — zet de boeken op

Maak de boekhouding aan en open vervolgens de enige rekening die de sjabloon mist voor deze maand.

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 schrijft august/main.bean met veertien rekeningen, waaronder Expenses:Uncategorized. Imports parkeren rijen die ze niet kunnen categoriseren daar.

Week 2 — boek dagelijkse aankopen

Boek aankopen zodra ze plaatsvinden. De datum standaard op vandaag, dus voor achteraf ingevoerde historie geef je --date expliciet mee.

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"

Elke toevoeging wordt gecontroleerd tegen de hele boekhouding voordat het bestand wordt vervangen. De tweede boeking wordt leeg gelaten, zodat Beancount het salderingsbedrag invult.

Week 3 — importeer de bankexport

De export voor de rest van augustus bevat drie rijen:

Date,Payee,Amount
2026-08-10,Whole Foods,-28.40
2026-08-12,Shell,-35.00
2026-08-20,Mystery Shop,-9.99

Het regelsbestand koppelt een begunstigde aan een rekening. Regels worden in bestandsvolgorde uitgevoerd en de eerste overeenkomst wint.

[[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"

Wijs de kolommen van de export toe met --csv, bekijk het resultaat en herhaal dan met --apply om het te schrijven.

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

De preview print één rij per regel met de regel die overeenkwam, plus de exacte diff die het zou schrijven. Er wordt niets geschreven tot --apply.

De tweede opdracht heeft geen vlaggen nodig: de kolomtoewijzing, de rekening en de regels worden onthouden voor dat bestand. Elke geschreven boeking bevat een import-id-regel, zodat het opnieuw importeren van dezelfde export overslaat wat al in de boekhouding staat.

Twee rijen komen overeen met een regel. De derde, Mystery Shop, komt nergens mee overeen en wordt daarom geboekt naar Expenses:Uncategorized met de vlag ! — je controlelijst voor later.

Voor de vorm met debet- en creditkolommen, andere valuta's en Python-importeurs, zie Bankexports importeren met de CLI.

Week 4 — reconcileer tegen het overzicht

Het augustusoverzicht sluit de betaalrekening af op 3206,81 USD. Jouw boeken zeggen 3209,81 USD. Het verschil is een bankkost van 3,00 USD die de export miste.

Boek de kost en assert vervolgens het saldo van het overzicht. Beancount controleert een assertie aan het begin van zijn dag, dus een assertie op 1 september dekt elke augustusboeking.

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

De wachtrij bevat één transactie, de Mystery Shop-rij. --details print het bestand en het regelnummer.

Open die regel in je editor. Wijzig de boeking Expenses:Uncategorized naar de rekening waar hij thuishoort — hier Expenses:Dining — en wijzig de vlag van ! naar * om hem als gecontroleerd te markeren. Behoud de import-id-regel zodat een herhaalde import de rij nog steeds overslaat.

Bevestig vervolgens dat de boekhouding laadt en de wachtrij leeg is:

bea --file august/main.bean check
bea --file august/main.bean list transaction --flag '!' --details

Een schone boekhouding eindigt met status 0. Een verbroken assertie of een onbekende rekening wordt vermeld met een niet-nulstatus. De wachtrij print nu No transactions found.

Lees de maand

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

De resultatenrekening saldeert het salaris van 2.100,00 USD tegen 143,19 USD aan kosten voor een nettowinst van 1.956,81 USD. Rekeningsaldi worden geprint in Beancount-tekens, dus inkomstenregels zijn negatief. De balans toont de betaalrekening op 3.206,81 USD, overeenkomend met het overzicht waarnaar je gereconcilieerd hebt.

--time 2026-08 zet de maand van deze tutorial vast. --time month betekent altijd de huidige, waarnaar je zult grijpen zodra je boeken actueel zijn.

Ga hiermee verder

Bron: https://beancount.io/nl/docs/Basics/bea-first-month