Beancount Taalsyntaxis
Dit biedt een beknopte maar uitgebreide referentie voor de Beancount taalsyntaxis, waarin praktische structuur, regels en voorbeelden worden gecombineerd. Zie de Cheat Sheet voor meer details.
Overzicht
Beancount is een plain-text double-entry accounting systeem. De taal is gestructureerd rond drie hoofdbouwstenen:
- Goederen (valuta's, aandelen, punten, etc.)
- Accounts (hiërarchische, gecategoriseerde grootboeken)
- Directieven (gedateerde vermeldingen die gebeurtenissen of configuratie registreren)
Goederen
Goederen worden altijd in hoofdletters geschreven, bijvoorbeeld USD, EUR, AAPL, BTC, MILES, HOURS.
Accounts
Accounts zijn door dubbele punten gescheiden, gekapitaliseerde hiërarchische namen. Ze moeten beginnen met een van de vijf root accounttypen:
| Name | Type | Typische inhoud | Voorbeeld |
|---|---|---|---|
Assets | + | Contant geld, Bank, Investeringen | Assets:Checking |
Liabilities | - | Creditcards, Leningen | Liabilities:CreditCard |
Income | - | Salaris, Rente | Income:EmployerA |
Expenses | + | Aankopen, Rekeningen | Expenses:Food:Dining |
Equity | - | Openings-/Sluitingsbalansen | Equity:Opening-Balances |
- Componenten moeten worden gekapitaliseerd, gescheiden door dubbele punten (
:), zonder spaties. - Cijfers en streepjes zijn toegestaan in componenten.
- De root accountnamen kunnen worden aangepast via opties (zie hieronder).
Directieven
Directieven zijn de kernstatements in een Beancount bestand. De meeste beginnen met een datum, gevolgd door een directieftype en argumenten. Ze worden verwerkt in chronologische volgorde (op datum), niet in bestandsvolgorde.
Algemene indeling:
JJJJ-MM-DD <directief> <argumenten...>
Algemene Directieven & Voorbeelden
Openen en Sluiten van Accounts
2023-01-01 open Assets:Checking USD,EUR ; Optioneel toegestane valuta's specificeren
2023-12-31 close Assets:Checking
Declaren van Goederen
2020-07-22 commodity AAPL
name: "Apple Inc."
Prijsverklaringen
2022-04-30 price AAPL 150.00 USD
Notities & Documenten
2022-03-20 note Assets:Checking "Gevraagd naar terugbetaling"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"
Transacties
2024-01-05 * "Coffee Shop" "Koffie in de ochtend"
Expenses:Food 4.50 USD
Assets:Cash -4.50 USD
2024-01-06 ! "Telefoonrekening" "Maandelijkse betaling" #utilities ^phone
id: "INV12345" ; Metadata
Expenses:Utilities 60.00 USD
Assets:Checking
Boekingsfuncties
; Met kostprijs
Assets:Stocks 1 AAPL {150.00 USD}
; Met prijsannotatie
Assets:Cash -100 USD @ 1.25 CAD
; Met totale prijs
Assets:Cash -100 USD @@ 125.00 CAD
; Impliciet saldo
Assets:Cash -100 USD
Assets:Bank
Saldo Asserties & Opvulling
2024-06-01 balance Assets:Checking 1000.00 USD
2024-06-01 pad Assets:Checking Equity:Opening-Balances
Gebeurtenissen
2024-06-01 event "location" "San Francisco, CA"
Opties
Bestandsbrede configuratie instellen:
option "title" "Mijn Grootboek"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"
Zie de Opties Referentie voor meer.
Plugins & Bestandsorganisatie
plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #project
Belangrijke Regels
- Alle transacties moeten in evenwicht zijn (som van alle boekingen is nul; kostprijs wordt gebruikt indien aanwezig).
- Accounts moeten worden geopend voor gebruik; gesloten accounts kunnen geen boekingen accepteren.
- Saldo-assertions controleren alleen de opgegeven valuta en kunnen worden gebruikt op bovenliggende accounts.
- Prijsannotaties (
@) zijn informatief en hebben geen invloed op het balanceren.
Algemene Patronen
Openen van Accounts met Initieel Saldo
2024-01-01 open Assets:Checking USD
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-01 balance Assets:Checking 1000.00 USD
Investeringstransactie
2024-01-01 * "Aandelen kopen"
Assets:Broker:Stock 10 AAPL {150.00 USD}
Assets:Broker:Cash -1500.00 USD
Multi-Valuta Transactie
2024-01-01 * "Valutawissel"
Assets:USD -100.00 USD @ 1.25 CAD
Assets:CAD 125.00 CAD
Opmerkingen
poptag #trip-to-peru
; inline opmerkingen beginnen met een puntkomma
* elke regel die niet begint met een geldige directief wordt ook stilzwijgend genegeerd