Ga naar hoofdinhoud

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:

NameTypeTypische inhoudVoorbeeld
Assets+Contant geld, Bank, InvesteringenAssets:Checking
Liabilities-Creditcards, LeningenLiabilities:CreditCard
Income-Salaris, RenteIncome:EmployerA
Expenses+Aankopen, RekeningenExpenses:Food:Dining
Equity-Openings-/SluitingsbalansenEquity: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