Ga naar hoofdinhoud

Introductie tot Beancount.io

Deze gids bundelt de beste praktijken voor plain-text accounting met behulp van de krachtige, open-source, plain-text accounting tool Beancount. Het behandelt de fundamentele filosofie, basis- tot geavanceerde syntax, praktische casestudies voor complexe activa en strategieën voor langetermijnbeheer van het grootboek.

Deel 1: De "Waarom" - Fundamenten van Slimme Boekhouding

Voordat we in de "hoe" duiken, is het cruciaal om de "waarom" te begrijpen. Effectieve boekhouding is de basis van persoonlijk financieel beheer en een noodzakelijke stap naar financiële helderheid en vrijheid.

Meer dan Kostenregistratie: De Weg naar Financiële Helderheid

Simpele apps voor kostenregistratie vertellen je waar je geld naartoe is gegaan. Een robuust boekhoudsysteem vertelt je dat en nog veel meer: het biedt een compleet beeld van je financiële gezondheid, inclusief je vermogen, cashflow en de prestaties van je investeringen. Het primaire doel is observeerbaarheid—het verkrijgen van een helder, data-gedreven begrip van je financiële leven, waardoor je weloverwogen beslissingen kunt nemen, risico's kunt inschatten en kunt werken aan langetermijndoelen zoals pensioen.

Waarom Dubbel Boekhouden? De Kracht van een Gebalanceerd Systeem

In tegenstelling tot enkelvoudige boekhouding (een simpele lijst van uitgaven), registreert de dubbelboekhoudmethode elke transactie als een waardestroom tussen minstens twee rekeningen. Het kernprincipe is de fundamentele boekhoudkundige vergelijking:

Activa=Passiva+Eigen Vermogen (Netto Waarde)\text{Activa} = \text{Passiva} + \text{Eigen Vermogen (Netto Waarde)}

Dit systeem zorgt ervoor dat je boeken altijd in evenwicht zijn, waardoor fouten drastisch worden verminderd. Het biedt een compleet financieel beeld door essentiële rapporten te genereren, zoals een balans (wat je bezit en schuldig bent) en een winst-en-verliesrekening (wat je hebt verdiend en uitgegeven).

Deel 2: Aan de Slag met Beancount

Beancount is een krachtige, Python-gebaseerde tool voor plain-text accounting.

Je Eerste Kijk met Fava op Beancount.io

Beancount.io biedt een krachtige omgeving die de Beancount-engine combineert met een mobiele app (iOS, Android) en web app - Fava, een fantastische web-based interface voor het visualiseren van je grootboek. Er is geen installatie nodig. Wanneer je het platform gebruikt, communiceer je rechtstreeks met een teksteditor voor je grootboekbestand (bijv. main.bean) en zie je de door Fava gegenereerde rapporten in realtime worden bijgewerkt.

Fava neemt de platte tekst die je schrijft en zet deze om in interactieve grafieken, financiële overzichten en filterbare transactielijsten, waardoor je een duidelijk beeld krijgt van je financiële rapporten.

De Vijf Kernrekeningtypen

Beancount gebruikt vijf rekeningtypen op het hoogste niveau, die de structuur van je grootboek vormen:

RekeningtypeBeschrijvingTypisch Saldo
Assets (Activa)Wat je bezit (contant geld, bankrekeningen, beleggingen, onroerend goed).Positief
Liabilities (Passiva)Wat je schuldig bent (creditcardschuld, leningen, hypotheken).Negatief
Income (Inkomsten)Waar geld vandaan komt (salaris, bonussen, rente).Negatief
Expenses (Uitgaven)Waar geld naartoe gaat (voedsel, huur, reizen, belastingen).Positief
Equity (Eigen Vermogen)Je netto waarde; gebruikt voor beginsaldi.Negatief

De Beancount Vergelijking

Beancount dwingt zijn eigen versie van de boekhoudkundige vergelijking af, waarbij de som van alle boekingen in je hele grootboek nul is:

Activa+Uitgaven+Passiva+Inkomsten+Eigen Vermogen=0\text{Activa} + \text{Uitgaven} + \text{Passiva} + \text{Inkomsten} + \text{Eigen Vermogen} = 0

Dit is de reden waarom, per afspraak, Income (Inkomsten), Liabilities (Passiva) en Equity (Eigen Vermogen) rekeningen negatieve waarden bevatten—ze zijn de bronnen van middelen die je Assets (Activa) en Expenses (Uitgaven) verhogen.

Deel 3: De Taal van Beancount - Core Syntax

Alle vermeldingen in Beancount zijn directives die beginnen met een datum.

Rekeningen Definiëren (open) en Goederen

Voordat je een rekening kunt gebruiken, moet je deze declareren met de open directive. Je kunt ook optioneel de valuta's of "goederen" specificeren die het zal bevatten.

; YYYY-MM-DD open Account:Naam [Goederen1, Goederen2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:Google

Goederen kunnen real-world valuta's zijn (bijv. USD, JPY) of elke aangepaste eenheid die je definieert, zoals airline miles (MILES_UA) of stock tickers (HOOL).

Je Eerste Transactie Opnemen (*)

Transacties zijn de meest voorkomende vermelding. Ze beginnen met een datum, een vlag (* voor een complete transactie of ! voor een incomplete), een optionele begunstigde en een beschrijving. Elke regel die volgt (ingesprongen met twee spaties) is een "boeking" naar een rekening.

; YYYY-MM-DD * "Begunstigde" "Beschrijving"
; Account1 Bedrag Goed
; Account2 -Bedrag Goed

2024-07-28 * "Trader Joe's" "Wekelijkse boodschappen"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover -125.50 USD

Voor het gemak, als een transactie slechts twee boekingen heeft, kun je het bedrag op de tweede regel weglaten, en Beancount zal het automatisch berekenen.

2024-07-28 * "Trader Joe's" "Wekelijkse boodschappen"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover

Transactie-niveau Balancing: Wat nog belangrijker is voor dagelijks gebruik, elke individuele transactie moet ook in evenwicht zijn—de som van alle boekingen binnen één transactie moet nul zijn. Als een transactie niet in evenwicht is, zal Beancount een foutmelding weergeven zoals deze:

Beancount Error Alert

Multi-Currency Transacties Afhandelen (@ en @@)

Beancount blinkt uit in multi-currency accounting.

  • Gebruik @ om een conversieprijs per eenheid te specificeren.
  • Gebruik @@ om de totale kosten van de conversie te specificeren.
; Een vlucht in EUR kopen met een USD-kaart
2024-08-01 * "Lufthansa" "Vlucht naar Berlijn"
Expenses:Travel:Flights 500.00 EUR @@ 545.00 USD ; 500 EUR kostte me in totaal 545 USD
Liabilities:CreditCard:US:Discover -545.00 USD

Deel 4: Nauwkeurigheid Waarborgen - De Kunst van Reconciliatie

Een belangrijke praktijk voor het onderhouden van een nauwkeurig grootboek is regelmatige reconciliatie. Dit omvat het vergelijken van de saldi in je Beancount-grootboek met officiële overzichten van je financiële instellingen.

Automatiseren van Controles met Balans Asserties (balance)

De balance directive is je primaire tool voor geautomatiseerde controles. Je stelt dat op een bepaalde datum een rekening een specifiek saldo had. Beancount zal een fout genereren als het berekende saldo niet overeenkomt met je bewering. Dit is van onschatbare waarde voor het snel lokaliseren van fouten.

Opmerking: De balansbewering controleert de status van de rekening aan het begin van de gespecificeerde dag (vóór eventuele transacties op die dag).

; Van je maandelijkse creditcardafschrift
2024-08-01 balance Liabilities:CreditCard:US:Discover -1432.78 USD

Ondersteunende Documenten Koppelen (document)

Je kunt linken naar externe bestanden zoals bankafschriften of ontvangstbewijzen, waardoor een controleerbaar pad ontstaat. Fava maakt deze links klikbaar.

2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"

Fouten Corrigeren en Beginsaldi Initialiseren

Wanneer je je grootboek start of een discrepantie vindt die je niet kunt traceren, moet je een aanpassing maken. De standaardpraktijk is om een speciale Equity (Eigen Vermogen) rekening te gebruiken.

; Een contantrekening initialiseren bij het starten van je grootboek
2020-01-01 * "Beginsaldo" "Contantrekening instellen"
Assets:Cash:Wallet 200.00 USD
Equity:Opening-Balances -200.00 USD

De Equity:Opening-Balances rekening bevat bedragen die je grootboek binnenkomen vanuit onbekende of externe bronnen.

Voor snelle oplossingen waarbij de exacte discrepantie onbelangrijk is, kan de pad directive automatisch het saldo van een rekening aanpassen om te voldoen aan een volgende balance bewering, waarbij het verschil naar een eigen vermogenrekening wordt geboekt. Gebruik dit met voorzichtigheid, omdat het grotere problemen kan verbergen. Expliciete aanpassingen zijn over het algemeen veiliger.

Deel 5: Geavanceerde & Realistische Transactiepatronen

Schulden Volgen: Beheren van Vorderingen en Schulden

Dubbel boekhouden is perfect voor het volgen van geld dat aan jou verschuldigd is (Assets:Receivables) of door jou (Liabilities:Payable).

Voorbeeld: Je betaalt voor een groepsdiner van 90,enjevriendBobisjezijn90, en je vriend Bob is je zijn 45 aandeel verschuldigd.

  1. Registreer de initiële kosten en de vordering:

    2024-08-05 * "Diner Plaats" "Diner met Bob"
    Expenses:Food:Restaurant 45.00 USD ; Jouw aandeel
    Assets:Receivables:Bob 45.00 USD ; Bob is je verschuldigd
    Assets:Bank:US:Chase:Checking -90.00 USD
  2. Wanneer Bob je terugbetaalt:

    2024-08-06 * "Bob" "Betaalde me terug voor het diner"
    Assets:Bank:US:Chase:Checking 45.00 USD
    Assets:Receivables:Bob -45.00 USD

De Assets:Receivables:Bob rekening is nu nul, en je boeken zijn perfect in evenwicht.

Activa vs. Uitgaven: Een Auto Aanschaf en Afschrijving

Een grote aankoop zoals een auto is geen simpele uitgave; het is de verwerving van een actief dat in waarde daalt na verloop van tijd (afschrijving).

  1. Registreer de aankoop als een actief:

    2023-01-15 * "Toyota Dealer" "Aankoop van een nieuwe auto"
    Assets:Car:ToyotaCamry 30000.00 USD
    Assets:Bank:US:Chase:Checking -30000.00 USD
  2. Registreer jaarlijkse afschrijving: Neem aan dat je schat dat de auto $3,000 in waarde verliest per jaar. Aan het eind van het jaar registreer je dit als een uitgave.

    2023-12-31 * "Afschrijving" "Jaarlijkse afschrijving van de autowaarde"
    Expenses:Depreciation:Car 3000.00 USD
    Assets:Car:ToyotaCamry -3000.00 USD

Na deze vermelding geeft je Assets:Car:ToyotaCamry rekening correct de nieuwe waarde van de auto weer ($27,000), en heb je de gebruikskosten correct verantwoord als een uitgave voor dat jaar.

Deel 6: Diepgaand - Modelleren van Complexe Real-World Activa

Casestudy 1: Accounting voor Onroerend Goed

Een huis is vaak je grootste activa en passiva. Hier is hoe je het kunt modelleren.

  1. Maak Rekeningen en een Aangepaste Goederen:

    2022-01-01 commodity HOUSE_123MAIN
    name: "Eigendom op 123 Main St"
    2022-01-01 open Assets:Property:Home:123Main HOUSE_123MAIN
    2022-01-01 open Liabilities:Mortgage:HomeLoan USD
    2022-01-01 open Expenses:Home:Interest
    2022-01-01 open Expenses:Home:PropertyTax
  2. Registreer de Aankoop: Laten we zeggen dat je een huis van 500kkooptmeteenaanbetalingvan500k koopt met een aanbetaling van 100k en een lening van $400k.

    2022-03-15 * "Afwikkelingsbedrijf" "Aankoop van 123 Main St"
    Assets:Property:Home:123Main 1 HOUSE_123MAIN {500000.00 USD}
    Assets:Bank:DownPayment -100000.00 USD
    Liabilities:Mortgage:HomeLoan -400000.00 USD
  3. Registreer Maandelijkse Hypotheekbetalingen: Je maandelijkse betaling bestaat uit hoofdsom (verminderd passiva) en rente (een uitgave).

    2022-04-01 * "Hypotheekbank" "Maandelijkse Hypotheekbetaling"
    Liabilities:Mortgage:HomeLoan 800.00 USD ; Hoofdsom
    Expenses:Home:Interest 1200.00 USD ; Rente
    Assets:Bank:US:Chase:Checking -2000.00 USD
  4. Waardestijging Volgen (Niet-Gerealiseerde Winsten): De marktwaarde van een huis verandert. Om dit te volgen zonder je officiële vermogen te beïnvloeden (omdat de winst niet wordt gerealiseerd totdat je verkoopt), kun je een prijs directive gebruiken met een "virtuele" valuta.

    ; De aankoopprijs is de werkelijke kostprijs
    2022-03-15 price HOUSE_123MAIN 500000.00 USD

    ; Een bijgewerkte schatting van de markt is een niet-gerealiseerde winst
    2024-01-01 price HOUSE_123MAIN 550000.00 USD.UNREALIZED

Dit stelt je in staat om de geschatte waarde te zien in Fava's grafieken zonder je balans ten onrechte op te blazen.

Casestudy 2: Restricted Stock Units (RSUs) Volgen

RSUs zijn een veel voorkomende vorm van aandelencompensatie. Accounting voor hen omvat het volgen van de initiële toekenning, vesting events en belastinginhouding.

  1. Initiële Setup: Maak goederen aan voor vested (HOOL) en unvested (HOOL.UNVEST) stock, samen met de benodigde rekeningen.

    2021-01-01 commodity HOOL
    2021-01-01 commodity HOOL.UNVEST
    2021-01-01 open Assets:Brokerage:Etrade:HOOL HOOL
    2021-01-01 open Assets:Grant:Unvested HOOL.UNVEST
    2021-01-01 open Income:Salary:Hooli:RSU
    2021-01-01 open Expenses:Taxes:Federal
  2. Registreer de Initiële Toekenning: Deze transactie toont de totale toekenning die naar een unvested actiefrekening gaat.

    2021-02-01 * "Hooli" "Initiële RSU Toekenning"
    Assets:Grant:Unvested 1000 HOOL.UNVEST
    Income:Grant:Awards -1000 HOOL.UNVEST
  3. Registreer een Vesting Event: Dit is de belangrijkste transactie. Wanneer aandelen vesten, erken je inkomen, betaal je belastingen (vaak door enkele aandelen te verkopen) en ontvang je de netto aandelen. Neem aan dat 100 aandelen vesten tegen $150/aandeel.

    2022-02-01 * "Hooli" "RSU Vesting Event"
    ; Herken het totale inkomen van 100 * $150 = $15,000
    Income:Salary:Hooli:RSU -15000.00 USD

    ; Toon betaalde belastingen van dit inkomen
    Expenses:Taxes:Federal 4000.00 USD
    Expenses:Taxes:State 1000.00 USD

    ; Je ontvangt de netto aandelen (neem aan 60 aandelen) tegen hun kostprijs
    Assets:Brokerage:Etrade:HOOL 60 HOOL {150.00 USD}

    ; De andere 40 aandelen werden verkocht om $6000 aan belastingen te dekken.
    ; Deze transactie balanceert het inkomen, de belastingen en de ontvangen aandelen.
    ; We moeten ook de vermindering van unvested aandelen tonen.
    Assets:Grant:Unvested -100 HOOL.UNVEST
    Expenses:Grant:Vested 100 HOOL.UNVEST

Deze enkele, gebalanceerde transactie modelleert correct de hele gebeurtenis: de unvested toekenning wordt verminderd, het inkomen wordt erkend, de belastingen worden betaald en de netto vested aandelen verschijnen in je brokerage account met de juiste kostprijs voor toekomstige berekeningen van de vermogenswinst.

Deel 7: Project Management voor Je Grootboek

Naarmate je grootboek groeit, wordt organisatie essentieel.

Versiebeheer (Git) Gebruiken om Je Gegevens te Beschermen

Aangezien je grootboek een tekstbestand is, is het perfect voor versiebeheer met Git. Dit geeft je een complete geschiedenis van alle wijzigingen, waardoor je wordt beschermd tegen onbedoeld verwijderen of fouten. Waarschuwing: Je financiële gegevens zijn zeer gevoelig. Gebruik een private repository op services zoals GitHub/GitLab, of host je eigen repository.

Beancount biedt twee manieren om transacties te groeperen buiten rekeningen:

  • Tags (#): Gebruik voor gebeurtenissen of projecten. Je kunt bijvoorbeeld alle transacties filteren die betrekking hebben op een specifieke reis. 2024-07-20 * "Hotel" "Wenen" #trip-europe-2024
  • Links (^): Gebruik om financieel gerelateerde transacties te verbinden die op verschillende tijdstippen plaatsvinden, zoals een contante opname en de bijbehorende bankkosten.

Een Schaalbare Strategie voor het Structureren van Je Bestanden (include)

Een enkel, massief bestand is moeilijk te beheren. Gebruik de include directive om je grootboek in meerdere bestanden te splitsen. main.bean:

; Hoofdgrootboekbestand

; Globale opties
option "title" "Mijn Persoonlijk Grootboek"
option "operating_currency" "USD"

; Inclusief rekeningdeclaraties en andere bestanden
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"

Een robuuste organisatiestrategie, in volgorde van prioriteit:

  1. Per Gebeurtenis: Maak een apart bestand voor een belangrijke, op zichzelf staande gebeurtenis (bijv. trip-europe-2024.bean).
  2. Per Categorie/Begunstigde: Voor zeer regelmatige, terugkerende transacties zoals energierekeningen of salaris, groepeer je ze in hun eigen bestand (bijv. recurring-rent.bean).
  3. Per Rekening: Voor transacties die nauw verbonden zijn met een specifieke rekening (rente, kosten, creditcardbetalingen), overweeg een rekening-specifiek bestand.
  4. Op Datum: Voor alle andere algemene transacties is een simpele splitsing per jaar (2024.bean) of maand (2024/07.bean) effectief.

Deel 8: Conclusie

Beancount biedt een steile leercurve, maar beloont de inspanning met ongeëvenaarde kracht, flexibiliteit en controle over je financiële gegevens. Door de principes van dubbel boekhouden en de praktische tools die Beancount biedt te omarmen, kun je overstappen van simpele kostenregistratie naar een compleet, nauwkeurig en inzichtelijk systeem van persoonlijk financieel beheer. Je grootboek wordt een permanent, privé en onschatbaar actief voor het begrijpen van je verleden en het plannen van je toekomst.

Aan de Slag met Beancount.io

Beancount.io is een modern cloud-based financieel management platform dat je op tekst gebaseerde transactiegegevens omzet in uitgebreide financiële overzichten, waaronder winst- en verliesrekeningen, balansen en proefbalansen. Door de betrouwbaarheid van plain text bestanden te combineren met krachtige visualisatietools, helpt Beancount.io je om de precieze controle over je financiële leven te behouden, terwijl je waardevolle inzichten krijgt in je beleggingsprestaties.

Start je financiële reis met Beancount.io - Gratis tijdens onze promotieperiode!

Expenses

Income Statement

Balance Sheet