買掛金(AP)とは、すでに受領したもののまだ支払っていない商品やサービスに対して、事業者がサプライヤーに支払う義務がある金額のことです。会計の世界では、買掛金は貸借対照表上の流動負債に分類され、通常は1年以内、多くの場合は30日から60日以内に支払い期限が到来する金額を指します。
この概念は発生主義会計の中心となるもので、実際に現金を支払った時ではなく、請求書が届いた時点で費用と対応する負債を計上します。このガイドでは、プレーンテキスト会計ツールであるBeancountを使用して、買掛金の一連のワークフロー全体をクリーンかつ効率的に管理する方法を紹介します。
クイックサマリー
詳細に入る前に、基本を確認しましょう:
- 買掛金(AP) は、仕入先に対する短期債務を表します。貸借対照表の
負債セクションに表示されます。 - 発生主義 vs. 現金主義: APは、帳簿を発生主義で管理している場合にのみ存在する概念です。Beancountは発生主義のワークフローを完全にサポートしており、そのWebインターフェースであるFavaは負債を正しく表示します。
- AP vs. AR: シンプルです。買掛金(AP)は自分が支払うべきものであり、売掛金(AR)は他の人が自分に支払うべきものです。
APがBeancount(およびFava)で置かれる場所
APの追跡を開始するには、まず台帳内にそのための勘定科目を宣言する必要があります。標準的な慣例は次の通りです:
Liabilities:AccountsPayable
必要に応じて、主要なベンダーごとにサブ勘定科目を作成することもできます(例:Liabilities:AccountsPayable:ForestPaintSupply)。
Favaでは、この勘定科目は貸借対照表のLiabilities(負債)に表示されます。クリックしてドリルダウンすると、残高を構成する仕訳を確認できます。実際に、Favaの公開サンプル台帳でこの動作を確認できます。この台帳にはLiabilities:AccountsPayable勘定科目が含まれています。
符号の慣例: Beancountは負債残高を貸方(負の数)として保存します。Liabilities:AccountsPayableの残高が-500.00 USDの場合、500ドルの借りがあることを意味します。以下の未決済項目レポートは-SUM(number)で符号を反転させ、各未払い請求書が正の未払い額として表示されるようにします。完全に精算された請求書は合計がゼロになり、HAVINGによって除外されます。
Beancountで使用する基本構成要素
堅牢なAPワークフローをBeancountで実現するには、いくつかの主要な機能に依存します。
- 勘定科目(Accounts): 主に
Liabilities:AccountsPayable勘定、Assets:Bank:Checkingのような現金勘定、および各種の費用勘定(例:Expenses:Supplies)を使用します。 - メタデータ(Metadata): 任意の取引にキーと値のペアのデータを添付できます。APでは、
invoice:、due:、terms:、document:などのメタデータを使用します。Beancountがファイルを検出できるようにoption "documents"をフォルダに設定します。Favaでは、ジャーナルの行にファイルをドロップするとdocument:メタデータエントリが挿入され、plugin "fava.plugins.link_documents"を有効にすると、それらのエントリが検出されたDocumentディレクティブにリンクされます。 - タグとリンク(Tags & Links): 簡単なフィルタリングには
#タグ(例:#ap)を使用し、請求書とその後の支払いをプログラム的に結び付けるには^リンク(例:^INV-10455)を使用します。これにより、ジャーナルに明確で監査可能な追跡記録が作成されます。ただし、リンクだけでは以下の未処理請求書クエリには不十分です。 - クエリ(BQL): BeancountのSQLライクなクエリ言語(BQL)を使用すると、
bean-queryコマンドラインまたはFavaの「クエリ」ページから、期日順にソートされた未処理の買掛金を一覧表示するなど、強力なレポートを直接実行できます。
請求書の識別情報(未処理請求書クエリに必須): すべての請求書と、それを決済する各支払い(全額、一部、早期割引を含む)には、同じinvoice:およびdue:取引メタデータと、同じ^リンクを必ず含める必要があります。クエリはpayee、any_meta('invoice')、any_meta('due')でグループ化されます。支払いでこれらのキーが省略されると、そのAP転記は別の(payee, null, null)グループに分類され、決済済みの請求書が未処理のまま表示されます。(payee, invoice)は仕入先間で一意に保ってください。terms:やdocument:などの請求書のみに任意で付けるフィールドは、支払いで繰り返す必要はありません。
BeancountにおけるコアAPワークフロー
台帳でAPを管理するには、請求書の記録、支払い、そして場合によっては分割払いや割引の処理という、2つまたは3つの主要なステップが含まれます。
1) ベンダー請求書の記録(これにより負債が発生します)
まず、請求書が届いたときに費用を計上し、買掛金を作成します。
; 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この単一の仕訳は、2つの重要なことを達成します:
- 正しい期間(8月)に$500の費用を即座に認識します — 一度だけです。支払い時に費用を再計上しないでください。
- APを$500貸方に記入し(
-500.00 USD)、Forest Paint Supplyにその金額を支払う義務があることを記録します。
^INV-10455リンクとinvoice: / due:メタデータが請求書の識別情報を形成します。この請求書のその後のすべての支払いは、これら3つすべてを再利用する必要があります。
2) 請求書の支払い(これにより負債が消滅します)
請求書を支払うとき、銀行口座から資金を移動して負債を消滅させる取引を作成します。請求書からinvoice:とdue:を支払いにコピーして、両方の転記が1つのクエリグループを共有するようにします。
a) 標準支払い(割引なし):
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この仕訳は、AP残高を$500減らし、当座預金口座残高も同額減らします。この請求書の負債はこれで消滅します(グループのAP合計はゼロです)。費用は8月の請求書に残ります — 支払いはExpenses:には触れません。
b) 早期支払い割引(例:「2/10、n/30」)— 正確に1つの方法を選択してください:
条件が「2/10、n/30」の場合、10日以内に支払うと2%の割引を受けることができます。当社の$500の請求書の場合、それは$10の割引です。下のフェンスは2つの相互に排他的な代替案を示しています:オプション1は有効で、オプション2は完全にコメントアウトされているため、貼り付けても両方を計上することはできません。代わりにオプション2を使用するには、オプション1をコメントアウトし、オプション2のコメントを解除します。両方を有効のままにしないでください — APが2回消滅し、2番目の$10の利益が作り出されます。収益勘定と費用勘定のどちらを使用するかは、帳簿の会計方針の選択です。Beancountはどちらかを必須とはしません。
; 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どちらかの代替案だけを使用する場合、$500の全負債を消滅させ、実際に支払った$490だけ銀行残高を減らし、$10の利益を計上します。標準の全額支払い取引を選択した代替案に置き換えてください — 割引支払いを$500の現金支払いの上に積み重ねたり、同じ請求書に対してこのフェンスをセクション2aと組み合わせたりしないでください。
3) 分割払いの処理
各分割払いで同じinvoice: / due: / ^link識別情報を再利用して、各支払いが同じ未処理請求書グループを減らすようにします。
; 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最初の支支払い後、請求書グループのAP合計は-800.00 USDです(まだ$800を支払う義務があります)。最終支払い後はゼロになります。仕訳帳を^INV-9001でフィルタリングしても、完全な履歴が表示されます。
便利なクエリ(BQL)
これらのクエリはFavaの「Query」タブまたはコマンドラインのbean-query(BQLリファレンス)で実行できます。以下はBeancount 3.2.3およびbeanquery 0.2.0で検証済みです。
ヒント:
any_meta()関数はまず転記(posting)のメタデータキーを検索し、見つからない場合は取引(transaction)にフォールバックします。そのため、取引レベルのinvoice:/due:値も結果セットに含まれます。
仕入先別の未払買掛金(残高ビュー):
このクエリは仕入先ごとの負債在庫を合計します。マイナス(貸方)の合計が、その仕入先に対してまだ支払っていない金額です。
SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;固定日時点の未決済請求書(オープンアイテムレポート):
オープンアイテムレポートは「未払い残高はいくらか?」に答えます。以下の要件を満たす必要があります。(1) 後日の支払いが以前のスナップショットを暗黙的に消去できないように、明示的な基準日で区切ること、(2) 共有の請求書ID(payee + invoice: + due:)でグループ化すること、(3) 精算済み(ゼロ)のグループを除外すること、(4) 生の符号付き買掛金貸方ではなく、正の未払い額を表示すること。
以下で使用する基準日: 2025-09-04。
ダウンロード可能な買掛金スターターレジャー
accounts-payable-starter.beanをダウンロードしてください。これは、以下の完全なフィクスチャ(口座開設、架空の期首現金、精算済み/一部支払い済み/未払いの請求書、基準日2025-09-04)から生成された、単一の自己完結型レジャーです。すべての名前と金額は架空のサンプルデータです。検証やクエリのために請求書PDF、ドキュメントフォルダ、その他のファイルは不要です。
クリーンな一時ディレクトリでの初回実行(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は出力なしで終了コード0を返します。クエリは以下の期待されるテーブルで5つの未決済行を返します(Forestはなし、Acmeの未払い額は800.00、正の未払い額の合計は1500.00)。コミット済みのダウンロードファイルは、フィクスチャ編集後にyarn generate:ap-starterで再生成します。yarn generate:ap-starter --checkは、成果物が古い場合に失敗します。
以下の完全なフィクスチャ(口座開設 + 期首現金 + 3つの請求書パターン、および期日当日/延滞/エッジケースの行をエージング用に含む)を貼り付けてください。INV-10455の早期割引の代替案はすべてコメントアウトされたままにしてください。標準のForest支払いを置き換える場合にのみ正確に1つを有効にしてください。その支払いと並行して両方の割引オプションを有効にしたままにしないでください。
; 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オープンアイテムクエリ(beanquery 0.2.0はHAVING SUM(number) < 0をサポート。COST(SUM(position)) != 0でinventoryを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;2025-09-04時点の期待される行(取引から独立に導出: 請求書 − 基準日以前の支払い。Forestは正味0で、存在しない):
| payee | invoice | due | outstanding |
|---|---|---|---|
| No Due Co | INV-ND | (空) | 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 |
正の未払い額の合計 = 1,500.00。Forestの$500請求書は消えています。Acmeはまだ**$800**($1,200 − $400)を表示。2025-09-05の$800の支払いは基準日後であるため、このスナップショットを精算できません。
同じ基準日で買掛金負債に照合:
SELECT COST(SUM(position)) AS ap_balance
WHERE account ~ "^Liabilities:AccountsPayable"
AND date <= 2025-09-04;期待される結果: ap_balance = (-1450.00 USD)。独立に計算: 未払い額$1,500 − 下記の$50の仕入先クレジット = $1,450の支払義務 → 負債在庫 -1450.00 USD。
基準日を1日後(date <= 2025-09-05)に移動してオープンアイテムクエリを再実行: Acmeの行は消え(最終支払いを含む)、ap_balanceは(-650.00 USD)になります。レポート日より後の支払いは、以前のレポートを書き換えることはありません。
仕入先クレジット / 過払い: HAVING SUM(number) < 0は、まだ支払っていない金額のみを保持します。過払いがあると、そのグループの買掛金合計が正になります。これらは個別にリストしてください。買掛金残高が正の場合を「支払予定額」として扱わないでください:
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;期待される結果: 1行 — Credit Vendor / INV-C1 / 2025-08-20 / credit = 50.00($50過払い)。
due:欠落: INV-NDは空のdueでオープンレポートに引き続き表示されます。専用のmissing-dueバケットにエージングしてください(下記)。黙って省略しないでください。
PDF添付請求書の一覧表示:
SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;Favaで買掛金(AP)を確認する場所
- 貸借対照表(Balance Sheet):
Balance Sheet→Liabilities→AccountsPayableに移動すると、合計残高を確認し、取引の詳細までドリルダウンできます。 - 仕訳(Journal): 仕訳帳を
account:Liabilities:AccountsPayableでフィルタリングするか、^INV-xxxxのような特定のリンクでフィルタリングすると、請求書の完全なライフサイクルを確認できます。 - 文書(Documents):
option "documents"が設定されている場合、Beancountはそのディレクトリ配下のファイルを検出します。Favaの文書ビューとlink_documentsプラグイン(前述)は、document:メタデータを持つ取引にそれらのファイルを関連付けます。
APエージング、回転率、およびキャッシュフローの認識
エージングスケジュール(再現可能なエクスポート+バケット): beanquery 0.2.0は上記の未決済項目行を出力できますが、dueメタデータに対する組み込みのエージングバケット式は提供していません。未決済レポートをエクスポートし、同じ基準日に対して決定的にバケット化してください。
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列:payee、invoice、due、outstanding。
基準日 D = 2025-09-04 と各行の due(ISO YYYY-MM-DD)に対するバケットルール:
| 条件 | バケット |
|---|---|
due が空 | 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 |
その表を実装するコンパクトなPython(標準ライブラリのみ):
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"2025-09-04時点の未決済行の期待エージング:
| invoice | due | 延滞日数 | バケット | outstanding |
|---|---|---|---|---|
| INV-ND | (空) | — | 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 == 基準日 は独自のバケットです。未到来は due > 基準日 を必要とします。
- 買掛金回転率:
総仕入高 ÷ 平均買掛金。関連指標である**買掛金支払期間(DPO)**は、おおよそ365 ÷ 回転率です。 - 期日通りに支払えない場合: 買掛金は短期債務を目的としています。ベンダーが正式な長期返済に合意した場合、買掛金から支払手形に振り替えてください—変換時に同じ請求書IDを維持し、買掛金グループが消えるようにします。
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平文台帳における買掛金(AP)のベストプラクティス
- ペーパーレス化: 請求書PDFをドキュメントツリーに保存し、
document:メタデータキーで添付します(Favaを使用する場合はFavaのアップロード/link_documentsも利用)。 - 支払い時に請求書IDを再利用: 請求書とそれを決済する各支払いの両方に、同じ
invoice:、due:、^linkを設定します。 - 基準日時点でのレポート作成: 未決済項目や滞留期間のクエリを
date <= YYYY-MM-DDで区切り、後からの支払いが以前のスナップショットを書き換えないようにします。滞留期間の計算にも同じDを使用します。 - メタデータを整理:
invoice:、due:、terms:を一貫して使用することで、検索、クエリ、財務レビューが向上します。 - 発生主義を徹底: 有用なAPレポートを求めるなら、帳簿を発生主義で維持することを徹底してください。BeancountとFavaは特別なプラグインなしで貸借対照表の発生主義残高を処理できます。
コピペで始める: 仕入先請求書 + 支払い
完全な未決済項目ワークフロー(決済済み + 一部決済 + 未決済、基準日、債齢)については、上記のダウンロード可能なAPスターターを推奨します。以下の最小限の請求書+支払いペアでも、両方のレッグで同一性が示されます。まず勘定科目を開いてください(または、これらの開始をメインの台帳に含めてください)。任意のdocument:メタデータはここでは省略されているため、台帳外のものは必要ありません。
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 USDBeancount 3.2.3とbeanquery 0.2.0を使用すると、このスターターを読み込んでもエラーは発生せず、AP勘定科目はゼロになり、請求書+期日クエリは単一のグループ(Forest Paint Supply, INV-10455, 2025-09-04)を返し、その金額は空(決済済み)になります。請求された行と、孤児の(…, null, null)支払い行が並ぶことはありません。
このガイドは教育目的であり、税務、法律、財務に関するアドバイスを構成するものではありません。
参考資料と関連リンク:
- Beancount言語構文 — 勘定科目、メタデータ、タグ、リンク、文書 (2026-09-11検証)
- Beancountクエリ言語(BQL)リファレンス (2026-09-11検証)
- Favaの機能 — 文書アップロードと
link_documents(2026-09-11検証) - トランザクション/ポスティングメタデータのクエリ用
any_meta()(Martin Blais、Beancountメーリングリスト、2026-09-11検証)





