Beancount における未払費用:実践ガイド(コピー&ペースト可能な元帳例付き)
未払費用は、月末の締めが積み重なるまで抽象的に感じられます。これは適切な発生主義会計の基礎であり、現金の出入りだけでなく、経済的実態を財務報告に反映させます。ここでは、未払費用が何か、なぜ重要か、そしてプレーンテキスト元帳でどのように記帳・逆転・報告するかを Beancount 視点でわかりやすく解説します。
TL;DR ⚡
- 未払費用 は、当期に発生したがまだ支払っていないコストです。現金が出るまで負債として記録します。
- Beancount では、
Expenses:
勘定を借方、Liabilities:Accrued:
勘定を貸方にします。支払時に負債を消去します。- 報告 では、
bean-query
のCLOSE ON
とCLEAR
を組み合わせて、特定日付時点のバランスシートを取得できます。
未払費用とは?
未払費用は、 事業がすでに費用を負担したものの、まだ支払っていないコストです。サービスを受領した時点、または費用が発生した時点で記録し、請求書が未着や支払期日がまだ来ていなくても認識します。この手法は 発生主義会計のマッチング原則 に基づき、費用をそれを生み出した収益と同じ期間に計上します。
代表的な例:
- 従業員の給与 – 月末に発生し、翌月に支払われる。
- 光熱費(電気・水道) – 12 月に使用したが、請求は 1 月になる。
- 借入金の利息 – 月間で累積したが、まだ口座から引き落とされていない。
これらの費用を発生時に記録することで、当期の財務パフォーマンスをより正確に把握できます。
Beancount の考え方(30 秒で)
Beancount はプレーンテキストの二重仕訳システムです。すべては日付付きディレクティブまたは取引としてテキストに記述します。システムは 5 つのトップレベル勘定 Assets(資産), Liabilities(負債), Equity(純資産), Income(収益), Expenses(費用) に基づいています。
エントリは日付順に並び、balance
アサーションは同日取引が処理される 前 にチェックされます。チェックや逆転エントリを入れる際はこの順序を意識してください。
bean-query
は SQL ライクなクエリ言語で、OPEN ON
, CLOSE ON
, CLEAR
などの演算子を使い、特定日時点の財務諸表を簡単に生成できます。
推奨チャート・オブ・アカウント
階層的で整理されたチャートは最強の味方です。未払費用の構造はシンプルです。必要になるのは以下の勘定:
- 費用勘定 例:
Expenses:Utilities
,Expenses:Payroll:Wages
- 対応する負債勘定 例:
Liabilities:Accrued:Utilities
,Liabilities:Accrued:Payroll
- 現金勘定 例:
Assets:Bank:Checking
Beancount は 5 つのトップレベル勘定を強制します。勘定名を整理しておくと、後のクエリやレポート作成が格段に楽になります。
基本パターン(プラグイン不要、マジックなし)
未払費用を処理する最も直接的な方法です。月末に費用を計上し、支払時に負債を消去します。
手順 1:月末に費用を計上
期間最終日に費用と負債を記録します。
2025-02-28 * "2 月分電気代を未払計上" #accrual
Expenses:Utilities 120.00 USD
Liabilities:Accrued:Utilities
手順 2:支払時に未払を消去
請求 書が届き支払ったら、費用勘定は再度触らず、負債勘定を借方にして消します。
2025-03-05 * "2 月分電気代支払 - City Power"
Liabilities:Accrued:Utilities 120.00 USD
Assets:Bank:Checking
この方法は小規模チームに最適です。2 月に費用が計上され、3 月に二重計上されることはありません。Beancount では金額を空欄にすると、システムが自動でバランスを取ってくれます。
代替手段:翌月 1 日に逆転エントリを入れる
古典的な「自動逆転」スタイルが好みなら、翌月 1 日に逆転エントリを入れ、実際の請求は通常通り費用勘定に記録します。
手順 1:月末に未払計上(上記と同じ)
2025-02-28 * "2 月分電気代を未払計上" #accrual
Expenses:Utilities 120.00 USD
Liabilities:Accrued:Utilities
手順 2:翌月 1 日に逆転
2025-03-01 * "2 月分電気代未払逆転" #reversal
Liabilities:Accrued:Utilities 120.00 USD
Expenses:Utilities
手順 3:通常通り支払を記録
2025-03-05 * "City Power - 2 月分請求書"
Expenses:Utilities 120.00 USD
Assets:Bank:Checking
チェックに関する注意:balance
アサーションは同日取引の 前 に評価されます。Liabilities:Accrued:Utilities
の残高を確認したい場合は、未払計上直後の 2025-02-28
に置くか、逆転後の 2025-03-01
に置いて残高が 0 になることを確認してくださ い。逆転取引の前に置くと誤検知になります。
よくある未払パターン 6 例(コピー&ペースト用) 📋
以下は一般的なビジネスシーンで使えるテンプレートです。
1. 請求書未到着の家賃
2025-01-31 * "1 月分家賃を未払計上" #accrual
Expenses:Rent 3000.00 USD
Liabilities:Accrued:Rent
2. 未払給与
2025-03-31 * "3 月分給与を未払計上" #accrual
Expenses:Payroll:Wages 8500.00 USD
Liabilities:Accrued:Payroll
3. 未払有給手当(PTO)
2025-03-31 * "3 月分有給手当を未払計上" #accrual
Expenses:Payroll:PTO 900.00 USD
Liabilities:Accrued:Payroll
4. 借入金 利息の未払
2025-02-29 * "月次ローン利息を未払計上" #accrual
Expenses:Interest 210.00 USD
Liabilities:Accrued:Interest
5. プロフェッショナル費用(監査・法務)
2025-12-31 * "年末監査費用を未払計上" #accrual
Expenses:Professional:Audit 4200.00 USD
Liabilities:Accrued:Professional
6. 請求書未到着の光熱費
2025-04-30 * "4 月分光熱費を未払計上" #accrual
Expenses:Utilities 95.00 USD
Liabilities:Accrued:Utilities
レポート:特定日時点で「何が未払か」?
bean-query
が答えを導き出すツールです。未払費用のバランスシートスナップショットを取得する例を示します。
期間末時点の全未払 負債残高を取得
以下のクエリは 2025 年 3 月 31 日時点の各未払負債勘定の残高を返します。
bean-query main.beancount '
SELECT account, UNITS(SUM(position)) AS balance
FROM OPEN ON 2025-01-01 CLOSE ON 2025-04-01 CLEAR
WHERE account "^Liabilities:Accrued"
GROUP BY 1
ORDER BY 1;
'
OPEN ON
は期間開始時点の残高を設定。CLOSE ON
は指定日付 以前 の取引を除外(排他的)。したがって2025-04-01
を指定すると2025-03-31
までのデータが取得できます。CLEAR
は収益・費用をゼロクリアし、純粋なバランスシート(資産・負債・純資産)だけを残します。
未払勘定の全取引レジスターを表示
未払勘定の生取引履歴を確認したい場合:
bean-query main.beancount '
SELECT date, payee, narration, position
WHERE account "^Liabilities:Accrued"
ORDER BY date;
'
全未払の合計金額を取得
簡易サマリが欲しいときは次のクエリ:
bean-query main.beancount '
SELECT UNITS(SUM(position)) AS total_accruals
FROM OPEN ON 2025-01-01 CLOSE ON 2025-04-01 CLEAR
WHERE account "^Liabilities:Accrued";
'
Beancount 固有のコントロールと「落とし穴」
- バランスアサーションのタイミング:前述の通り、アサーションはその日の取引が処理される 前 に評価されます。
2025-03-01 balance ...
は 3 月 1 日の取引より前に実行されます。計画的に配置してください。 - 命名と階層:
Liabilities:Accrued:*
のようにツリー構造を保つと、クエリがシンプルになり、レポートの可読性が向上します。 - pad の使用に注意:
pad
ディレクティブは開始残高の調整に便利ですが、定期的な未払計上の「修正」には使わないでください。明示的なエントリが監査証跡を残します。 - 時点レポート:バランスシートスナップショットは必ず
OPEN … CLOSE … CLEAR
を組み合わせて取得し、収益・費用が負債合計に混入しないようにします。
前払費用 vs. 未払費用(簡易比較)
混同しやすいので整理しておきましょう。
- 未払費用:サービスは 今 消費、現金支払いは 後。負債が発生。
- 前払費用:現金は 今 支払い、サービスは 後 に消費。資産が発生。
Beancount での会計ロジックは同じで、勘定だけが異なります(Assets:Prepaid:*
vs. Liabilities:Accrued:*
)。
ファイル冒頭のテンプレート(open ディレクティブ)
以下は本記事で使用した例の open
ディレクティブです。元帳ファイルの先頭に追加してください。
; --- Accounts (open once) ---
2025-01-01 open Assets:Bank:Checking
2025-01-01 open Expenses:Utilities
2025-01-01 open Expenses:Payroll:Wages
2025-01-01 open Liabilities:Accrued:Utilities
2025-01-01 open Liabilities:Accrued:Rent
2025-01-01 open Liabilities:Accrued:Payroll
2025-01-01 open Liabilities:Accrued:Interest
2025-01-01 open Liabilities:Accrued:Professional
2025-01-01 open Expenses:Rent
2025-01-01 open Expenses:Professional:Audit
2025-01-01 open Expenses:Payroll:PTO
2025-01-01 open Expenses:Interest
2025-01-01 open Expenses:Utilities
まとめ
未払費用は、発生主義会計の核心であり、正しく記録すれば財務情報の信頼性が格段に向上します。Beancount のシンプルさと bean-query
の柔軟なレポーティング機能を活用すれば、未払費用の管理は手間なく実現できます。ぜひ本記事のテンプレートをコピーして、あなたの元帳に組み込んでみてください。