買掛金(AP)とは、商品やサービスをすでに受け取ったものの、まだ支払いを完了していない取引先に対して事業者が負う債務のことです。会計の世界では、APは貸借対照表上で流動負債に分類されます。これは通常、1年以内、多くの場合30日から60日以内に支払うべき金額です。
この概念は発生主義会計の中心となるもので、実際に現金を支払った時ではなく、請求書が届いた時点で費用とそれに対応する負債を記録します。このガイドでは、プレーンテキスト会計ツールであるBeancountを使って、APワークフロー全体をクリーンかつ効率的に管理する方法を説明します。
クイックサマリー
詳細に入る前に、基本を確認しましょう。
- 買掛金(AP) はベンダーに対する短期債務を表し、貸借対照表の
負債セクションに表示されます。 - 発生主義と現金主義: APは、帳簿を 発生主義 でつけている場合にのみ存在する概念です。Beancountは発生主義のワークフローを完全にサポートしており、そのウェブインターフェースであるFavaは負債を正しく表示します。
- APとARの違い: シンプルです。買掛金はあなたが 負っている もの、売掛金(AR)は他の人があなたに 負っている ものです。
Beancount(およびFava)におけるAPの場所
APの追跡を開始するには、まず台帳にそのための勘定科目を宣言する必要があります。標準的な慣例は次のとおりです。
Liabilities:AccountsPayable
主要なベンダーごとに補助科目を作成することもできます(例:Liabilities:AccountsPayable:ForestPaintSupply)。
Favaでは、この勘定科目は貸借対照表の 負債 の下に表示されます。クリックするとドリルダウンして、未処理および支払済みのすべての項目のリストを確認でき、義務の状況を明確に把握できます。これは、Favaの公開サンプル台帳でも実際に確認できます。この台帳には Liabilities:AccountsPayable 勘定科目が含まれています。
使用するBeancountの構成要素
Beancountにおける堅牢なAPワークフローは、いくつかの主要機能に依存しています。
- 勘定科目: 主に
Liabilities:AccountsPayable勘定科目、Assets:Bank:Checkingなどの現金勘定、および各種の費用勘定(例:Expenses:Supplies)を使用します。 - メタデータ: 任意の取引にキーと値のデータを添付できます。APでは、
invoice:、due:、terms:、document:などのメタデータを使用します。Favaはdocument:キーを認識し、ドキュメントフォルダを設定している場合、添付ファイルへのクリック可能なリンクを自動的に作成します。 - タグとリンク: 簡単なフィルタリングには
#タグ(例:#ap)を使用し、請求書とその後の支払いをプログラム的に結びつけるには^リンク(例:^INV-10455)を使用します。これにより、明確で監査可能な証跡が作成されます。 - クエリ(BQL): BeancountのSQLライクなクエリ言語(BQL)を使用すると、
bean-queryコマンドラインまたはFavaの「クエリ」ページから、支払期日順に並べた未処理の買掛金の一覧表示など、強力なレポートを直接実行できます。
BeancountにおけるコアAPワークフロー
台帳でAPを管理するには、2つまたは3つの主要なステップが必要です。請求書の記録、支払い、そして時には部分払いや割引の処理です。
1) ベンダー請求書の記録(これにより負債が発生します)
まず、請求書が届いた時点で費用を計上し、買掛金を作成します。
; メインのBeancountファイルでドキュメントフォルダを任意に設定:
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つの重要なことを達成します。
- 500ドルの費用を正しい期間(8月)に即座に認識します。
- それに対応する500ドルの負債を作成し、Forest Paint Supplyに支払う義務があることを示します。
^INV-10455 リンクは一意の識別子であり、後で同じリンクを支払いに添付して、請求書と支払い取引を論理的に結びつけることができます。
2) 請求書の支払い(これにより負債が消滅します)
請求書を支払うときは、銀行口座から資金を移動して負債を消滅させる取引を作成します。
a) 標準的な支払い(割引なし):
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDこの取引は、AP残高を500ドル減らし、当座預金口座の残高も同額減らします。負債はこれで消滅します。
b) 早期支払い割引(例:「2/10、n/30」):
条件が「2/10、n/30」の場合、10日以内に支払うと2%の割引を受けることができます。500ドルの請求書の場合、10ドルの割引になります。記録する方法として、次の2つの許容可能な方法があります。1つの方法を選択し、一貫して使用してください。
; オプション1: 割引をその他の収益として記録(費用相殺の効果)
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Income:Discounts:Payables -10.00 USD
; オプション2: 元の費用を直接減額する
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Expenses:Supplies:Paint -10.00 USDどちらの場合も、500ドルの全負債を消滅させ、実際に支払った490ドルだけ銀行残高を減らし、10ドルの利益を計上します。
3) 部分払いの処理
Beancountのリンク機能により、部分払いの追跡はシンプルかつクリーンに行えます。
; 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
; 400ドルの最初の支払い
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD
; 800ドルの最終支払い
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD3つの取引すべてに ^INV-9001 リンクを使用することで、ジャーナルを簡単にフィルタリングして、この特定の請求書とそれに関連する支払いの完全な履歴を確認できます。
便利なクエリ(BQL)
これらのクエリは、Favaの「クエリ」タブまたはコマンドラインの bean-query で実行できます。
ヒント:
any_meta()関数は、invoice:やdocument:などのメタデータフィールドをクエリ結果に取り込むのに非常に便利です。
ベンダー別の未処理AP(残高ビュー):
このクエリは、各仕入先に現在支払うべき未処理残高を合計します。
SELECT payee, COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;請求書番号と支払期日別の未処理AP:
支払期日順に並べたすべての未処理請求書の整理されたリストを取得して、支払いの優先順位付けに役立てます。
SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
COST(SUM(position)) AS amount
WHERE account ~ "^Liabilities:AccountsPayable"
GROUP BY payee, invoice, due
ORDER BY due, payee;PDF添付付き請求書の一覧表示:
このクエリは、すべての請求書を検索し、リンクされたドキュメントのパスを表示します。
SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account ~ "^Liabilities:AccountsPayable"
ORDER BY date DESC;FavaでAPを確認する場所
- 貸借対照表:
貸借対照表→負債→買掛金に移動して、総残高を確認し、取引の詳細にドリルダウンします。 - ジャーナル:
account:Liabilities:AccountsPayableまたは^INV-xxxxなどの特定のリンクでジャーナルをフィルタリングして、請求書の全ライフサイクルを確認します。 - ドキュメントサイドバー:
document:メタデータを使用し、option "documents"ディレクティブを設定すると、サイドバーに関連ドキュメントのリストが表示されます。
APエージング、回転率、キャッシュフロー意識
- エージングスケジュール: このレポートは、未処理の請求書を未処理期間(例:1〜30日、31〜60日、60日以上)ごとにグループ化します。Beancountで最も実用的な方法は、上記の「請求書番号と支払期日別の未処理AP」クエリを実行し、結果をCSVとしてエクスポートして、スプレッドシートまたは小さなPythonスクリプトでバケット化することです。
- AP回転率: これはベンダーへの支払い速度を確認する簡単な健全性チェックです。計算式は
総仕入高 ÷ 平均買掛金です。関連する指標である 買掛金支払日数(DPO) は、おおよそ365 ÷ 回転率です。 - 期日までに支払えない場合: APは短期債務を対象としています。ベンダーが正式な長期返済に同意した場合は、債務をAPからノート支払手形に分類し直す必要があります。
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USDプレーンテキスト台帳でのAPに関するベストプラクティス
- ペーパーレス化: 請求書PDFを
documentsフォルダに保存し、document:メタデータキーでリンクします。 - リンクを一貫して使用: 一意の請求書番号を、請求書と関連するすべての支払いエントリの両方に
^リンクとして付けます。 - メタデータを整理整頓:
invoice:、due:、terms:を一貫して使用すると、検索、クエリ、財務レビューが向上します。 - 徹底した発生主義: 有用なAPレポートが必要な場合は、帳簿を発生主義でつけることを徹底してください。BeancountとFavaはこれを美しく処理します。
コピー&ペーストで始める:ベンダー請求書 + 支払い
; ---- 請求書 ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD
; ---- 支払い(割引なし) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USDこのガイドは教育目的であり、税務、法律、または財務に関するアドバイスを構成するものではありません。