Voorbeeldconfiguraties voor freelancers, kleine bedrijven en persoonlijke financiën
In deze handleiding onderzoeken we hoe je een Beancount-grootboek kunt afstemmen op verschillende behoeften: een freelanceprofessional, een kleine boetiekonderneming en persoonlijke huishoudfinanciën. Elk scenario kent unieke rekeningstructuren en overwegingen. We leggen de beweegredenen achter elke configuratie uit, geven voorbeelden van Beancount-code en belichten nuttige functies (zoals aangepaste tags en geautomatiseerde imports) die het bijhouden eenvoudiger maken. De toon is instructief maar toegankelijk – of je nu een developer, een technisch onderlegde professional of een financiënliefhebber bent, deze voorbeelden helpen je om Beancount in de praktijk toe te passen.
Freelancers
Freelancers (zoals softwareontwikkelaars of grafisch ontwerpers) jongleren vaak met meerdere klanten en projectkosten. Een eenvoudige Beancount-opzet kan helpen om inkomsten per klant, bedrijfskosten (inclusief ingehuurde onderaannemers) en geld dat opzij wordt gezet voor belastingen bij te houden. Het doel is om het overzichtelijk te houden, zodat het meeschaalt met je freelancebedrijf zonder onnodige complexiteit.
Belangrijke rekeningen voor een freelancer: Een freelancegrootboek scheidt doorgaans zakelijke financiën van persoonlijke financiën. Je zou bijvoorbeeld het volgende kunnen gebruiken:
- Assets:Business:Checking – Een zakelijke bankrekening voor alle klantbetalingen en bedrijfskosten.
- Assets:Business:TaxSavings – Een spaarrekening om een deel van de inkomsten opzij te zetten voor belastingbetalingen (aangezien geen enkele werkgever belastingen voor je inhoudt).
- Income:Client:Naam – Inkomstenrekeningen voor klantbetalingen. Je kunt subrekeningen per grote klant aanmaken (bijv.
Income:Client:ACME), of één enkeleIncome:Freelance-rekening gebruiken met klantnamen getagd in transacties. - Expenses:Business:Contractors – Voor betalingen aan onderaannemers of uitbesteed werk.
- Expenses:Business:Software (en andere categorieën zoals Travel, Supplies) – Voor reguliere bedrijfskosten (softwareabonnementen, apparatuur, reizen naar klantlocaties, enz.).
- Equity:OwnerDraw – (Optioneel) Om overdrachten van winst van het bedrijf naar jezelf persoonlijk vast te leggen. Dit helpt om bedrijfsgeld van privégeld te onderscheiden wanneer je jezelf betaalt.
Beweegreden: Deze structuur zorgt ervoor dat al het zakelijke geld in speciale rekeningen wordt bijgehouden. Inkomsten van elke klant worden vastgelegd (waardoor je gemakkelijk kunt zien wie je grootste klanten zijn), en kosten worden gecategoriseerd voor aftrek bij de belastingaangifte. Door belastingen opzij te zetten in een aparte activarekening (of een verplichting voor verschuldigde belastingen vast te leggen) voorkom je dat je per ongeluk geld uitgeeft dat naar de overheid moet. Het grootboek blijft eenvoudig: als je nieuwe klanten of kostenposten krijgt, kun je nieuwe rekeningen toevoegen of tags gebruiken zonder alles te herstructureren. Een veelvoorkomende valkuil is het vermengen van persoonlijke en zakelijke transacties op één rekening; door een aparte zakelijke betaalrekening (en bijbehorende activarekening) te onderhouden, worden reconciliatie en rapportage overzichtelijker. Een andere valkuil om te vermijden is vergeten om contante overboekingen voor belastingen of privéopnames vast te leggen – door rekeningen zoals TaxSavings en OwnerDraw te gebruiken, is elke euro verantwoord.
Voor het draaien van deze opzet als een gehost grootboek met inkomsten per klant, factuurvorderingen en een belastingreserve, zie Beancount.io voor freelancers.
Beancount-functies om te benadrukken: Tags en metadata zijn buitengewoon nuttig voor freelancers. Je kunt transacties bijvoorbeeld taggen met een project- of factuurnummer, of een metadataveld gebruiken om de klantnaam te noteren als je ervoor kiest geen aparte inkomstenrekeningen per klant te gebruiken. Dit maakt het gemakkelijk om transacties voor een specifieke klant of project te filteren of op te vragen (bijv. alle kosten getagd met #ProjectX optellen). Bovendien kunnen Beancount's geautomatiseerde importeurs de gegevensinvoer vereenvoudigen – je zou bijvoorbeeld een importeur kunnen instellen voor je bank- of creditcardafschriften om transacties in je grootboek in te lezen, waarna je alleen de juiste kosten- of inkomstenrekeningnamen hoeft toe te voegen. Dit bespaart tijd wanneer je veel kleine transacties hebt (zoals softwareabonnementen of reiskosten).
Voorbeeld van een freelancer-grootboekfragment
Hieronder staat een vereenvoudigd Beancount-fragment voor een freelanceontwikkelaar. Het toont het openen van een paar belangrijke rekeningen, een inkomende betaling van een klant, een betaling aan een onderaannemer, een typische bedrijfskostenpost en het overboeken van geld naar een belastingspaarrekening. (In de praktijk zou je ook andere kosten zoals reizen of apparatuuraankopen op dezelfde manier vastleggen.)
1970-01-01 open Assets:Business:Checking
1970-01-01 open Assets:Business:TaxSavings
1970-01-01 open Income:Client:ACME
1970-01-01 open Expenses:Business:Contractors
1970-01-01 open Expenses:Business:Software
; Client income – payment for an invoice
2025-08-15 * "Invoice payment from ACME Corp"
invoice: "INV-2025-08-15"
Assets:Business:Checking 5000 USD
Income:Client:ACME -5000 USD
; Regular expense – e.g. software subscription for the business
2025-08-05 * "GitHub Subscription"
Expenses:Business:Software 15 USD
Assets:Business:Checking -15 USD
; Contractor expense – paying a subcontractor for help
2025-08-20 * "Contractor payment – Jane Doe"
Expenses:Business:Contractors 2000 USD
Assets:Business:Checking -2000 USD
; Tax withholding – moving money to tax savings
2025-08-31 * "Set aside Q3 taxes" #tax
Assets:Business:TaxSavings 1500 USD
Assets:Business:Checking -1500 USDLaten we uitleggen wat er gebeurt:
- We openen de nodige rekeningen bovenaan (met een startdatum). Beancount vereist dat elke rekening wordt geopend voordat deze wordt gebruikt — een boeking naar een niet-aangemelde rekening is een laadfout — dus deze
open-instructies zijn verplicht, niet optioneel. De rekeningenAssets:Business:CheckingenAssets:Business:TaxSavingsbevatten USD-saldo's; inkomsten- en kostenrekeningen kunnen zonder valuta in de open-instructie worden gelaten, omdat ze de transactievaluta overnemen (in dit geval USD). - Factuurbetaling van klant: Op 2025-08-15 legt een inkomstentransactie een klantbetaling van $5.000 voor een factuur vast. We crediteren
Income:Client:ACME(inkomsten nemen toe met een negatief bedrag in dubbel boekhouden) en debiteren de betaalrekening. Een metadataveldinvoice: "INV-2025-08-15"is toegevoegd om het factuurnummer te noteren – dit is optioneel, maar laat zien hoe je extra informatie aan een transactie kunt koppelen. Je zou deze transactie ook kunnen taggen met#ACMEof#client-ACMEvoor snelle filtering. Als je meerdere klanten had, zou je een algemeneIncome:Clients-rekening kunnen gebruiken en vertrouwen op dergelijke metadata of het Payee-veld om klanten te onderscheiden, in plaats van veel subrekeningen aan te maken. - Bedrijfskosten (software): Op 2025-08-05 leggen we een uitgave van $15 vast voor een GitHub-abonnement (misschien voor privé-repositories of andere diensten). De boeking gaat naar
Expenses:Business:Softwareen vermindert de zakelijke betaalrekening. Kleine terugkerende kosten zoals deze kunnen worden getagd (we hebben bijvoorbeeld#taxtoegevoegd aan de belastingtransactie hieronder; op dezelfde manier zou je bepaalde kosten kunnen taggen als#recurringals ze maandelijks terugkeren, enz.). In dit geval maakt de rekeningnaam zelf (Software) het duidelijk. - Betaling aan onderaannemer: Op 2025-08-20 betaalde de freelancer een onderaannemer (Jane Doe) $2.000. Dit wordt vastgelegd als een kostenpost in
Expenses:Business:Contractorsen als geld dat de betaalrekening verlaat. Je kunt de naam van de onderaannemer in de omschrijving opnemen (zoals we deden) of als metadataveld (bijv.contractor: "Jane Doe"). Dit houdt een audittrail bij van wie je hebt betaald en waarom (nuttig als je details nodig hebt bij de belastingaangifte of budgettering). - Overboeking naar belastingspaarrekening: Op 2025-08-31 draagt de freelancer $1.500 over van de hoofdrekening naar een speciale belastingspaarrekening. We hebben deze transactie getagd met
#taxvoor de zichtbaarheid. Dit is geen uitgave (je verplaatst gewoon je eigen geld), dus het gaat tussen twee activarekeningen. Door dit maandelijks of per kwartaal te doen, verzamel je geld om geschatte belastingen te dekken. Wanneer het tijd is om de belastingen daadwerkelijk aan de overheid te betalen, leg je een uitgave vast (bijvoorbeeldExpenses:Taxes) en een afschrijving van de TaxSavings- (of Checking-)rekening. Een veelvoorkomende valkuil is om deze overboeking als een uitgave in je rapporten te behandelen – onthoud dat het geen uitgave is, slechts een voorzichtige reservering. Alleen de daadwerkelijke belastingbetaling aan de Belastingdienst zou een uitgave zijn (of vermindering van een opgebouwde belastingverplichting als je het op die manier bijhoudt).
Samenvatting: Het Beancount-grootboek van een freelancer legt de nadruk op eenvoud en duidelijkheid. Alle inkomsten en uitgaven die verband houden met het bedrijf worden methodisch vastgelegd. Door betekenisvolle rekeningnamen en incidentele tags/metadata te gebruiken, kun je gemakkelijk rapporten per klant of per kostenpost genereren (bijv. totale inkomsten per klant, totale uitgaven aan onderaannemers dit jaar, enz.). Deze opzet is schaalbaar – je kunt nieuwe klanten of kostenposten toevoegen naarmate je bedrijf groeit. Met functies zoals geautomatiseerde imports (om banktransacties binnen te halen) en aangepaste tags voor projecten of facturen kan Beancount de administratieve last voor freelancers aanzienlijk verminderen en tegelijkertijd een duidelijk beeld van de financiën op elk moment bieden.
Kleine Bedrijven
Beschouw vervolgens een kleine boetiek e-commercebedrijf – bijvoorbeeld een online winkel die handgemaakte goederen verkoopt. Dit scenario voegt complexiteit toe zoals voorraadbeheer, kostprijs van verkochte goederen (COGS) en het verwerken van online betalingsverwerkers. Beancount kan hieraan tegemoetkomen met een doordachte rekeningstructuur en methode voor het vastleggen van transacties. We gebruiken een geval waarin het bedrijf producten in voorraad bijhoudt, verkopen registreert via een online platform (zoals Shopify met Stripe voor betalingen) en typische bedrijfskosten vastlegt.
Belangrijke rekeningen voor een boetiek e-commercebedrijf: Naast basisbank- en kostenrekeningen bevat het grootboek van een detailhandelsbedrijf rekeningen om voorraad en verkoopstromen bij te houden:
- Assets:Bank:Checking – De betaalrekening van het bedrijf (voor het betalen van leveranciers, operationele kosten en het ontvangen van overboekingen van betalingsverwerkers).
- Assets:Stripe:Balance (of Assets:PayPal, enz.) – Een clearingsrekening voor geld dat via online betalingen is geïnd maar de bank nog niet heeft bereikt. Wanneer een klant bijvoorbeeld via Stripe betaalt, kan het geld op een Stripe-rekening staan voordat het in batches op je bank wordt gestort.
- Assets:Inventory:Product – Voorraadrekeningen voor je producten. Je kunt elk product (of elke productcategorie) behandelen als een commodity in Beancount om hoeveelheden op voorraad bij te houden.
Assets:Inventory:Widgetskan bijvoorbeeld de hoeveelheid "Widget"-artikelen bevatten die momenteel op voorraad zijn, gewaardeerd tegen hun kostprijs. - Income:Sales – Registreert omzet uit productverkopen. Je kunt subrekeningen gebruiken voor verschillende verkoopkanalen (bijv.
Income:Sales:OnlineversusIncome:Sales:InStore) als het bedrijf meerdere kanalen had, maar we houden het eenvoudig met één omzetrekening. - Expenses:COGS – Kostprijs van verkochte goederen, om de kostprijsbasis van voorraadartikelen vast te leggen wanneer ze worden verkocht. Deze rekening toont effectief hoeveel de verkochte voorraad je (als bedrijfseigenaar) over een periode heeft gekost. Het is een essentieel onderdeel voor het berekenen van de brutowinst.
- Expenses:Fees – Voor betalingsverwerkingskosten en platformkosten (Stripe-kosten, Shopify-kosten, PayPal-kosten, enz. kunnen allemaal hier worden vastgelegd). Je kunt dit opsplitsen in meer gedetailleerde rekeningen (bijv.
Expenses:Fees:StripeenExpenses:Fees:Shopify) als dat gewenst is, maar één rekening kan volstaan voor alle transactiekosten. - Expenses:Operating – Algemene bedrijfskosten die niet direct verband houden met COGS, zoals marketing, webhosting, software, verzendbenodigdheden, enz. Deze kunnen worden opgesplitst in subrekeningen (bijv.
Expenses:Marketing,Expenses:WebHosting,Expenses:Shipping) om verschillende kostenplaatsen te analyseren. - Liabilities:SalesTax – (Optioneel, indien van toepassing) Als het bedrijf omzetbelasting of btw op verkopen moet innen, houdt deze verplichtingsrekening de geïnde maar nog niet aan de overheid afgedragen belastingen bij. Elke verkoop splitst dan het belastingdeel naar deze rekening. Dit zorgt ervoor dat geïnde belastingen niet als inkomsten worden geteld en gereserveerd zijn voor betaling aan de belastingautoriteiten.
- Equity:OwnerEquity – (Optioneel) Vertegenwoordigt de investering van de eigenaar en ingehouden winsten. Bij de start van het bedrijf zou eventuele initiële financiering door de eigenaar hier worden gecrediteerd (met een debitering van de bank of voorraad als ze contanten of voorraad hebben ingebracht). Ook als de eigenaar winst opneemt (uitkeringen), kan dat tegen deze eigen vermogensrekening worden geboekt. Dit houdt de balans in evenwicht, maar voor de dagelijkse bedrijfsvoering komt het niet vaak ter sprake.
Beweegreden: Deze opzet scheidt de stroom van goederen en geld. Voorraadaankopen worden in eerste instantie op de balans vastgelegd (als activa) in plaats van onmiddellijk als kosten. Alleen wanneer je producten verkoopt, neem je hun kostprijs als kosten (COGS) op, waardoor inkomsten worden gematcht met de gerelateerde kosten voor een juiste winstberekening. Inkomsten uit verkopen worden vastgelegd tegen de brutoverkoopprijs, terwijl kosten afzonderlijk worden vastgelegd zodat je zowel de bruto-omzet als de betaalde kosten kunt zien (en dus de netto-omzet). Het gebruik van een clearingsrekening zoals Assets:Stripe:Balance helpt bij het reconciliëren van stortingen – geld gaat in brokken van Stripe naar je bank en je kunt die overboekingen zonder verwarring vastleggen. Een veelvoorkomende valkuil voor nieuwe winkeliers is het verwaarlozen van een correcte voorraadregistratie – bijvoorbeeld alle voorraadaankopen onmiddellijk als kosten boeken. Dat is misschien prima voor het bijhouden van de cashflow, maar het vertekent je winst: je lijkt minder winstgevend in maanden waarin je inslaat, en winstgevender in maanden waarin je verkoopt, ook al is de voorraad eerder gekocht. Door een voorraadactiefrekening en COGS te gebruiken, stem je de kosten af op de verkoop. Een andere valkuil is het niet verantwoorden van kosten of terugbetalingen, waardoor je bank- of Stripesaldi niet overeenkomen met je geregistreerde inkomsten. Dat vermijden we door kosten expliciet vast te leggen en de Stripe-activarekening te gebruiken om bij te houden wat Stripe verschuldigd is of heeft uitbetaald.
Voor het gehost bijhouden van de boeken van een klein bedrijf, met rapporten die je accountant kan lezen en een grootboek dat je op elk moment kunt exporteren, zie Beancount.io voor kleine bedrijven.
Beancount-functies om te benadrukken: Voorraadbeheer in Beancount maakt gebruik van het vermogen om commodities en kosten te verwerken. Elk product kan een commodity-symbool zijn (bijv. WIDGET), waardoor je zowel de hoeveelheid als de kostprijs per stuk kunt vastleggen. Wanneer je artikelen verkoopt, geef je aan welke kostpartij je vermindert, en Beancount put daaruit — zie voorraad- en boekingsmethoden voor het volledige overzicht. De standaard boekingsmethode is STRICT, wat vereist dat de partij ondubbelzinnig is; daarom noemt het voorbeeld deze expliciet met {10 USD}. Om Beancount de partij automatisch te laten kiezen (oudste eerst), schakel je de rekening in op FIFO bij de open-instructie: open Assets:Inventory:Widgets WIDGET "FIFO". We gebruiken in het voorbeeld de expliciete STRICT-vorm. Je kunt ook metadata of links gebruiken om verkopen en de bijbehorende COGS-boekingen aan elkaar te koppelen (bijvoorbeeld door hetzelfde ordernummer in beide transacties te gebruiken, of een gedeelde tag zoals #order1001 op de verkoop en de voorraadafname, zodat je gemakkelijk kunt opvragen of dubbelchecken dat elke verkoop een bijbehorende COGS-boeking heeft). Bovendien kunnen geautomatiseerde imports hier helpen: je zou een script kunnen gebruiken om verkoopgegevens van Shopify of Stripe-uitbetalingsrapporten te importeren, of je bankafschriften importeren om kostentransacties en uitbetalingen op te vangen. Het automatiseren van deze repetitieve gegevensinvoertaken betekent dat je meer tijd besteedt aan analyseren en minder aan het typen van cijfers.
Voorbeeld van een kleinbedrijf-grootboekfragment
Hieronder staat een beknopt Beancount-voorbeeld voor ons boetiek e-commercebedrijf. We illustreren het kopen van voorraad, het vastleggen van een verkoop (met de betalingsverwerkerskosten eruit gehaald) en het vastleggen van de kostprijs van verkochte goederen voor die verkoop. In de praktijk zou je ook andere kosten vastleggen (zoals platformkosten, advertentiekosten, enz.) op dezelfde manier als het getoonde kostenvoorbeeld. We gaan uit van USD als valuta en een product genaamd "Widget" dat we als commodity in de voorraad bijhouden.
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:Stripe:Balance
1970-01-01 open Assets:Inventory:Widgets WIDGET
1970-01-01 open Income:Sales
1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:Fees
; Purchase inventory (50 units of Widget at $10 cost each)
2025-03-10 * "Bought 50 Widgets from SupplierCo"
Assets:Inventory:Widgets 50 WIDGET {10 USD}
Assets:Bank:Checking -500 USD
; Sale to customer (Order #1001 via online store, 2 Widgets sold)
2025-04-05 * "Sale Order #1001 (2x Widget via Shopify)"
Assets:Stripe:Balance 58 USD ; net payment received after fees
Expenses:Fees 2 USD ; processing fee (Stripe)
Income:Sales -60 USD ; revenue for 2 Widgets (@ $30 each)
; Cost of goods sold for the above sale (2 Widgets at $10 cost each)
2025-04-05 * "COGS for Order #1001 (2x Widget)"
Expenses:COGS 20 USD
Assets:Inventory:Widgets -2 WIDGET {10 USD}Dit is wat er stap voor stap gebeurt:
-
Rekeningen openen: We openen de betaalrekening, de Stripe-saldo-rekening, een voorraadrekening voor Widgets (aangemeld met commodity
WIDGETom eenheden bij te houden) en de kerninkomsten- en kostenrekeningen (Sales, COGS, Fees). DoorAssets:Inventory:Widgets WIDGETte declareren, geven we aan dat deze rekening hoeveelheden van de commodity "WIDGET" zal bevatten. Dit zorgt ervoor dat Beancount weet dat er commodity-eenheden worden verwacht en dat we kosten aan die eenheden kunnen koppelen. -
Voorraadaankoop: Op 2025-03-10 kopen we voorraad – 50 eenheden Widget van een leverancier à $10 per stuk, met een totale kostprijs van $500. De transactie debiteert
Assets:Inventory:Widgetsmet50 WIDGET {10 USD}. Dit betekent dat 50 eenheden van de commodity WIDGET, elk met een geregistreerde kostprijs van 10 USD, aan de voorraadrekening worden toegevoegd. De creditering isAssets:Bank:Checking -500 USD(contante uitgave). Merk op dat we hier geen kostenrekening direct hebben aangeraakt; we activeren de aankoop als voorraadactief. Nu heeft onze balans 50 Widgets ter waarde van in totaal $500 in voorraad. (Als je een balansrapport zou uitdraaien, zou de voorraadrekening 50 WIDGET-eenheden tonen met een waarde van $500.) -
Een verkoop vastleggen (Order #1001): Op 2025-04-05 leggen we een verkoop van 2 Widgets via onze online winkel vast. De omschrijving bevat een ordernummer voor de duidelijkheid. Deze transactie omvat drie boekingen:
Assets:Stripe:Balance 58 USD: geld ontvangen uit de verkoop, maar momenteel in Stripe (na aftrek van kosten). Stel dat de klant in totaal $60 betaalde; Stripe nam $2 aan kosten, en $58 staat nu op onze Stripe-rekening (later over te maken naar onze bank). We registreren de $58 als een actief in Stripe.Expenses:Fees 2 USD: de $2 kosten worden vastgelegd als bedrijfskosten. Dit zorgt ervoor dat onze resultatenrekening die kosten weerspiegelt, en ons Stripe-actief plus de kostenpost samen gelijk zijn aan de totale klantbetaling.Income:Sales -60 USD: we registreren $60 aan inkomsten uit verkopen. (Inkomstenrekeningen nemen toe met creditboeking, vandaar het negatieve bedrag in de Beancount-notatie).
Na deze transactie is het netto-effect: Income:Sales stijgt met 60, een extra actief van $58 (te ontvangen van Stripe) en $2 kosten voor de vergoeding. Als Stripe later de $58 op onze bank stort, leggen we een eenvoudige overboeking vast zoals
Assets:Bank:Checking 58 USD / Assets:Stripe:Balance -58 USDop de datum van uitbetaling – dit verplaatst het actief van de Stripe-rekening naar de bank, zonder invloed op inkomsten of kosten (alleen het verschuiven van activa). We hebben die overboeking hierboven niet getoond, maar het is een belangrijke stap in echte boekhouding om je Stripe-rekening op $0 te houden zodra alles is overgemaakt. -
COGS voor de verkoop vastleggen: Ook op 2025-04-05 hebben we een aparte transactie om de kostprijs van de 2 verkochte Widgets vast te leggen. We debiteren
Expenses:COGS 20 USDen crediterenAssets:Inventory:Widgets -2 WIDGET {10 USD}. Dit haalt 2 eenheden uit de voorraad (elk had een kostprijs van $10 zoals eerder vastgelegd, dus $20 in totaal). We specificeren{10 USD}om Beancount te vertellen uit welke kostpartij moet worden geput – in dit geval komt het overeen met de partij die we op 2025-03-10 hebben toegevoegd. Nu zal de voorraadrekening 48 Widgets resterend hebben, met een bijbehorende kostprijs van $480. De $20 wordt verplaatst naar de COGS-kostenpost, die op de resultatenrekening verschijnt en de brutowinst vermindert met de kostprijs van die goederen. (Als we dit niet vastlegden, zouden onze inkomsten te hoog worden weergegeven ten opzichte van de kosten.) We gebruiken een aparte transactie voor de duidelijkheid, maar het is ook mogelijk om de verkoop en COGS in één transactie met meerdere regels te combineren. Sommigen geven er de voorkeur aan ze te splitsen zoals getoond voor leesbaarheid en reconciliatie (je kunt elke COGS-boeking duidelijk aan een order koppelen). We hebben ook het ordernummer in de omschrijving herhaald om gemakkelijk te kunnen zien dat deze COGS-boeking overeenkomt met Order #1001. Een goede praktijk is om ervoor te zorgen dat elke verkoop een bijbehorende COGS-boeking heeft wanneer voorraad in het spel is – het ontbreken van één betekent dat je voorraadtellingen niet kloppen. Een valkuil om te vermijden is vergeten de voorraad voor een verkoop af te boeken, waardoor je balans spookvoorraad bevat en je kosten te laag worden weergegeven. Het gebruik van Beancount's voorraadfuncties (de{}-kostnotatie) helpt om te signaleren als je meer eenheden probeert af te boeken dan je op voorraad hebt (de software geeft in dat geval een foutmelding).
Samenvatting: Een klein bedrijf dat Beancount gebruikt, kan een verrassend robuust boekhoudsysteem onderhouden. Door rekeningen te structureren om bij te houden waar geld is, waar het vandaan komt en hoe kosten stromen, krijg je een nauwkeurig beeld van de winstgevendheid. Ons voorbeeld toonde hoe je voorraad en verkopen verwerkt; op dezelfde manier zou je andere transacties vastleggen, zoals het betalen van een internetrekening (Expenses:Operating:Internet versus Assets:Bank:Checking), het ontvangen van een lening of investering (Assets:Bank versus Liabilities:Loan of Equity:OwnerEquity), of het betalen van omzetbelasting (Liabilities:SalesTax versus Assets:Bank bij afdracht). De sleutel is consistentie: leg elk type transactie volgens hetzelfde patroon vast, en Beancount houdt de boeken in balans. Met functies zoals geautomatiseerde gegevensimport (bijvoorbeeld het binnenhalen van maandelijkse Stripe-kosten of banktransacties) en aangepaste tags/links (om gerelateerde transacties zoals verkopen en terugbetalingen te correleren), kan het systeem zowel flexibel als efficiënt zijn. Het resultaat is een georganiseerd grootboek dat kan meegroeien met het bedrijf – je kunt nieuwe productvoorraadrekeningen, nieuwe kostenposten of extra inkomstenstromen toevoegen (bijvoorbeeld een nieuwe online marktplaats) zonder het hele systeem te herwerken.
Persoonlijke Financiën
Ten slotte bekijken we het gebruik van Beancount voor persoonlijke of huishoudfinanciën. Deze opzet is voor een individu of gezin dat dagelijkse uitgaven, bankrekeningen, creditcards, leningen en beleggingen beheert. De nadruk ligt hier op het bijhouden van waar je geld naartoe gaat (uitgaven), waar het vandaan komt (inkomsten) en hoe het wordt gespaard of belegd (activa en verplichtingen). Beancount kan budgetteringsapps vervangen of aanvullen door een transparant en aanpasbaar beeld van je financiën te bieden, met de nauwkeurigheid van dubbel boekhouden die ervoor zorgt dat niets dubbel wordt geteld of vergeten.
Belangrijke rekeningen voor persoonlijke financiën: Een grootboek voor persoonlijke financiën bevat doorgaans een verscheidenheid aan activa-, verplichtingen-, inkomsten- en kostenrekeningen:
- Assets:Bank:Checking – Je belangrijkste betaalrekening voor inkomstenstortingen en rekeningbetalingen.
- Assets:Bank:Savings – Spaarrekening voor een noodfonds of specifieke doelen. (Je kunt meerdere spaar- of beleggingsrekeningen hebben – elk kan een activarekening zijn).
- Assets:Cash – Als je contant geld gebruikt voor uitgaven, kun je een kasrekening hebben om opnames en contante uitgaven bij te houden.
- Assets:Investments:Broker – Beleggingsrekeningen, zoals een brokerage, pensioen 401(k)/IRA, enz. Deze kunnen verder worden opgesplitst naar beleggingstypes of gewoon als één rekening per instelling worden gegroepeerd. Bijvoorbeeld
Assets:Investments:VanguardIRAofAssets:Investments:Robinhood. Het bijhouden van beleggingen kan ook commodities voor aandelen of fondsen omvatten, maar als dit te gedetailleerd is, kun je eenvoudig bijdragen en rekeningbalansen bijhouden. - Liabilities:CreditCard:Naam – Eén rekening per creditcard (bijv.
Liabilities:CreditCard:Visaof op banknaam). Alle aankopen op de kaart worden hier vastgelegd (met een gelijke kostenpost), en betalingen aan de kaart zijn overboekingen die deze verplichting verminderen. - Liabilities:Loan:Naam – Alle leningen (studielening, hypotheek, autolening) kunnen met een verplichtingsrekening worden bijgehouden. Je legt het hoofdsombedrag vast en bij elke betaling splits je rente (kosten) en hoofdsom (vermindering van verplichting). Dit is een geavanceerd aspect, maar belangrijk voor een volledig financieel beeld.
- Income:Salary (en/of Income:Bonus, Income:Interest, enz.) – Om salarissen, bonussen, rente-inkomsten, dividenden, enz. vast te leggen. Inkomstenrekeningen laten je je totale verdiensten uit verschillende bronnen zien. (Als je salaris al belastingen inhoudt, kun je de netto storting op de betaalrekening als inkomen vastleggen, of bruto en belastinginhoudingen als kosten of verplichting vastleggen – er bestaan verschillende benaderingen, maar velen leggen eenvoudigweg het nettoloon als inkomen vast voor de eenvoud in persoonlijke boeken.)
- Expenses: Doorgaans talrijk, verdeeld in categorieën die voor jou betekenisvol zijn. Bijvoorbeeld: Expenses:Housing:Rent, Expenses:Food:Groceries, Expenses:Food:DiningOut, Expenses:Utilities:Electricity, Expenses:Entertainment, Expenses:Travel, Expenses:Taxes, Expenses:Misc – welke categorieën je uitgavenpatroon ook weerspiegelen. Je kunt zo gedetailleerd of algemeen zijn als je wilt. De rekeninghiërarchie helpt bij het aggregeren (bijv.
Expenses:Foodtelt zowel boodschappen als uit eten gaan op). Gebruikelijke praktijk is een hiërarchie voor hoofdcategorieën (Housing, Food, Transportation, Healthcare, enz.). - Equity:Opening-Balances – Wordt gebruikt om rekeningbalansen te initialiseren wanneer je je grootboek start (zodat alle activa minus verplichtingen gelijk zijn aan je startvermogen dat in eigen vermogen wordt vastgelegd). Na de start kun je ook Equity:Retained-Earnings of vergelijkbaar gebruiken om opgebouwde nettowinst weer te geven (hoewel je in persoonlijke financiën doorgaans gewoon inkomsten minus uitgaven in het nettovermogen laat doorrollen). Eigen vermogen-rekeningen zijn minder zichtbaar in het dagelijks gebruik, maar zorgen ervoor dat de boekhoudkundige vergelijking in balans blijft.
Beweegreden: De opzet voor persoonlijke financiën draait om het vastleggen van je financiële leven in één samenhangend systeem. Elke bovenstaande rekening dient om verschillende soorten financiën te scheiden, zodat je vragen kunt beantwoorden zoals "Hoeveel heb ik deze maand aan eten uitgegeven?" (door Expenses:Food:* op te tellen), "Hoeveel schuld heb ik nog?" (door naar verplichtingsrekeningen te kijken), of "Wat is mijn nettovermogen?" (activa minus verplichtingen). Een groot voordeel van dubbel boekhouden hier is nauwkeurigheid: wanneer je bijvoorbeeld een boodschappenrekening van $100 op je creditcard zet, leg je het vast als een uitgave en een toename van de verplichting. Later, wanneer je de creditcard betaalt, leg je een overboeking vast van je bank naar de kaart – dit betaalt de verplichting af, maar telt de boodschappenkosten niet dubbel (die al eerder zijn vastgelegd). Een veelvoorkomende valkuil zonder dubbel boekhouden is de creditcardbetaling zelf als een uitgave behandelen, waardoor de $100 effectief twee keer wordt geteld. Beancount voorkomt dat door zijn ontwerp. Een andere valkuil om te vermijden is het nalaten van rekeningreconciliatie: met Beancount kun je balansasserties of de balance-instructie gebruiken om er bijvoorbeeld voor te zorgen dat je betaalrekeningbalans in het grootboek overeenkomt met het werkelijke bankafschrift. Dit vangt ontbrekende of dubbele boekingen op.
Beancount-functies om te benadrukken: Voor persoonlijke financiën zijn geautomatiseerde imports bijzonder nuttig vanwege het volume aan transacties. Je kunt Beancount's importeurframework of community-scripts gebruiken om banktransacties, creditcardafschriften en zelfs beleggingstransacties te importeren uit CSV, OFX of API-bronnen. Dit betekent dat je minder tijd besteedt aan het handmatig intypen van elke koffieaankoop. Aangepaste tags zijn nuttig om gegevens te filteren op manieren die rekeningen misschien niet bieden. Tag bijvoorbeeld alle vakantiegerelateerde uitgaven met #vacation2025, ongeacht of het vluchten, hotels of restaurants zijn – dan kun je de totale kosten van die vakantie gemakkelijk opvragen. Of tag bepaalde uitgaven als #deductible als je fiscaal aftrekbare items wilt bijhouden voor later gebruik. Je kunt ook terugkerende rekeningen taggen (bijv. #monthly) om al je abonnementen en vaste kosten jaarlijks te herzien. Metadata kan worden gebruikt om notities of bonnetjes toe te voegen (bijvoorbeeld receipt: "pad/naar/bestand.jpg" om aan te geven dat je een opgeslagen bonafbeelding hebt, of category: "Work Expense" als je vergoedbare items bijhoudt). De flexibiliteit van tags en metadata betekent dat je het systeem kunt aanpassen aan je persoonlijke trackingbehoeften zonder tientallen extra rekeningen aan te maken.
Laat de bankexport van vorige maand door de CSV naar Beancount-converter lopen, of een .ofx-, .qfx- of .qif-download door OFX & QIF naar Beancount. Voor de meeste persoonlijke grootboeken is dat voldoende, en het laat je de vorm van de boeking zien die een aangepaste importeur zou moeten produceren.
Voorbeeld van een persoonlijk financieel grootboekfragment
Hieronder staat een voorbeeldfragment van een persoonlijk Beancount-grootboek met een paar typische transacties: een dagelijkse uitgave die op een creditcard wordt gezet, een terugkerende rekening betaald van de betaalrekening en een bijdrage aan een pensioenbeleggingsrekening. (Voor de beknoptheid gaan we ervan uit dat een initiële opzet is gedaan om rekeningen te openen en eventuele salarisinkomsten vast te leggen; hier richten we ons op de uitgaven- en spaarzijde.)
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Liabilities:CreditCard:Visa
1970-01-01 open Expenses:Food:Coffee
1970-01-01 open Expenses:Housing:Rent
1970-01-01 open Assets:Investment:401k
; Daily spending example (coffee on a credit card)
2025-09-10 * "Starbucks Coffee" #daily
Expenses:Food:Coffee 5.50 USD
Liabilities:CreditCard:Visa -5.50 USD
; Recurring monthly bill (rent paid from checking)
2025-09-01 * "Apartment Rent September" #recurring
Expenses:Housing:Rent 1200 USD
Assets:Bank:Checking -1200 USD
; Retirement contribution (transfer from checking to 401k investment)
2025-09-15 * "401(k) Contribution" #retirement
Assets:Investment:401k 500 USD
Assets:Bank:Checking -500 USDLaten we deze transacties interpreteren:
- Rekeningen openen: We openen de betaalrekening, een Visa-creditcardrekening, een koffiekostenrekening (als voorbeeld van een subcategorie van voedseluitgaven), een huurkostenrekening en een 401k-beleggingsrekening. In een echt grootboek zou je alle rekeningen openen die je van plan bent te gebruiken (spaargeld, andere kostenposten, inkomsten, enz.). We beperken ons tot wat nodig is voor het fragment.
- Dagelijkse uitgave – koffie: Op 2025-09-10 wordt een koffieaankoop van $5,50 vastgelegd. De uitgave wordt gecategoriseerd onder
Expenses:Food:Coffee, en omdat het met een Visa-creditcard is betaald, crediteren we (verhogen we)Liabilities:CreditCard:Visa. De tag#dailyis toegevoegd om aan te geven dat dit een dagelijkse uitgave was – misschien wil je later alle dagelijkse discretionaire uitgaven filteren. Merk op dat de creditcardrekening hierna een saldo van $5,50 zal tonen (wat betekent dat je $5,50 aan Visa verschuldigd bent). Als je contant voor deze koffie had betaald, zou de transactie in plaats daarvanAssets:Cashcrediteren (waardoor het contante geld dat je op voorraad hebt afneemt). Als het een pinbetaling was, zou hetAssets:Bank:Checkingcrediteren. De mechanica is vergelijkbaar, alleen andere rekeningen. - Terugkerende rekening – huur: Op 2025-09-01 leggen we de betaling van de maandelijkse huur van $1200 vast. Dit komt uit de betaalrekening (creditering van
Assets:Bank:Checking) en wordt gecategoriseerd alsExpenses:Housing:Rent. We hebben het getagd als#recurringom aan te geven dat dit een terugkerende rekening is. In een volledig grootboek zou je elke maand precies zo'n boeking hebben. (Beancount heeft geen ingebouwde automatische terugkerende transactiefunctie, maar je kunt het bereiken met scripts of gewoon elke maand kopiëren en plakken. Tags helpen om later te controleren of je geen maand hebt gemist of om de huur van een jaar snel op te tellen.) Sommige gebruikers gebruiken de periodieke transactie-functie via het Beancount-importeurframework om deze automatisch te genereren, maar dat is een geavanceerd gebruik dat buiten het bereik van dit artikel valt. Het belangrijkste is dat deze transactie duidelijk laat zien waar je geld naartoe ging – een uitgave voor huisvesting – en je verlaagde banksaldo. Een valkuil om op te letten: als je kosten deelt of huisgenoten hebt, betaal je misschien slechts een deel van de huur; in dat geval kun je de transactie splitsen in jouw deel en het deel dat iemand anders betaalt (mogelijk door het andere deel vast te leggen alsIncome:Reimbursementsals ze jou betalen). In ons eenvoudige geval betalen we het volledige bedrag. - Pensioenbijdrage: Op 2025-09-15 wordt $500 overgemaakt van de betaalrekening naar een 401(k)-beleggingsrekening. Dit is geen uitgave, maar eerder het overdragen van activa van de ene vorm (contanten) naar de andere (pensioenfonds). De transactie debiteert
Assets:Investment:401ken crediteertAssets:Bank:Checking. We taggen het als#retirementvoor de duidelijkheid. Hierna daalt je betaalrekeningbalans met 500, en je 401k-rekeningbalans in het grootboek stijgt met wat 500 USD vertegenwoordigt (afhankelijk van hoe je beleggingen bijhoudt, koop je daarna mogelijk fondseenheden met dat geld – dat zou een andere transactie in de beleggingsrekening zijn, bijvoorbeeld het kopen van X aandelen van een fonds tegen prijs Y, waarbij het geld uit het 401k-actief gaat). In een eenvoudig persoonlijk grootboek kun je de 401k gewoon behandelen als een spaarrekening en de balans periodiek bijwerken, of bijdragen zoals deze vastleggen en misschien prijsopgaven gebruiken voor groei. Het belangrijkste is dat deze transactie een overboeking is, geen uitgave – het bouwt je activa op. Veel budgetteringstools zouden pensioenbijdragen als "uitgaven" tellen (omdat het je betaalrekening verlaat), maar in boekhoudkundige termen is het gewoon geld naar een andere zak verplaatsen. Dit onderscheid helpt je om spaarquote versus uitgaven te begrijpen.
Voor beleggingen die als eenheden van ondersteunde effecten worden vastgelegd, kan Live Prices waarderingskoersen in een gehost grootboek bijhouden. Een saldo in contanten voor pensioen kan geen marktwaarden van effecten uit een feed krijgen; leg de werkelijke posities vast en houd hun aankoopkosten expliciet bij.
Als we een transactie hadden voor het betalen van de creditcardrekening, zou die eruitzien als het overmaken van geld van Checking naar de CreditCard-verplichting (bijv. Liabilities:CreditCard:Visa 100 USD / Assets:Bank:Checking -100 USD). Dat zou het creditcardsaldo weer verlagen (misschien tot nul als je het volledig hebt betaald) en je banksaldo dienovereenkomstig verminderen, zonder effect op kostenrekeningen – omdat je de uitgaven al hebt vastgelegd op het moment van aankoop. Onthouden om creditcards op deze manier te behandelen is cruciaal voor nauwkeurige tracking van persoonlijke financiën. Je zou de betaling ook kunnen taggen (sommigen gebruiken #cc-payment of vergelijkbaar) of de afschriftperiode in de omschrijving opnemen voor de duidelijkheid.
Samenvatting: Een grootboek voor persoonlijke financiën in Beancount helpt discipline en structuur aan te brengen in je geldtracking. Door transacties te categoriseren met rekeningen (en optioneel tags), kun je inzichtelijke rapporten produceren: maandelijkse uitgaven per categorie, jaartotalen, hoeveel je hebt gespaard, enzovoort. De dubbel-boekhoudbenadering betekent dat elke euro verantwoord is: als het saldo van een rekening daalt, is het ergens naartoe gegaan (een andere rekening stijgt). Dit vangt fouten op en voorkomt het veelvoorkomende "verdwenen geld"-probleem in eenvoudigere trackingtools. Met automatisering kun je de meeste transacties importeren en ze vervolgens alleen beoordelen en classificeren, waardoor het onderhoud heel haalbaar wordt. Na verloop van tijd bouw je een uitgebreid financieel dagboek op – het kan zelfs omgaan met dingen zoals rekeningen splitsen met vrienden (met behulp van eigen vermogen-rekeningen of te betalen/te ontvangen rekeningen), het volgen van leningamortisatie of beleggingsprestaties, als je ervoor kiest om je daarin te verdiepen. Zelfs in de meest basale vorm (zoals getoond in het fragment) geeft Beancount je duidelijkheid over dagelijkse uitgaven, terugkerende verplichtingen en voortgang naar langetermijndoelen (zoals pensioensparen). En omdat het platte tekst is, heb je volledige controle: je kunt het scripten, opvragen of integreren met andere tools (zoals de webinterface Fava voor een vriendelijke weergave). Kortom, deze opzet verandert je persoonlijke financiën in gegevens die je kunt analyseren en vertrouwen, terwijl het eenvoudig genoeg blijft om geen klus te zijn.
Door je Beancount-grootboek af te stemmen op je situatie – of je nu freelancer bent, een klein bedrijf runt of persoonlijke financiën beheert – profiteer je van een systematische, dubbel-boekhoud-benadering van financiële tracking met de flexibiliteit van een platte-tekstsysteem. Deze voorbeeldconfiguraties demonstreren kernpatronen waarop je kunt voortbouwen. Naarmate je bedrijf groeit of je financiële leven complexer wordt, kun je het rekeningschema uitbreiden of geavanceerde functies gebruiken (zoals budgetten, variantieanalyse of multi-valutaverwerking) wanneer nodig. De sleutel is om te beginnen met een schone, logische structuur (zoals de getoonde) en transacties consistent vast te leggen. Met dat op zijn plaats zal Beancount een krachtige bondgenoot zijn bij het begrijpen en beheren van je financiën, in alle sectoren en persoonlijke scenario's. Veel boekhoudplezier!