これは、Beancount言語構文の簡潔かつ包括的なリファレンスであり、実用的な構造、ルール、例を融合させています。詳細については、チートシートを参照してください。
概要
Beancountはプレーンテキストの複式簿記システムです。その言語は、3つの主要な構成要素を中心に構築されています:
- 商品(通貨、株式、ポイントなど)
- 勘定科目(階層的でカテゴリ化された元帳)
- ディレクティブ(イベントや設定を記録する日付付きエントリ)
商品
商品は常に大文字で記述されます。例:USD、EUR、AAPL、BTC、MILES、HOURS。
勘定科目
勘定科目はコロンで区切られた、大文字で始まる階層的な名前です。5つのルート勘定科目タイプのいずれかで始まる必要があります:
| 名前 | タイプ | 典型的な内容 | 例 |
|---|---|---|---|
Assets | + | 現金、銀行、投資 | Assets:Checking |
Liabilities | - | クレジットカード、ローン | Liabilities:CreditCard |
Income | - | 給与、利息 | Income:EmployerA |
Expenses | + | 購入、請求書 | Expenses:Food:Dining |
Equity | - | 期首/期末残高 | Equity:Opening-Balances |
- 構成要素は大文字で始まり、コロン(
:)で区切られ、スペースは含めません。 - 数字とダッシュは構成要素に使用できます。
- ルート勘定科目名はオプションでカスタマイズできます(後述)。
ディレクティブ
ディレクティブはBeancountファイルの中核となるステートメントです。ほとんどは日付で始まり、その後にディレクティブタイプと引数が続きます。これらはファイルの順序ではなく、時系列(日付順)で処理されます。
一般的な形式:
YYYY-MM-DD <directive> <arguments...>一般的なディレクティブと例
勘定科目の開設と閉鎖
2023-01-01 open Assets:Checking USD,EUR ; Optionally specify allowed currencies
2023-12-31 close Assets:Checking商品の宣言
2020-07-22 commodity AAPL
name: "Apple Inc."価格の宣言
2022-04-30 price AAPL 150.00 USDメモと文書
2022-03-20 note Assets:Checking "Asked about refund"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"取引
2024-01-05 * "Coffee Shop" "Morning coffee"
Expenses:Food 4.50 USD
Assets:Cash -4.50 USD
2024-01-06 ! "Phone Bill" "Monthly payment" #utilities ^phone
id: "INV12345" ; Metadata
Expenses:Utilities 60.00 USD
Assets:Checking転記の機能
; With cost basis
Assets:Stocks 1 AAPL {150.00 USD}
; With price annotation
Assets:Cash -100 USD @ 1.25 CAD
; With total price
Assets:Cash -100 USD @@ 125.00 CAD
; Implicit balance
Assets:Cash -100 USD
Assets:Bank残高照合とパディング
padは、それが供給するbalanceより前に日付を設定する必要があります。照合はその日の開始時にチェックされるためです:
2024-06-01 pad Assets:Checking Equity:Opening-Balances
2024-06-02 balance Assets:Checking 1000.00 USDイベント
2024-06-01 event "location" "San Francisco, CA"オプション
ファイル全体の設定を定義します:
option "title" "My Ledger"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"詳細はオプションリファレンスを参照してください。
プラグインとファイル構成
plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #project重要なルール
- すべての取引はバランスが取れている必要があります:すべての転記のウェイトの合計がゼロになる必要があります。転記のウェイトはその金額、またはコスト(
{})や価格(@)が他の通貨に変換されたもの(存在する場合)です。 - 勘定科目は使用する前に開設されている必要があります。閉鎖された勘定科目は転記を受け付けることができません。
- 残高照合は指定された通貨のみをチェックし、親勘定科目にも使用でき、その日付の開始時に評価されます(つまり、同日の取引は除外されます)。
- 価格注記(
@は単価、@@は合計)はバランスに影響します:これらは転記のウェイトを他方の通貨で設定します。-100 USD @ 1.25 CADは125 CADのウェイトを持ち、125 CADの転記と相殺されます。価格を削除すると、取引はバランスしなくなります。
一般的なパターン
初期残高で勘定科目を開設する
両方の勘定科目を開設し、開始日にpadを置き、翌日に残高を照合します(照合はその日の開始時にチェックされます):
2024-01-01 open Assets:Checking USD
2024-01-01 open Equity:Opening-Balances
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-02 balance Assets:Checking 1000.00 USD投資取引
2024-01-01 * "Buy stock"
Assets:Broker:Stock 10 AAPL {150.00 USD}
Assets:Broker:Cash -1500.00 USD複数通貨取引
2024-01-01 * "Currency exchange"
Assets:USD -100.00 USD @ 1.25 CAD
Assets:CAD 125.00 CADコメント
poptag #trip-to-peru
; inline comments begin with a semi-colon
* any line not starting with a valid directive is also ignored silently