Crediteuren (AP) is het geld dat uw bedrijf verschuldigd is aan leveranciers voor goederen of diensten die u al heeft ontvangen maar nog niet heeft betaald. In de boekhoudwereld wordt crediteuren geclassificeerd als een kortlopende schuld op uw balans—een bedrag dat doorgaans binnen het komende jaar moet worden betaald, en vaak binnen 30 tot 60 dagen.
Dit concept staat centraal in accrual accounting, waarbij u de kosten en de bijbehorende schuld boekt op het moment dat een factuur binnenkomt, niet wanneer u daadwerkelijk het geld verstuurt. Deze gids laat zien hoe u de volledige crediteuren-workflow schoon en efficiënt beheert met het plain-text boekhoudprogramma Beancount.
Korte samenvatting
Voordat we in de details duiken, behandelen we eerst de essentie:
- Crediteuren (AP) vertegenwoordigt uw kortlopende schulden aan leveranciers. U vindt dit onder de sectie
Liabilities(schulden) van uw balans. - Accrual vs. Kas: Crediteuren is een concept dat alleen bestaat als u uw boeken op accrualbasis bijhoudt. Beancount ondersteunt accrual-workflows volledig, en de webinterface, Fava, toont uw schulden correct.
- Crediteuren vs. debiteuren: Het is eenvoudig: crediteuren zijn wat u verschuldigd bent, terwijl debiteuren (AR) zijn wat anderen aan u verschuldigd zijn.
Waar crediteuren zich bevindt in Beancount (en Fava)
Om crediteuren te gaan bijhouden, moet u eerst een rekening ervoor aanmaken in uw grootboek. Een standaardconventie is:
Liabilities:AccountsPayable
U kunt optioneel subrekeningen aanmaken voor grote leveranciers (bijv. Liabilities:AccountsPayable:ForestPaintSupply).
In Fava verschijnt deze rekening op uw Balans onder Liabilities. U kunt erop klikken om in te zoomen en de posteringen te zien waaruit het saldo bestaat. U kunt dit zelfs in actie zien in Fava's publieke voorbeeldgrootboek, dat een Liabilities:AccountsPayable-rekening bevat.
Tekentekenconventie: Beancount slaat schuldsaldi op als credits (negatieve getallen). Een saldo van -500.00 USD op Liabilities:AccountsPayable betekent dat u $500 verschuldigd bent. Het open-postenrapport hieronder draait het teken om met -SUM(number) zodat elke onbetaalde factuur een positief openstaand bedrag toont. Een volledig betaalde factuur sommeert naar nul en wordt uitgesloten door HAVING.
Beancount-bouwstenen die u zult gebruiken
Een robuuste crediteuren-workflow in Beancount vertrouwt op een paar kernfuncties:
- Rekeningen: U gebruikt voornamelijk uw
Liabilities:AccountsPayable-rekening, een kasrekening zoalsAssets:Bank:Checking, en uw diverse kostenrekeningen (bijv.Expenses:Supplies). - Metadata: U kunt sleutel-waardeparen aan elke transactie koppelen. Voor crediteuren gebruikt u metadata zoals
invoice:,due:,terms:, endocument:. Steloption "documents"in op een map zodat Beancount daar bestanden kan ontdekken; in Fava voegt het slepen van een bestand naar een journaalrij eendocument:-metadata-invoer toe, en het inschakelen vanplugin "fava.plugins.link_documents"koppelt die invoeren aan gevonden Document-directieven. - Tags & links: Gebruik
#tags(zoals#ap) voor eenvoudig filteren en^links(zoals^INV-10455) om een factuur en de daaropvolgende betaling programmatisch aan elkaar te koppelen. Dit creëert een duidelijk, controleerbaar spoor in het journaal—maar links alleen zijn niet voldoende voor de open-factuurquery hieronder. - Query's (BQL): Beancounts SQL-achtige querytaal (BQL) stelt u in staat krachtige rapporten uit te voeren, zoals het weergeven van alle openstaande crediteuren gesorteerd op vervaldatum, rechtstreeks vanaf de opdrachtregel met
bean-queryof op Fava's "Query"-pagina.
Factuuridentiteit (vereist voor open-factuurquery's): Elke factuur en elke betaling die deze voldoet—volledig, gedeeltelijk, of met vroegbetalingskorting—moet de zelfde invoice:- en due:-transactiemetadata dragen, plus dezelfde ^link. De query groepeert op payee, any_meta('invoice'), en any_meta('due'). Als een betaling deze sleutels weglaat, komt de AP-posteerin terecht in een aparte (payee, null, null)-groep en ziet een betaalde factuur er nog steeds open uit. Houd (payee, invoice) uniek over leveranciers. Optionele factuur-specifieke velden zoals terms: en document: hoeven niet herhaald te worden op betalingen.
Kern-crediteurenworkflow in Beancount
Het beheren van crediteuren in uw grootboek omvat twee of drie belangrijke stappen: het boeken van de factuur, het betalen ervan, en soms het afhandelen van gedeeltelijke betalingen of kortingen.
1) Boek de leveranciersfactuur (dit creëert de schuld)
Eerst boekt u de kosten en creëert u de crediteur wanneer de factuur binnenkomt.
; Optionally set your documents folder in your main Beancount file:
option "documents" "documents"
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
terms: "2/10, n/30"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USDDeze enkele invoer doet twee cruciale dingen:
- Het herkent onmiddellijk de $500 kosten in de juiste periode (augustus)—eenmalig. Boek de kosten niet opnieuw bij de betaling.
- Het crediteert AP met $500 (
-500.00 USD), waarmee wordt vastgelegd dat u Forest Paint Supply dat bedrag verschuldigd bent.
De ^INV-10455-link plus de invoice: / due:-metadata vormen de identiteit van de factuur. Elke latere betaling van deze factuur moet alle drie hergebruiken.
2) Betaal de factuur (dit wist de schuld)
Wanneer u de factuur betaalt, maakt u een transactie die geld van uw bankrekening verplaatst om de schuld te voldoen. Kopieer invoice: en due: van de factuur naar de betaling, zodat beide posteren dezelfde querygroep delen.
a) Standaardbetaling (geen korting):
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDDeze invoer verlaagt uw AP-saldo met $500 en uw betaalrekening met hetzelfde bedrag. De schuld voor deze factuur is nu voldaan (de AP-som van de groep is nul). De kosten blijven op de augustusfactuur staan—de betaling raakt Expenses: niet.
b) Vroegbetalingskorting (bijv. "2/10, n/30")—kies precies één methode:
Als de voorwaarden "2/10, n/30" zijn, kunt u 2% korting nemen als u binnen 10 dagen betaalt. Voor onze $500-factuur is dat een $10-korting. Het hek hieronder toont twee wederzijds exclusieve alternatieven: Optie 1 is actief; Optie 2 is volledig uitgecommentarieerd zodat een plakken niet beide boekt. Om Optie 2 te gebruiken in plaats daarvan, commentarieert u Optie 1 uit en Optie 2 in. Laat nooit beide actief—dat wist AP twee keer en verzint een tweede $10-voordeel. Welke inkomsten- vs. kostenrekening u gebruikt, is een boekhoudbeleidskeuze voor uw boeken; Beancount vereist niet de een boven de ander.
; Pick EXACTLY ONE of the two transactions below for a given invoice.
; Do not paste both into the same ledger — that clears AP twice.
; Option 1: Record the discount as other income
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Income:Discounts:Payables -10.00 USD
; Option 2: Reduce the original expense directly
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Expenses:Supplies:Paint -10.00 USDIn elk alternatief afzonderlijk wist u de volledige $500-schuld, verlaagt u uw banksaldo met de $490 die u daadwerkelijk betaalde, en boekt u het $10-voordeel. Vervang de standaard volledige betalingstransactie door het gekozen alternatief—stapel geen kortingsbetaling bovenop de $500-kasbetaling, en combineer dit hek niet met sectie 2a voor dezelfde factuur.
3) Gedeeltelijke betalingen afhandelen
Hergebruik dezelfde invoice: / due: / ^link-identiteit op elke termijn, zodat elke betaling dezelfde open-factuurgroep vermindert.
; Invoice for $1,200
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Expenses:Parts 1200.00 USD
Liabilities:AccountsPayable -1200.00 USD
; First payment of $400
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
; Final payment of $800
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USDNa de eerste betaling is de AP-som van de factuurgroep -800.00 USD (u bent nog $800 verschuldigd). Na de laatste betaling is die nul. Het filteren van het journaal op ^INV-9001 toont nog steeds de volledige geschiedenis.
Handige query's (BQL)
U kunt deze query's uitvoeren in Fava's "Query"-tabblad of vanaf de opdrachtregel met bean-query (BQL-referentie). Geverifieerd hieronder met Beancount 3.2.3 en beanquery 0.2.0.
Tip: De functie
any_meta()zoekt eerst een metadatasleutel op de postering en valt dan terug op de transactie—dus waarden vaninvoice:/due:op transactieniveau verschijnen in de resultatenset.
Openstaande crediteuren per leverancier (saldoweergave):
Deze query sommeert de schuldvoorraad per leverancier. Een credit (negatief) totaal is wat u die leverancier nog verschuldigd bent.
SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;Openstaande facturen per vaste datum (open-postenrapport):
Een open-postenrapport beantwoordt de vraag "wat blijft onbetaald?" Het moet (1) afsluiten op een expliciete as-of-datum zodat latere betalingen een eerder momentopname niet stil kunnen wissen, (2) groeperen op de gedeelde factuuridentiteit (payee + invoice: + due:), (3) settled (nul) groepen uitsluiten, en (4) een positief openstaand bedrag tonen—niet een ruw ondertekend AP-credit.
Rapportagedatum die overal hieronder wordt gebruikt: 2025-09-04.
Downloadbare AP-startergrootboek
Download accounts-payable-starter.bean — één zelfstandig grootboek gegenereerd uit het volledige hek hieronder (rekeningopeningen, fictief openingsgeld, betaalde / gedeeltelijke / onbetaalde facturen, as-of 2025-09-04). Elke naam en elk bedrag is fictieve voorbeelddata. Geen factuur-PDF, documentenmap of ander bestand is vereist om het te valideren of te bevragen.
Eerste uitvoering vanuit een schone tijdelijke map (vastgepinde Beancount 3.2.3 / beanquery 0.2.0):
# Save the download as accounts-payable-starter.bean in this directory, then:
uvx --from beancount==3.2.3 bean-check accounts-payable-starter.bean
uvx --from beanquery==0.2.0 --with beancount==3.2.3 bean-query accounts-payable-starter.bean \
"SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"bean-check eindigt met exitcode 0 en geen uitvoer. De query retourneert de vijf open rijen in de verwachte tabel hieronder (Forest afwezig; Acme openstaand 800.00; som van positief openstaand = 1500.00). Genereer de vastgelegde download opnieuw met yarn generate:ap-starter na het bewerken van het hek; yarn generate:ap-starter --check faalt als het artefact verouderd is.
Plak dit complete armatuur (opens + openingsgeld + de drie factuurvormen, plus vandaag-vervallen / achterstallige / randgeval-rijen voor veroudering). Vroegbetalingskortingsalternatieven voor INV-10455 blijven volledig uitgecommentarieerd—activeer precies één alleen als u de standaard Forest-betaling vervangt; laat nooit beide kortingsopties actief naast die betaling.
; accounts-payable-starter — complete runnable AP workflow
option "operating_currency" "USD"
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Equity:Opening-Balances USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
2025-01-01 open Expenses:Parts USD
2025-01-01 open Expenses:Office USD
2025-01-01 open Income:Discounts:Payables USD
; Fictional opening cash — enough to cover every payment in this ledger
2025-01-01 * "Opening balance"
Assets:Bank:Checking 5000.00 USD
Equity:Opening-Balances -5000.00 USD
; Settled before as-of — must disappear from the open report
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD
; Early-payment discount alternatives for INV-10455 — mutually exclusive with
; the standard payment above AND with each other. To take 2/10 instead: delete
; (or comment out) the 2025-09-01 payment, then uncomment EXACTLY ONE option.
; Never leave both options active — that clears AP twice.
;
; Option 1: Record the discount as other income
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Income:Discounts:Payables -10.00 USD
;
; Option 2: Reduce the original expense directly
; 2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
; invoice: "INV-10455"
; due: "2025-09-04"
; Liabilities:AccountsPayable 500.00 USD
; Assets:Bank:Checking -490.00 USD
; Expenses:Supplies:Paint -10.00 USD
; Partial before as-of; final $800 payment is AFTER 2025-09-04
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Expenses:Parts 1200.00 USD
Liabilities:AccountsPayable -1200.00 USD
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD
; Unpaid — not yet due as of 2025-09-04
2025-08-15 * "Bright Office Co" "INV-220" ^INV-220
invoice: "INV-220"
due: "2025-09-14"
Expenses:Office 300.00 USD
Liabilities:AccountsPayable -300.00 USD
; Unpaid — due today (as-of == due)
2025-08-20 * "Helix Industries" "INV-440" ^INV-440
invoice: "INV-440"
due: "2025-09-04"
Expenses:Parts 200.00 USD
Liabilities:AccountsPayable -200.00 USD
; Unpaid — 30 days overdue as of 2025-09-04
2025-07-06 * "Metro Hardware" "INV-77" ^INV-77
invoice: "INV-77"
due: "2025-08-05"
Expenses:Parts 150.00 USD
Liabilities:AccountsPayable -150.00 USD
; Overpayment — credit balance (not an amount due; see edge cases)
2025-08-01 * "Credit Vendor" "INV-C1" ^INV-C1
invoice: "INV-C1"
due: "2025-08-20"
Expenses:Parts 100.00 USD
Liabilities:AccountsPayable -100.00 USD
2025-08-18 * "Credit Vendor" "Overpay INV-C1" ^INV-C1
invoice: "INV-C1"
due: "2025-08-20"
Liabilities:AccountsPayable 150.00 USD
Assets:Bank:Checking -150.00 USD
; Missing due metadata — still open; age into a separate bucket, do not drop
2025-08-12 * "No Due Co" "INV-ND" ^INV-ND
invoice: "INV-ND"
Expenses:Office 50.00 USD
Liabilities:AccountsPayable -50.00 USDOpen-postenquery (beanquery 0.2.0 ondersteunt HAVING SUM(number) < 0; het ondersteunt niet het vergelijken van een inventory met 0 met COST(SUM(position)) != 0):
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
-SUM(number) AS outstanding
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) < 0
ORDER BY due, payee;Verwachte rijen per 2025-09-04 (onafhankelijk afgeleid uit de transacties: factuur − betalingen gedateerd ≤ as-of; Forest netto nul en afwezig):
| payee | invoice | due | outstanding |
|---|---|---|---|
| No Due Co | INV-ND | (leeg) | 50.00 |
| Metro Hardware | INV-77 | 2025-08-05 | 150.00 |
| Helix Industries | INV-440 | 2025-09-04 | 200.00 |
| Acme Parts | INV-9001 | 2025-09-09 | 800.00 |
| Bright Office Co | INV-220 | 2025-09-14 | 300.00 |
Som van positief openstaand = 1.500,00. Forest's $500-factuur is weg. Acme toont nog $800 ($1.200 − $400); de $800-betaling op 2025-09-05 is na de as-of-datum, dus die kan dit momentopname niet sluiten.
Reconcilieer naar de AP-schuld op dezelfde afsluitdatum:
SELECT COST(SUM(position)) AS ap_balance
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04;Verwacht: ap_balance = (-1450.00 USD). Onafhankelijk: openstaand $1.500 minus de $50-credit van de leverancier (hieronder) = $1.450 verschuldigd → schuldvoorraad -1450.00 USD.
Verplaats de as-of één dag later (date <= 2025-09-05) en voer de open-postenquery opnieuw uit: Acme's rij verdwijnt (laatste betaling opgenomen), en ap_balance wordt (-650.00 USD). Een betaling na de rapportagedatum herschrijft nooit het eerdere rapport.
Credits van leveranciers / overbetalingen: HAVING SUM(number) < 0 behoudt alleen bedragen die u nog verschuldigd bent. Een overbetaling keert de AP-som van de groep positief. Lijst die apart—behandel een positief AP-saldo niet als "verschuldigd bedrag":
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
SUM(number) AS credit
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04
GROUP BY payee, invoice, due
HAVING SUM(number) > 0
ORDER BY payee;Verwacht: één rij—Credit Vendor / INV-C1 / 2025-08-20 / credit = 50.00 (u heeft $50 te veel betaald).
Ontbrekende due:: INV-ND verschijnt nog steeds in het open rapport met een lege due. Verouder het in een toegewijde missing-due-emmer (hieronder); laat het nooit stil weg.
Lijst facturen met bijgevoegde PDF's:
SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;Waar u AP in Fava kunt zien
- Balans: Navigeer naar
Balans→Liabilities→AccountsPayableom het totale saldo te zien en in te zoomen op de transactiedetails. - Journaal: Filter het journaal op
account:Liabilities:AccountsPayableof een specifieke link zoals^INV-xxxxom de volledige levenscyclus van een factuur te zien. - Documenten: Met
option "documents"ingesteld, ontdekt Beancount bestanden onder die boomstructuur. Fava's Documentenweergaven en delink_documents-plugin (zie hierboven) verbinden die bestanden met transacties diedocument:-metadata dragen.
AP-veroudering, omloopsnelheid en cashflow-bewustzijn
Verouderingsschema (reproduceerbare export + emmers): beanquery 0.2.0 kan de open-postenrijen hierboven uitvoeren, maar het biedt geen ingebouwde verouderingsemmer-expressie over due-metadata. Exporteer het open rapport en verdeel vervolgens deterministisch over emmers tegen de zelfde as-of-datum.
bean-query -f csv -o open-ap.csv accounts-payable-starter.bean \
"SELECT payee, any_meta('invoice') AS invoice, any_meta('due') AS due, -SUM(number) AS outstanding WHERE account ~ '^Liabilities:AccountsPayable' AND date <= 2025-09-04 GROUP BY payee, invoice, due HAVING SUM(number) < 0 ORDER BY due, payee"CSV-kolommen: payee, invoice, due, outstanding.
Emmerregel voor as-of-datum D = 2025-09-04 en elke rij's due (ISO YYYY-MM-DD):
| Voorwaarde | Emmer |
|---|---|
due leeg | missing-due |
due > D | not-yet-due |
due == D | due-today |
1 ≤ (D − due) ≤ 30 | 1-30-overdue |
31 ≤ (D − due) ≤ 60 | 31-60-overdue |
(D − due) ≥ 61 | 61+-overdue |
Compact Python (alleen stdlib) dat die tabel implementeert:
from datetime import date
AS_OF = date(2025, 9, 4)
# Apply bucket() to each CSV row's due column (ISO YYYY-MM-DD or empty).
def bucket(due: str | None) -> str:
if not due:
return "missing-due"
days = (AS_OF - date.fromisoformat(due)).days
if days < 0:
return "not-yet-due"
if days == 0:
return "due-today"
if days <= 30:
return "1-30-overdue"
if days <= 60:
return "31-60-overdue"
return "61+-overdue"Verwachte veroudering voor de open rijen per 2025-09-04:
| invoice | due | dagen achterstallig | emmer | outstanding |
|---|---|---|---|---|
| INV-ND | (leeg) | — | missing-due | 50.00 |
| INV-77 | 2025-08-05 | 30 | 1-30-overdue | 150.00 |
| INV-440 | 2025-09-04 | 0 | due-today | 200.00 |
| INV-9001 | 2025-09-09 | −5 | not-yet-due | 800.00 |
| INV-220 | 2025-09-14 | −10 | not-yet-due | 300.00 |
Due-today wordt niet samengevoegd met "huidig": due == as-of is een eigen emmer. Not-yet-due vereist due > as-of.
- AP-omloopsnelheid:
Totale leveranciersaankopen ÷ Gemiddelde AP. Een gerelateerde maatstaf, Days Payable Outstanding (DPO), is ruwweg365 ÷ omloopsnelheid. - Als u niet op tijd kunt betalen: AP is bedoeld voor kortlopende schuld. Als een leverancier instemt met formele, langere terugbetaling, herclassificeer dan uit AP naar een note payable—behoud dezelfde factuuridentiteit bij de conversie zodat de AP-groep wordt gewist.
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
invoice: "INV-1110"
due: "2025-09-15"
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USDBeste praktijken voor AP in een plain-text grootboek
- Ga papierloos: Bewaar factuur-PDF's onder uw documentenboom en voeg ze toe met de
document:-metadatasleutel (en Fava-upload /link_documentswanneer u Fava gebruikt). - Hergebruik factuuridentiteit op betalingen: Zet dezelfde
invoice:,due:, en^linkop de factuur en op elke betaling die deze voldoet. - Rapporteer tegen een as-of-datum: Snijd open-posten- en verouderingsquery's af met
date <= YYYY-MM-DDzodat een latere betaling een eerder momentopname niet kan herschrijven; verouder met dezelfdeD. - Houd metadata netjes: Consistent gebruik van
invoice:,due:, enterms:verbetert zoeken, query's en financiële beoordelingen. - Accrual helemaal: Als u nuttige AP-rapportage wilt, ga dan volledig over op accrualbasis. Beancount en Fava verwerken accrualsaldi op de Balans zonder speciale plugins.
Kopieer-plak-starter: leveranciersfactuur + betaling
Voor de volledige open-postenworkflow (betaald + gedeeltelijk + onbetaald, as-of-datum, veroudering), geef de voorkeur aan de downloadbare AP-starter hierboven. Het minimale factuur+betaling-paar hieronder toont nog steeds identiteit op beide poten—open eerst de rekeningen (of neem deze opens op in uw hoofdgrootboek). Optionele document:-metadata is hier weggelaten zodat er niets buiten het grootboek nodig is.
option "operating_currency" "USD"
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Liabilities:AccountsPayable USD
2025-01-01 open Expenses:Supplies:Paint USD
; ---- Bill ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
; ---- Payment (no discount) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
invoice: "INV-10455"
due: "2025-09-04"
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDMet Beancount 3.2.3 en beanquery 0.2.0 levert het laden van deze starter geen fouten op, nettoert de AP-rekening naar nul, en retourneert de invoice+due-query een enkele groep (Forest Paint Supply, INV-10455, 2025-09-04) waarvan het bedrag leeg is (betaald)—niet een gefactureerde rij plus een wees-(…, null, null)-betalingrij.
Dit is een educatieve gids en vormt geen belasting-, juridisch of financieel advies.
Referenties & verder lezen:
- Beancount-taalstructuur — rekeningen, metadata, tags, links en documenten (geverifieerd 2026-09-11)
- Beancount-querytaal (BQL)-referentie (geverifieerd 2026-09-11)
- Fava-functies — documentupload en
link_documents(geverifieerd 2026-09-11) any_meta()voor het opvragen van transactie-/posteringsmetadata (Martin Blais, Beancount-mailinglijst; geverifieerd 2026-09-11)





