Ga naar hoofdinhoud

De Boekhoudcyclus, Beancount-Stijl

· 9 minuten leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Financiële overzichten verschijnen niet uit het niets. Ze zijn het eindproduct van een gestructureerd, herhaalbaar proces dat bekend staat als de boekhoudcyclus. Hoewel de principes universeel zijn, kunnen de tools die je gebruikt de ervaring drastisch veranderen. Deze gids loopt de boekhoudcyclus met een focus op Beancount, de krachtige platte‑tekst boekhoudtool, stap voor stap door.

We laten zien hoe Beancount’s tekst‑eerste benadering saaie stappen elimineert, wat je moet automatiseren, en welke rapporten je het duidelijkst beeld van je financiële gezondheid geven. 🧑‍💻

2025-08-13-the-accounting-cycle-beancount-style


TL;DR: De Beancount‑Werkstroom

  • Vastleggen & Journaal: Registreer elke transactie als een nette, dubbel‑postingsboeking in je .beancount‑tekstbestand.
  • Valideren & Afstemmen: Gebruik balance‑asserties om te bevestigen dat je grootboek overeenkomt met bankafschriften en voer bean-check uit om fouten op te sporen.
  • Controleren: Genereer een ongeregelde proefbalans voor een snelle sanity‑check.
  • Aanpassen: Boeking van posten voor accruals, deferrals, afschrijvingen en andere periodieke items.
  • Hercontroleren: Controleer de aangepaste proefbalans om te verzekeren dat alles correct is.
  • Publiceren & Afsluiten: Genereer je winst‑en‑verliesrekening, balans en kasstroomoverzicht. Het afsluiten van de boeken is optioneel in Beancount, omdat rapporten datum‑bewust zijn.

Deze stroom kan als volgt worden gevisualiseerd:


Stap 1: Vastleggen en Registreren van Transacties

Dit is de fundamentele stap. Elke financiële gebeurtenis — een verkoop, een aankoop, een bankvergoeding — moet worden vastgelegd. In Beancount doe je dit door transacties aan te maken in een simpel tekstbestand, meestal main.beancount of opgesplitst in meerdere bestanden per jaar.

Elke transactie moet voldoen aan de regels van dubbelboekhouding, wat betekent dat de som van alle posten nul moet zijn. Beancount dwingt dit voor je af.

2025-08-10 * "Walmart" "Aankoop kantoorbenodigdheden"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
  • Pro‑Tip: Gebruik tags zoals #project-phoenix of #client-acme om dimensies aan je data toe te voegen. Dit maakt later query‑en en rapporteren ongelooflijk flexibel.

Hygiëne bij Afstemming ✅

De krachtigste functie voor nauwkeurigheid is de balance‑assertie. Aan het einde van een afschriftperiode (bijv. einde van de maand) geef je aan wat het saldo van een rekening zou moeten zijn.

2025-08-31 balance Assets:Bank:Checking  12345.67 USD

Als de som van alle transacties die Assets:Bank:Checking tot die datum beïnvloeden niet gelijk is aan 12345.67 USD, zal Beancount een fout melden. Deze eenvoudige directive maakt je grootboek tot een zelf‑auditend document.

Voor het achteraf invoeren van historische data kan de pad‑directive automatisch een balancerende transactie aanmaken zodat je openingssaldi overeenkomen met je eerste assertie.


Stap 2: “Boeken naar het Grootboek” (Een Gratis Stap !)

In traditionele boekhoudsystemen schrijf je eerst posten in een “journaal” en vervolgens kopieert een aparte “posting” stap die waarden naar het “algemene grootboek”.

Met Beancount is je .beancount‑bestand zowel journaal als grootboek. Wanneer je een transactie schrijft en opslaat, heb je deze al geboekt. Er is geen aparte stap. Deze directheid is een kernvoordeel van platte‑tekst boekhouding — wat je ziet, is wat je krijgt.


Stap 3: Voorbereiden van een Ongeregelde Proefbalans

Voordat je aanpassingen maakt, heb je een snelle “klopt dit allemaal?”‑check nodig. Een proefbalans is een simpel rapport dat elke rekening en het totale saldo weergeeft. Het totaal van alle debets moet gelijk zijn aan het totaal van alle credits.

Je kunt dit genereren met een eenvoudige query:

bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"

Of, voor een visuelere aanpak, open je je grootboek in Fava (de webinterface voor Beancount) en ga je naar het “Trial Balance”‑rapport. Zoek naar ongewone zaken — een activarekening met een credit‑saldo, of een onkostenrekening met een vreemd bedrag.


Stap 4: Boeken van Aanpassingsposten

Aanpassingsposten zijn cruciaal voor nauwkeurige rapportage volgens het accrual‑principe. Ze zorgen ervoor dat opbrengsten worden erkend wanneer ze verdiend zijn en kosten wanneer ze gemaakt zijn, ongeacht wanneer cash verandert van hand.

Veelvoorkomende aanpassingen zijn:

  • Accruals: Opbrengsten die je hebt verdiend maar nog niet gefactureerd, of kosten die je hebt gemaakt maar nog niet betaald.
  • Deferrals: Voorafbetalingen. Als een klant je vooruitbetaalt voor een jaar dienst, boek je dit als een verplichting (Liabilities:UnearnedRevenue) en erken je elke maand 1/12 daarvan als inkomen.
  • Niet‑cash items: Boeken van zaken zoals afschrijvingen van activa.
  • Correcties: Fouten herstellen of gemiste items uit bankfeeds verwerken, zoals een kleine rentebetaling.

Voorbeeld: Opbrengst Accrueren

Je hebt een project op 31 augustus afgerond maar stuurt de factuur pas in september. Om de inkomsten in de juiste periode (augustus) te erkennen, maak je een aanpassingspost:

2025-08-31 * "Opbrengst accrual voor klantproject #1042"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD

Voorbeeld: Afschrijving Boeken

Je bedrijf heeft een afschrijvingsschema voor zijn activa. Aan het einde van de periode boek je de kosten:

2025-12-31 * "Jaarlijkse afschrijving op computerapparatuur"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD

Stap 5: Uitvoeren van een Aangepaste Proefbalans & Validatie

Zodra je aanpassingsposten zijn ingevoerd, voer je het proefbalans‑rapport opnieuw uit. Dit is je aangepaste proefbalans. Het levert de definitieve cijfers die worden gebruikt om de financiële overzichten te maken.

Dit is ook het perfecte moment om Beancount’s ingebouwde sanity‑check te draaien:

bean-check main.beancount

Deze opdracht controleert alle syntaxis, balanceringsregels en asserties. Als er geen output verschijnt, zijn je boeken mechanisch in orde.


Stap 6: Publiceren van Financiële Overzichten 📊

Dit is de beloning. Met de cijfers uit je aangepaste proefbalans kun je nu de belangrijkste rapporten genereren. Fava is de makkelijkste manier, omdat het interactieve, drill‑down rapporten out‑of‑the‑box biedt.

  • Winst‑en‑Verliesrekening (Profit & Loss): Toont je opbrengsten en kosten over een periode, resulterend in je netto‑inkomen of -verlies.
  • Balans: Een momentopname van wat je bezit (Activa) en wat je verschuldigd bent (Passiva), evenals je eigen vermogen (Equity) op een specifieke datum.
  • Kasstroomoverzicht: Verbindt je begin‑cash met je eind‑cash door te laten zien waar geld vandaan kwam en waar het naartoe ging.

Voor aangepaste rapporten kun je de Beancount Query Language (BQL) gebruiken. Hier is een query voor een maandelijkse winst‑en‑verliesrekening:

-- P&L voor augustus 2025
SELECT account, sum(position)
WHERE account '^(Income|Expenses)'
AND date >= 2025-08-01 AND date <= 2025-08-31
GROUP BY account ORDER BY account;

Stap 7: Boeken Afsluiten (Optioneel)

In traditionele boekhouding omvat het “sluiten” proces het maken van journaalposten om alle tijdelijke rekeningen (Opbrengsten en Kosten) op nul te zetten en het netto‑resultaat over te dragen naar een eigen vermogen‑rekening genaamd Retained Earnings. Dit reset formeel de tijdelijke rekeningen voor het volgende jaar.

In Beancount is deze stap meestal overbodig. Fava’s rapporten zijn datum‑bewust; vraag je om een 2025 P&L, dan gebruikt het alleen 2025‑data. De saldi “lekken” niet door. De meeste gebruikers laten de saldi gewoon staan.

Mocht je echter een formele afsluiting nodig hebben voor compliance of aandeelhoudersrapportage, dan kun je dit doen met een eenvoudige einde‑jaar transactie die het totale opbrengsten‑ en kosten‑saldo naar Equity:Retained-Earnings verplaatst.


Een Praktische Maandelijkse Afsluit‑Checklist

Hier is een herhaalbare checklist om elke maand je boeken af te sluiten met Beancount.

  • Capture: Importeer alle bank‑ en creditcardtransacties. Voer handmatig eventuele contante uitgaven of buiten‑de‑band items in.
  • Reconcile: Voeg balance‑asserties toe voor alle bankrekeningen, creditcards en leningen, en laat ze overeenkomen met je afschriften.
  • Review: Scan de ongeregelde proefbalans in Fava. Onderzoek vreemde of onverwachte saldi. Controleer op achterstallige onbetaalde facturen (Assets:AccountsReceivable) of rekeningen (Liabilities:AccountsPayable).
  • Adjust: Boeking van posten voor accrued revenue/expenses, deferred revenue, en eventuele correcties.
  • Validate: Voer bean-check uit. Review de definitieve aangepaste proefbalans.
  • Publish: Genereer de winst‑en‑verliesrekening en de balans. Stuur ze naar stakeholders of bewaar ze voor je administratie.
  • Wrap-up: Voer optioneel een afsluitende boeking uit als je bedrijf dat vereist. Archiveer een kopie van je .beancount‑bestanden voor de periode.

Waarom Beancount Uitblinkt voor de Boekhoudcyclus

  • Transparantie en Auditability: Je grootboek is een tekstbestand. Je kunt git gebruiken om je financiële geschiedenis te versioneren, wijzigingen te bekijken met diff, en samen te werken met je accountant in een helder, eenduidig formaat.
  • Volledige Controle: Jij definieert je rekeningschema. Je zit niet vast aan de structuur van een softwareleverancier. Je data zijn van jou, voor altijd, in een open formaat.
  • Ongeëvenaarde Kracht: De combinatie van SQL‑achtige queries (BQL) en een rijke webinterface (Fava) geeft je ongekende mogelijkheden om je financiële data te snijden, te hakken en te begrijpen.

Kopie‑Plak‑Snippets om te Beginnen

Eenvoudig Rekeningschema:

option "title" "My Personal Ledger"
option "operating_currency" "USD"

;; --- Accounts ---
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:CreditCard
1970-01-01 open Liabilities:UnearnedRevenue
1970-01-01 open Equity:Owner:Capital
1970-01-01 open Equity:Retained-Earnings
1970-01-01 open Income:Consulting
1970-01-01 open Expenses:Office:Supplies
1970-01-01 open Expenses:Software
1970-01-01 open Expenses:Depreciation

Handige BQL‑Query:

-- Find all customers with an outstanding balance
SELECT payee, sum(position)
WHERE account = 'Assets:AccountsReceivable'
GROUP BY payee
HAVING sum(position) > 0
ORDER BY sum(position) DESC;

Door de tijdloze boekhoudcyclus te koppelen aan Beancount’s moderne, tekst‑gebaseerde tools, krijg je een systeem dat robuust, transparant en gebouwd is om lang mee te gaan. Happy bookkeeping!