Zum Hauptinhalt springen

Was ist Verbindlichkeiten aus Lieferungen und Leistungen? Definition, Beispiele & AP vs. AR (2026)

Veröffentlicht Zuletzt aktualisiert 18 Minuten LesezeitMike ThriftMike Thrift
Was ist Verbindlichkeiten aus Lieferungen und Leistungen? Definition, Beispiele & AP vs. AR (2026)
Auf dieser Seite

Verbindlichkeiten aus Lieferungen und Leistungen (Accounts Payable, AP) sind das Geld, das Ihr Unternehmen seinen Lieferanten für Waren oder Dienstleistungen schuldet, die Sie bereits erhalten, aber noch nicht bezahlt haben. In der Buchhaltung werden Verbindlichkeiten aus Lieferungen und Leistungen als kurzfristige Verbindlichkeit in Ihrer Bilanz klassifiziert – ein Betrag, der in der Regel innerhalb des nächsten Jahres und oft innerhalb von 30 bis 60 Tagen fällig ist.

Dieses Konzept ist zentral für die periodengerechte Buchführung (Accrual Accounting), bei der Sie die Ausgabe und die entsprechende Verbindlichkeit in dem Moment erfassen, in dem eine Rechnung eintrifft, und nicht erst, wenn Sie tatsächlich das Geld senden. Dieser Leitfaden zeigt Ihnen, wie Sie den gesamten AP-Arbeitsablauf sauber und effizient mit dem Klartext-Buchhaltungstool Beancount verwalten können.


Kurzüberblick

Bevor wir ins Detail gehen, hier die wichtigsten Punkte:

  • Verbindlichkeiten aus Lieferungen und Leistungen (AP) repräsentieren Ihre kurzfristigen Schulden gegenüber Lieferanten. Sie finden sie im Abschnitt Liabilities (Verbindlichkeiten) Ihrer Bilanz.
  • Periodengerecht vs. Kassenbasis: AP ist ein Konzept, das nur existiert, wenn Sie Ihre Bücher auf periodengerechter Basis führen. Beancount unterstützt periodengerechte Arbeitsabläufe vollständig, und seine Weboberfläche Fava zeigt Ihre Verbindlichkeiten korrekt an.
  • AP vs. AR: Es ist einfach: Verbindlichkeiten (Payables) sind, was Sie schulden, während Forderungen (Receivables, AR) das sind, was andere Ihnen schulden.

Wo AP in Beancount (und Fava) lebt

Um mit der Verfolgung von AP zu beginnen, müssen Sie zunächst ein Konto dafür in Ihrem Hauptbuch deklarieren. Eine gängige Konvention ist:

Liabilities:AccountsPayable

Sie können optional Unterkonten für wichtige Lieferanten anlegen (z. B. Liabilities:AccountsPayable:ForestPaintSupply).

In Fava erscheint dieses Konto in Ihrer Bilanz unter Liabilities. Sie können darauf klicken, um die Buchungen zu sehen, aus denen sich der Saldo zusammensetzt. Sie können dies sogar in Favas öffentlichem Beispiel-Hauptbuch in Aktion sehen, das ein Konto Liabilities:AccountsPayable enthält.

Vorzeichenkonvention: Beancount speichert Verbindlichkeitssalden als Haben (negative Zahlen). Ein Saldo von -500.00 USD auf Liabilities:AccountsPayable bedeutet, dass Sie 500 $ schulden. Der untenstehende Offene-Posten-Bericht kehrt das Vorzeichen mit -SUM(number) um, sodass jede unbezahlte Rechnung einen positiven offenen Betrag zeigt. Eine vollständig beglichene Rechnung summiert sich auf null und wird durch HAVING ausgeschlossen.


Beancount-Bausteine, die Sie verwenden werden

Ein robuster AP-Arbeitsablauf in Beancount basiert auf einigen Kernfunktionen:

  1. Konten: Sie verwenden hauptsächlich Ihr Konto Liabilities:AccountsPayable, ein Cash-Konto wie Assets:Bank:Checking und Ihre verschiedenen Aufwandskonten (z. B. Expenses:Supplies).
  2. Metadaten: Sie können jedem Vorgang Schlüssel-Wert-Daten anhängen. Für AP verwenden Sie Metadaten wie invoice:, due:, terms: und document:. Setzen Sie option "documents" auf einen Ordner, damit Beancount Dateien dort finden kann; in Fava fügt das Ablegen einer Datei auf einer Journalzeile einen document:-Metadateneintrag ein, und die Aktivierung von plugin "fava.plugins.link_documents" verknüpft diese Einträge mit gefundenen Document-Direktiven.
  3. Tags & Links: Verwenden Sie #tags (wie #ap) zum einfachen Filtern und ^links (wie ^INV-10455), um eine Rechnung und ihre spätere Zahlung programmatisch zu verknüpfen. Dies erzeugt eine klare, prüfbare Spur im Journal – aber Links allein sind nicht ausreichend für die untenstehende Offene-Posten-Abfrage.
  4. Abfragen (BQL): Beancounts SQL-ähnliche Abfragesprache (BQL) ermöglicht es Ihnen, leistungsstarke Berichte auszuführen, wie z. B. die Auflistung aller offenen Verbindlichkeiten sortiert nach Fälligkeitsdatum, direkt von der Befehlszeile mit bean-query oder auf Favas „Query“-Seite.

Rechnungsidentität (erforderlich für Offene-Posten-Abfragen): Jede Rechnung und jede begleichende Zahlung – vollständig, teilweise oder mit Frühzahlungsrabatt – muss dieselben invoice:- und due:-Transaktionsmetadaten sowie denselben ^link tragen. Die Abfrage gruppiert nach payee, any_meta('invoice') und any_meta('due'). Wenn eine Zahlung diese Schlüssel weglässt, landet ihre AP-Buchung in einer separaten (payee, null, null)-Gruppe und eine beglichene Rechnung erscheint weiterhin als offen. Halten Sie (payee, invoice) lieferantenübergreifend eindeutig. Optionale, nur auf Rechnungen vorkommende Felder wie terms: und document: müssen bei Zahlungen nicht wiederholt werden.


Kern-AP-Arbeitsablauf in Beancount

Die Verwaltung von AP in Ihrem Hauptbuch umfasst zwei oder drei wichtige Schritte: Erfassen der Rechnung, Bezahlen sowie manchmal die Behandlung von Teilzahlungen oder Rabatten.

1) Erfassen der Lieferantenrechnung (Dies erzeugt die Verbindlichkeit)

Zuerst buchen Sie die Ausgabe und erzeugen die Verbindlichkeit, wenn die Rechnung eintrifft.

; 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 USD

Diese einzelne Buchung erreicht zwei entscheidende Dinge:

  1. Sie erkennt sofort die Ausgabe von 500 $ im richtigen Zeitraum (August) – einmalig. Buchen Sie die Ausgabe bei der Zahlung nicht erneut.
  2. Sie schreibt AP mit 500 $ gut (-500.00 USD) und erfasst damit, dass Sie Forest Paint Supply diesen Betrag schulden.

Der Link ^INV-10455 zusammen mit den Metadaten invoice: / due: bilden die Identität der Rechnung. Jede spätere Zahlung dieser Rechnung muss alle drei wiederverwenden.

2) Bezahlen der Rechnung (Dies begleicht die Verbindlichkeit)

Wenn Sie die Rechnung bezahlen, erstellen Sie einen Vorgang, der Geld von Ihrem Bankkonto überweist, um die Verbindlichkeit zu begleichen. Kopieren Sie invoice: und due: von der Rechnung auf die Zahlung, damit beide Buchungen eine gemeinsame Abfragegruppe teilen.

a) Standardzahlung (kein Rabatt):

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

Diese Buchung reduziert Ihren AP-Saldo um 500 $ und Ihren Girokontostand um denselben Betrag. Die Verbindlichkeit für diese Rechnung ist nun beglichen (die AP-Summe der Gruppe ist null). Die Ausgabe bleibt auf der August-Rechnung – die Zahlung berührt Expenses: nicht.

b) Frühzahlungsrabatt (z. B. „2/10, n/30“) – wählen Sie genau eine Methode:

Wenn die Bedingungen „2/10, n/30“ sind, können Sie einen Rabatt von 2 % erhalten, wenn Sie innerhalb von 10 Tagen zahlen. Für unsere 500-$-Rechnung sind das 10 $ Rabatt. Der untenstehende Block zeigt zwei sich gegenseitig ausschließende Alternativen: Option 1 ist aktiv; Option 2 ist vollständig auskommentiert, sodass ein Einfügen nicht beide buchen kann. Um stattdessen Option 2 zu verwenden, kommentieren Sie Option 1 aus und Option 2 ein. Lassen Sie niemals beide aktiv – das begleicht AP doppelt und erfindet einen zweiten 10-$-Vorteil. Ob Sie ein Ertrags- oder Aufwandskonto verwenden, ist eine buchhalterische Richtlinienentscheidung für Ihre Bücher; Beancount verlangt nicht das eine über das andere.

; 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 USD

In jeder einzelnen Alternative begleichen Sie die volle Verbindlichkeit von 500 $, reduzieren Ihren Banksaldo um die tatsächlich gezahlten 490 $ und erfassen den 10-$-Vorteil. Ersetzen Sie die Standard-Vollzahlungstransaktion durch die gewählte Alternative – stapeln Sie keine Rabattzahlung auf die 500-$-Zahlung und kombinieren Sie diesen Block nicht mit Abschnitt 2a für dieselbe Rechnung.

3) Behandlung von Teilzahlungen

Verwenden Sie bei jeder Rate dieselbe Identität mit invoice: / due: / ^link, damit jede Zahlung dieselbe Offene-Posten-Gruppe reduziert.

; 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 USD

Nach der ersten Zahlung beträgt die AP-Summe der Rechnungsgruppe -800.00 USD (Sie schulden noch 800 $). Nach der Abschlusszahlung ist sie null. Wenn Sie das Journal nach ^INV-9001 filtern, wird weiterhin der vollständige Verlauf angezeigt.


Hilfreiche Abfragen (BQL)

Sie können diese Abfragen in Favas „Query“-Tab oder von der Befehlszeile mit bean-query ausführen (BQL-Referenz). Unten verifiziert mit Beancount 3.2.3 und beanquery 0.2.0.

Tipp: Die Funktion any_meta() sucht zuerst nach einem Metadatenschlüssel auf der Buchung und fällt dann auf die Transaktion zurück – so erscheinen Transaktionswerte wie invoice: / due: im Ergebnis.

Offene AP nach Lieferant (Saldenansicht):

Diese Abfrage summiert den Verbindlichkeitsbestand pro Lieferant. Ein Haben (negativer Gesamtbetrag) ist das, was Sie diesem Lieferanten noch schulden.

SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;

Offene Rechnungen zu einem festen Datum (Offene-Posten-Bericht):

Ein Offene-Posten-Bericht beantwortet die Frage „Was ist noch unbezahlt?“. Er muss (1) zu einem expliziten Stichtag abschneiden, damit spätere Zahlungen eine frühere Momentaufnahme nicht stillschweigend löschen können, (2) nach der gemeinsamen Rechnungsidentität (payee + invoice: + due:) gruppieren, (3) beglichene (Null-)Gruppen ausschließen und (4) einen positiven offenen Betrag anzeigen – nicht einen rohen, vorzeichenbehafteten AP-Haben.

Berichtsdatum, das überall unten verwendet wird: 2025-09-04.

Herunterladbares AP-Start-Hauptbuch

Laden Sie accounts-payable-starter.bean herunter – ein eigenständiges Hauptbuch, das aus dem vollständigen Block unten generiert wurde (Kontoeröffnungen, fiktives Eröffnungscash, beglichene / teilweise / unbezahlte Rechnungen, Stichtag 2025-09-04). Alle Namen und Beträge sind fiktive Beispieldaten. Keine Rechnungs-PDF, Dokumentenordner oder andere Datei ist erforderlich, um es zu validieren oder abzufragen.

Erster Lauf in einem sauberen temporären Verzeichnis (festgelegte Versionen 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 endet mit Exit-Code 0 und keiner Ausgabe. Die Abfrage gibt die fünf offenen Zeilen in der unten erwarteten Tabelle zurück (Forest fehlt; Acme offen 800.00; Summe der positiven offenen Beträge = 1500.00). Regenerieren Sie den committeten Download mit yarn generate:ap-starter nach Änderungen am Block; yarn generate:ap-starter --check schlägt fehl, wenn das Artefakt veraltet ist.

Fügen Sie diese vollständige Fixture ein (Eröffnungen + Eröffnungscash + die drei Rechnungsformen, plus heute-fällige / überfällige / Grenzfall-Zeilen für die Altersstruktur). Frühzahlungsrabatt-Alternativen für INV-10455 bleiben vollständig auskommentiert – aktivieren Sie genau eine nur, wenn Sie die Standard-Forest-Zahlung ersetzen; lassen Sie niemals beide Rabattoptionen zusammen mit dieser Zahlung aktiv.

; 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 USD

Offene-Posten-Abfrage (beanquery 0.2.0 unterstützt HAVING SUM(number) < 0; es unterstützt nicht den Vergleich eines inventory mit 0 mittels 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;

Erwartete Zeilen am 2025-09-04 (unabhängig von den Transaktionen abgeleitet: Rechnung − Zahlungen mit Datum ≤ Stichtag; Forest ergibt netto 0 und fehlt):

payeeinvoicedueoutstanding
No Due CoINV-ND(leer)50.00
Metro HardwareINV-772025-08-05150.00
Helix IndustriesINV-4402025-09-04200.00
Acme PartsINV-90012025-09-09800.00
Bright Office CoINV-2202025-09-14300.00

Summe der positiven offenen Beträge = 1.500,00. Die 500-$-Rechnung von Forest ist weg. Acme zeigt weiterhin 800 $ (1.200 $ − 400 $); die Zahlung von 800 $ am 2025-09-05 liegt nach dem Stichtag und kann diese Momentaufnahme daher nicht schließen.

Stimmen Sie mit der AP-Verbindlichkeit zum selben Stichtag ab:

SELECT COST(SUM(position)) AS ap_balance
WHERE account ~ "^Liabilities:AccountsPayable"
  AND date <= 2025-09-04;

Erwartet: ap_balance = (-1450.00 USD). Unabhängig: offene Beträge von 1.500 $ minus die 50 $ Lieferantenguthaben (unten) = 1.450 $ geschuldet → Verbindlichkeitsbestand -1450.00 USD.

Verschieben Sie den Stichtag um einen Tag nach hinten (date <= 2025-09-05) und führen Sie die Offene-Posten-Abfrage erneut aus: Die Zeile von Acme verschwindet (letzte Zahlung enthalten) und ap_balance wird (-650.00 USD). Eine Zahlung nach dem Berichtsdatum überschreibt den früheren Bericht nie.

Lieferantenguthaben / Überzahlungen: HAVING SUM(number) < 0 behält nur Beträge, die Sie noch schulden. Eine Überzahlung dreht die AP-Summe der Gruppe ins Positive. Listen Sie diese separat auf – behandeln Sie einen positiven AP-Saldo nicht als „fälligen Betrag“:

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;

Erwartet: eine Zeile – Credit Vendor / INV-C1 / 2025-08-20 / credit = 50.00 (Sie haben um 50 $ überzahlt).

Fehlendes due:: INV-ND erscheint weiterhin im offenen Bericht mit leerem Fälligkeitsdatum. Ordnen Sie es einem eigenen missing-due-Eimer zu (unten); lassen Sie es niemals stillschweigend weg.

Rechnungen mit angehängten PDFs auflisten:

SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;

Wo Sie AP in Fava sehen

  • Bilanz: Navigieren Sie zu Balance SheetLiabilitiesAccountsPayable, um den Gesamtsaldo zu sehen und in die Transaktionsdetails zu gehen.
  • Journal: Filtern Sie das Journal nach account:Liabilities:AccountsPayable oder einem bestimmten Link wie ^INV-xxxx, um den vollständigen Lebenszyklus einer Rechnung zu sehen.
  • Dokumente: Mit gesetztem option "documents" findet Beancount Dateien unter diesem Baum. Favas Dokumentenansichten und das link_documents-Plugin (siehe oben) verbinden diese Dateien mit Transaktionen, die document:-Metadaten tragen.

AP-Altersstruktur, Umschlagshäufigkeit und Cashflow-Bewusstsein

Altersstrukturplan (reproduzierbarer Export + Eimer): beanquery 0.2.0 kann die obigen Offene-Posten-Zeilen ausgeben, bietet jedoch keinen integrierten Altersstruktur-Ausdruck über due-Metadaten. Exportieren Sie den offenen Bericht und ordnen Sie dann deterministisch gegen dasselbe Stichtagsdatum in Eimer ein.

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-Spalten: payee, invoice, due, outstanding.

Eimerregel für Stichtag D = 2025-09-04 und das jeweilige due der Zeile (ISO YYYY-MM-DD):

BedingungEimer
due leermissing-due
due > Dnot-yet-due
due == Ddue-today
1 ≤ (D − due) ≤ 301-30-overdue
31 ≤ (D − due) ≤ 6031-60-overdue
(D − due) ≥ 6161+-overdue

Kompaktes Python (nur Standardbibliothek), das diese Tabelle implementiert:

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"

Erwartete Altersstruktur für die offenen Zeilen am 2025-09-04:

invoicedueTage überfälligEimeroutstanding
INV-ND(leer)missing-due50.00
INV-772025-08-05301-30-overdue150.00
INV-4402025-09-040due-today200.00
INV-90012025-09-09−5not-yet-due800.00
INV-2202025-09-14−10not-yet-due300.00

Heute-fällig wird nicht in „aktuell“ eingefaltet: due == as-of ist ein eigener Eimer. Noch-nicht-fällig erfordert due > as-of.

  • AP-Umschlagshäufigkeit: Gesamte Lieferanteneinkäufe ÷ durchschnittliche AP. Eine verwandte Kennzahl, Days Payable Outstanding (DPO), ist ungefähr 365 ÷ Umschlagshäufigkeit.
  • Wenn Sie nicht pünktlich zahlen können: AP ist für kurzfristige Schulden gedacht. Wenn ein Lieferant einer formellen, längerfristigen Rückzahlung zustimmt, klassifizieren Sie aus AP in ein Schuldscheindarlehen um – behalten Sie dieselbe Rechnungsidentität bei der Umwandlung bei, damit die AP-Gruppe beglichen wird.
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 USD

Best Practices für AP in einem Klartext-Hauptbuch

  • Papierlos gehen: Speichern Sie Rechnungs-PDFs unter Ihrem Dokumentenbaum und hängen Sie sie mit dem document:-Metadatenschlüssel an (und Fava-Upload / link_documents, wenn Sie Fava verwenden).
  • Rechnungsidentität bei Zahlungen wiederverwenden: Setzen Sie dasselbe invoice:, due: und ^link auf die Rechnung und auf jede Zahlung, die sie begleicht.
  • Gegen ein Stichtagsdatum berichten: Schneiden Sie Offene-Posten- und Altersstrukturabfragen mit date <= YYYY-MM-DD ab, damit eine spätere Zahlung eine frühere Momentaufnahme nicht überschreiben kann; altern Sie mit demselben D.
  • Metadaten ordentlich halten: Die konsistente Verwendung von invoice:, due: und terms: verbessert Suche, Abfragen und Finanzprüfungen.
  • Durchgehend periodengerecht: Wenn Sie nützliche AP-Berichte wünschen, verpflichten Sie sich, Ihre Bücher auf periodengerechter Basis zu führen. Beancount und Fava behandeln periodengerechte Salden in der Bilanz ohne spezielle Plugins.

Kopieren-Einfügen-Start: Lieferantenrechnung + Zahlung

Für den vollständigen Offene-Posten-Arbeitsablauf (beglichen + teilweise + unbezahlt, Stichtag, Altersstruktur) bevorzugen Sie den oben herunterladbaren AP-Start. Das minimale Paar aus Rechnung + Zahlung unten zeigt weiterhin die Identität auf beiden Seiten – eröffnen Sie zuerst die Konten (oder fügen Sie diese Eröffnungen in Ihr Hauptbuch ein). Optionale document:-Metadaten werden hier weggelassen, sodass nichts außerhalb des Hauptbuchs erforderlich ist.

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 USD

Mit Beancount 3.2.3 und beanquery 0.2.0 erzeugt das Laden dieses Starters keine Fehler, das AP-Konto ergibt netto null und die Rechnungs- und Fälligkeitsabfrage gibt eine einzelne Gruppe (Forest Paint Supply, INV-10455, 2025-09-04) mit leerem Betrag (beglichen) zurück – nicht eine Rechnungszeile plus eine verwaiste (…, null, null)-Zahlungszeile.


Dieser Leitfaden dient nur zu Bildungszwecken und stellt keine Steuer-, Rechts- oder Finanzberatung dar.

Referenzen & weiterführende Literatur:

Diesen Artikel teilen

Quelle: https://beancount.io/de/blog/2025/08/20/what-is-accounts-payable

Veröffentlicht: 20. August 2025

Zuletzt aktualisiert: 15. September 2026