Naar hoofdinhoud springen

Wat Beancount is: boekhouding in dubbele boekhouding in

Beancount is boekhouding in dubbele boekhouding in platte tekst voor aandelen, crypto en dagelijkse boeken — wat het is en waarom ingenieurs het gebruiken.

Deze gids bundelt de beste praktijken voor boekhouding in platte tekst met behulp van het krachtige, open-source boekhoudprogramma in platte tekst, Beancount. Het behandelt de fundamentele filosofie, basis- tot gevorderde syntaxis, praktische casestudy's voor complexe activa en strategieën voor langetermijnbeheer van je grootboek.

Deel 1: Het "Waarom" - Fundamenten van Slim Boekhouden

Voordat we ingaan op het "hoe", is het cruciaal om het "waarom" te begrijpen. Effectief boekhouden is de basis van persoonlijk financieel beheer en een noodzakelijke stap naar financiële duidelijkheid en vrijheid.

Voorbij Uitgavenregistratie: De Weg naar Financiële Helderheid

Eenvoudige uitgavenregistratie-apps vertellen je waar je geld naartoe ging. Een robuust boekhoudsysteem vertelt je dat en veel meer: het geeft een volledig 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 duidelijk, datagestuurd begrip van je financiële leven, waardoor je weloverwogen beslissingen kunt nemen, risico's kunt beoordelen en kunt werken aan langetermijndoelen zoals pensioen.

Waarom Dubbel Boekhouden? De Kracht van een Gebalanceerd Systeem

In tegenstelling tot enkel boekhouden (een eenvoudige lijst van uitgaven), registreert de dubbele boekhoudmethode elke transactie als een waardestroom tussen ten minste 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 volledig financieel beeld door essentiële rapporten te genereren, zoals een Balans (wat je bezit en verschuldigd bent) en een Resultatenrekening (wat je hebt verdiend en uitgegeven).

Deel 2: Aan de Slag met Beancount

Beancount is een krachtige, op Python gebaseerde tool voor boekhouding in platte tekst.

Je Eerste Kennismaking met Fava op Beancount.io

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

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

Of start in de terminal met bea

Als je liever vanuit een shell werkt, is bea de Beancount.io-opdrachtregel. Er is geen account nodig: installeer het met brew install bex-co/tap/bea of uv tool install beancount-io, en het maakt, valideert, doorzoekt en rapporteert over hetzelfde platte-tekstbestand. De CLI-snelstartgids geeft je binnen een paar minuten je eerste grootboek, en Je eerste maand met bea sluit een volledige maand end-to-end af.

De Vijf Kernrekeningtypen

Beancount gebruikt vijf hoofdrekeningtypen, die de structuur van je grootboek vormen:

RekeningtypeBeschrijvingTypisch Saldo
ActivaWat je bezit (contant geld, bankrekeningen, investeringen, onroerend goed).Positief
PassivaWat je verschuldigd bent (creditcardschuld, leningen, hypotheken).Negatief
InkomenWaar geld vandaan komt (salaris, bonussen, rente).Negatief
UitgavenWaar geld naartoe gaat (voedsel, huur, reizen, belastingen).Positief
Eigen VermogenJe netto waarde; gebruikt voor beginsaldi.Negatief

De Beancount-vergelijking

Beancount handhaaft zijn eigen versie van de boekhoudkundige vergelijking, waarbij de som van alle posten in je hele grootboek gelijk is aan nul:

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

Daarom hebben Inkomen, Passiva en Eigen Vermogen-rekeningen conventioneel negatieve waarden—ze zijn de bronnen van fondsen die je Activa en Uitgaven verhogen.

Deel 3: De Taal van Beancount - Basissyntaxis

Alle invoer in Beancount zijn richtlijnen die beginnen met een datum.

Rekeningen Definiëren (open) en Grondstoffen

Voordat je een rekening kunt gebruiken, moet je deze declareren met de open-richtlijn. Je kunt ook optioneel de valuta's of "grondstoffen" specificeren die erop worden aangehouden.

; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
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

Grondstoffen kunnen echte valuta's zijn (bijv. USD, JPY) of elke door jou gedefinieerde eenheid, zoals luchtmijlen (MILES_UA) of aandelentickers (HOOL).

Je Eerste Transactie Registreren (*)

Transacties zijn de meest voorkomende invoer. Ze beginnen met een datum, een vlag (* voor een volledige transactie of ! voor een onvolledige), een optionele begunstigde en een beschrijving. Elke volgende regel (ingesprongen met twee spaties) is een "posting" naar een rekening.

; YYYY-MM-DD * "Payee" "Description"
;   Account1      Amount Commodity
;   Account2     -Amount Commodity
 
2024-07-28 * "Trader Joe's" "Weekly groceries"
  Expenses:Food:Groceries     125.50 USD
  Liabilities:CreditCard:US:Discover  -125.50 USD

Voor het gemak kun je, als een transactie slechts twee posten heeft, het bedrag op de tweede regel weglaten; Beancount berekent dit dan automatisch.

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

Balancering op Transactieniveau: Belangrijker voor dagelijks gebruik is dat elke individuele transactie ook moet kloppen—de som van alle posten binnen één transactie moet gelijk zijn aan nul. Als een transactie niet klopt, toont Beancount een foutmelding zoals deze:

Beancount Foutmelding

Omgaan met Transacties in Meerdere Valuta's (@ en @@)

Beancount blinkt uit in boekhouding met meerdere valuta's.

  • Gebruik @ om een omrekenkoers per eenheid op te geven.
  • Gebruik @@ om de totale kosten van de omrekening op te geven.
; Buying a flight in EUR with a USD card
2024-08-01 * "Lufthansa" "Flight to Berlin"
  Expenses:Travel:Flights      500.00 EUR @@ 545.00 USD  ; 500 EUR cost me 545 USD in total
  Liabilities:CreditCard:US:Discover  -545.00 USD

Deel 4: Nauwkeurigheid Waarborgen - De Kunst van Reconciliatie

Een belangrijke praktijk voor het onderhouden van een accuraat grootboek is regelmatige reconciliatie. Dit houdt in dat je de saldi in je Beancount-grootboek vergelijkt met officiële overzichten van je financiële instellingen.

Automatische Controles met Saldoasserties (balance)

De balance-richtlijn is je voornaamste hulpmiddel voor geautomatiseerde controles. Je stelt vast dat een rekening op een bepaalde datum een specifiek saldo had. Beancount geeft een foutmelding als het berekende saldo niet overeenkomt met je assertie. Dit is van onschatbare waarde voor het snel lokaliseren van fouten.

Opmerking: De saldoassertie controleert de staat van de rekening aan het begin van de opgegeven dag (vóór eventuele transacties op die dag).

; From your monthly credit card statement
2024-08-01 balance Liabilities:CreditCard:US:Discover  -1432.78 USD

Koppelen van Ondersteunende Documenten (document)

Je kunt koppelingen maken naar externe bestanden zoals bankafschriften of bonnen, waardoor een controleerbaar spoor ontstaat. Fava maakt deze koppelingen aanklikbaar.

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 afwijking vindt die je niet kunt herleiden, moet je een correctie maken. De standaardpraktijk is het gebruik van een speciale Eigen Vermogen-rekening.

; Initializing a cash account when starting your ledger
2020-01-01 * "Initial Balance" "Setting up cash account"
  Assets:Cash:Wallet           200.00 USD
  Equity:Opening-Balances     -200.00 USD

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

Voor snelle correcties waarbij de exacte afwijking niet belangrijk is, kan de pad-richtlijn automatisch het saldo van een rekening aanpassen aan een daaropvolgende balance-assertie, door het verschil op een eigenvermogensrekening te boeken. Wees hier voorzichtig mee, omdat dit grotere problemen kan verbergen. Expliciete correcties zijn over het algemeen veiliger.

Deel 5: Geavanceerde & Realistische Transactiepatronen

Schulden Bijhouden: Vorderingen en Schulden Beheren

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

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

  1. De initiële uitgave en de vordering registreren:

    2024-08-05 * "Dinner Place" "Dinner with Bob"
      Expenses:Food:Restaurant          45.00 USD  ; Your share
      Assets:Receivables:Bob            45.00 USD  ; Bob owes you
      Assets:Bank:US:Chase:Checking    -90.00 USD
  2. Wanneer Bob je terugbetaalt:

    2024-08-06 * "Bob" "Paid me back for dinner"
      Assets:Bank:US:Chase:Checking     45.00 USD
      Assets:Receivables:Bob           -45.00 USD

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

Activa vs. Uitgaven: Een Auto-aankoop en Afschrijving

Een grote aankoop zoals een auto is geen eenvoudige uitgave; het is de verwerving van een actief dat in de loop van de tijd waarde verliest (afschrijving).

  1. De aankoop als actief registreren:

    2023-01-15 * "Toyota Dealer" "Purchase of a new car"
      Assets:Car:ToyotaCamry         30000.00 USD
      Assets:Bank:US:Chase:Checking -30000.00 USD
  2. Jaarlijkse afschrijving registreren: Stel dat je inschat dat de auto elk jaar $3.000 aan waarde verliest. Aan het einde van het jaar boek je dit als een uitgave.

    2023-12-31 * "Depreciation" "Annual car value depreciation"
      Expenses:Depreciation:Car      3000.00 USD
      Assets:Car:ToyotaCamry        -3000.00 USD

Na deze boeking weerspiegelt je Assets:Car:ToyotaCamry-rekening correct de nieuwe waarde van de auto ($27.000), en heb je de gebruikskosten voor dat jaar correct als uitgave verantwoord.

Deel 6: Diepgaande Analyse - Modelleren van Complexe Reële Activa

Casestudy 1: Boekhouding voor Onroerend Goed

Een huis is vaak je grootste actief en passief. Zo kun je het modelleren.

  1. Rekeningen en een Aangepaste Grondstof Creëren:

    2022-01-01 commodity HOUSE_123MAIN
      name: "Property at 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. De Aankoop Registreren: Stel dat je een huis van $500k koopt met een aanbetaling van $100k en een lening van $400k.

    2022-03-15 * "Settlement Company" "Purchase of 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. Maandelijkse Hypotheekbetalingen Registreren: Je maandelijkse betaling bestaat uit aflossing (vermindert de schuld) en rente (een uitgave).

    2022-04-01 * "Mortgage Bank" "Monthly Mortgage Payment"
      Liabilities:Mortgage:HomeLoan      800.00 USD   ; Principal
      Expenses:Home:Interest            1200.00 USD   ; Interest
      Assets:Bank:US:Chase:Checking    -2000.00 USD
  4. Waardestijging Bijhouden (Niet-gerealiseerde Winsten): De marktwaarde van een huis verandert. Om dit bij te houden zonder je officiële vermogen te beïnvloeden (aangezien de winst pas wordt gerealiseerd bij verkoop), kun je een prijsrichtlijn gebruiken met een "virtuele" valuta.

    ; The purchase price is the real cost basis
    2022-03-15 price HOUSE_123MAIN   500000.00 USD
     
    ; An updated market estimate is an unrealized gain
    2024-01-01 price HOUSE_123MAIN   550000.00 USD.UNREALIZED

Hiermee kun je de geschatte waarde in de grafieken van Fava zien zonder je balans onterecht op te blazen.

Verken een live voorbeeldgrootboek voor onroerend goed met hypotheekregistratie, afschrijving en verkoop van onroerend goed:

Voorbeeldgrootboek Onroerend Goed in een nieuw tabblad openen

Casestudy 2: Het Bijhouden van Restricted Stock Units (RSU's)

RSU's zijn een veelvoorkomende vorm van aandelencompensatie. De boekhouding hiervan omvat het bijhouden van de initiële toekenning, vesting-gebeurtenissen en belastinginhouding.

  1. Initieel Opzetten: Creëer grondstoffen voor verworven (HOOL) en niet-verworven (HOOL.NIETVERWORVEN) aandelen, samen met elke rekening die de latere boekingen raken. Door ze allemaal vooraf te declareren, kunnen de twee onderstaande transacties zelfstandig laden.

    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:Grant:Awards                   HOOL.UNVEST
    2021-01-01 open Expenses:Grant:Vested                 HOOL.UNVEST
    2021-01-01 open Income:Salary:Hooli:RSU               USD
    2021-01-01 open Expenses:Taxes:Federal                USD
    2021-01-01 open Expenses:Taxes:State                  USD
  2. De Initiële Toekenning Registreren: Deze transactie toont de totale toekenning die naar een niet-verworven activarekening gaat. Er is nog niets belastbaar, dus de hele boeking is luidende in de trackinggrondstof HOOL.NIETVERWORVEN.

    2021-02-01 * "Hooli" "Initial RSU Grant"
      Assets:Grant:Unvested        1000 HOOL.UNVEST
      Income:Grant:Awards         -1000 HOOL.UNVEST
  3. Een Vesting-gebeurtenis Registreren: Dit is de belangrijkste transactie. Wanneer aandelen vesten, erken je inkomen, houdt de werkgever aandelen in om de belasting te betalen, en houd jij de rest. Stel dat 100 aandelen vesten tegen $150,00, dus:

    • Bruto compensatie: 100 × $150,00 = $15.000,00
    • Ingehouden aandelen voor belasting: 40 × $150,00 = $6.000,00 (federaal $4.800,00 + staat $1.200,00)
    • Aandelen die jij houdt: 60 × $150,00 = $9.000,00 kostprijs
    • Contant geld aan jou: $0,00 — de hele inhouding wordt in aandelen betaald

    Die bedragen vormen de boeking en ze sluiten aan: $6.000,00 aan belasting plus $9.000,00 aan ingehouden aandelen is precies de $15.000,00 aan inkomen.

    2022-02-01 * "Hooli" "RSU Vesting Event"
      ; Ordinary income: 100 shares * $150.00
      Income:Salary:Hooli:RSU                   -15000.00 USD
      ; Tax withheld, funded by 40 of the 100 shares (40 * $150.00 = $6,000.00)
      Expenses:Taxes:Federal                      4800.00 USD
      Expenses:Taxes:State                        1200.00 USD
      ; The 60 shares you keep, at their $150.00 vesting-day basis
      Assets:Brokerage:Etrade:HOOL                  60 HOOL {150.00 USD}
      ; Retire the 100 unvested units the grant was tracking
      Assets:Grant:Unvested                       -100 HOOL.UNVEST
      Expenses:Grant:Vested                        100 HOOL.UNVEST

Deze enkele, gebalanceerde transactie modelleert de hele gebeurtenis: de niet-verworven toekenning wordt verminderd, inkomen wordt erkend, belasting wordt ingehouden en de 60 netto verworven aandelen verschijnen op je brokerrekening met de juiste kostprijs voor toekomstige vermogenswinstberekeningen.

Twee details zijn de moeite waard om over te nemen in je eigen grootboek. Ten eerste, schrijf de inhouding rekening voor rekening uit in plaats van een allesomvattende balanceringsrekening het verschil te laten opvangen — als de federale en staatsboekingen niet optellen tot de waarde van de ingehouden aandelen, zal de transactie niet kloppen en zal Beancount je dat vertellen. Ten tweede, laat geen lege regel tussen posten: een lege regel beëindigt de transactie en Beancount meldt een syntaxisfout op de posten die daarop volgen.

Als je werkgever de ingehouden aandelen op de open markt verkoopt in plaats van ze terug te nemen tegen de vestingprijs, is die verkoop een aparte transactie — een vermindering van Assets:Brokerage:Etrade:HOOL ten opzichte van contant geld — en elk verschil tussen de verkoopprijs en de kostprijs van $150,00 is een kleine vermogenswinst of -verlies. Houd dit buiten de vesting-boeking.

Deel 7: Projectbeheer voor Je Grootboek

Naarmate je grootboek groeit, wordt organisatie essentieel.

Versiebeheer (Git) Gebruiken om Je Gegevens te Beschermen

Omdat je grootboek een tekstbestand is, is het perfect voor versiebeheer met Git. Dit geeft je een volledige geschiedenis van alle wijzigingen en beschermt je tegen onbedoelde verwijderingen of fouten. Waarschuwing: Je financiële gegevens zijn zeer gevoelig. Gebruik een privérepository op services zoals GitHub/GitLab of host je eigen.

Organiseren met Tags (#) en Koppelingen (^)

Beancount biedt twee manieren om transacties te groeperen naast rekeningen:

  • Tags (#): Gebruik deze voor gebeurtenissen of projecten. Je kunt bijvoorbeeld alle transacties filteren die verband houden met een specifieke reis. 2024-07-20 * "Hotel" "Wenen" #reis-europa-2024
  • Koppelingen (^): Gebruik deze om financieel gerelateerde transacties te verbinden die op verschillende momenten plaatsvinden, zoals een contante opname en de bijbehorende bankkosten.

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

Eén groot, massief bestand is moeilijk te beheren. Gebruik de include-richtlijn om je grootboek in meerdere bestanden op te splitsen. main.bean:

; Main ledger file
 
; Global options
option "title" "My Personal Ledger"
option "operating_currency" "USD"
 
; Include account declarations and other files
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 grote, op zichzelf staande gebeurtenis (bijv. reis-europa-2024.bean).
  2. Per Categorie/Begunstigde: Groepeer zeer regelmatige, terugkerende transacties zoals nutsvoorzieningen of salaris in een eigen bestand (bijv. terugkerend-huur.bean).
  3. Per Rekening: Overweeg voor transacties die nauw verbonden zijn met een specifieke rekening (rente, kosten, creditcardbetalingen) een rekening-specifiek bestand.
  4. Per Datum: Voor alle andere algemene transacties is een eenvoudige splitsing per jaar (2024.bean) of maand (2024/07.bean) effectief.

Deel 8: Conclusie

Beancount heeft 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 hulpmiddelen die Beancount biedt te omarmen, kun je overstappen van eenvoudige uitgavenregistratie naar een compleet, accuraat en inzichtelijk systeem van persoonlijk financieel beheer. Je grootboek wordt een permanent, privé en waardevol bezit voor het begrijpen van je verleden en het plannen van je toekomst.

Aan de Slag met Beancount.io

Beancount.io is een modern cloudgebaseerd financieel beheerplatform dat je op tekst gebaseerde transactieregistraties omzet in uitgebreide financiële overzichten, waaronder resultatenrekeningen, balansen en proefbalansen. Door de betrouwbaarheid van platte tekstbestanden te combineren met krachtige visualisatietools, helpt Beancount.io je om nauwkeurige controle over je financiële leven te behouden en tegelijkertijd waardevolle inzichten te krijgen in je investeringsprestaties.

Start je financiële reis met Beancount.io — bekijk huidige abonnementen en prijzen voor wat elk niveau omvat.

beancount.io-grootboekdashboard met een vermogenstrendgrafiek, rekeningsaldi en een AI-assistentenbalk

Verken het live grootboek →

Resultatenrekening van het openbare Beancount-grootboek van Apple op beancount.io met nettowinstgrafiek en uitsplitsing van inkomsten en uitgaven

Verken het live grootboek →

Balans van het openbare Beancount-grootboek van Apple op beancount.io met vermogensgrafiek en details van activa en passiva

Verken het live grootboek →

Bron: https://beancount.io/nl/docs/introduction-to-beancount