跳转到主要内容

Beancount 速查表:语法与指令

一页纸的 Beancount 语法参考:账户类型与正负号、商品、交易与分录、余额、元数据、事件、标签与选项。

账户结构​

账户类型与符号​

类型          符号    示例
------------------------------------------------
Assets        (+)     Assets:US:BofA:Checking
Liabilities   (-)     Liabilities:Credit:Amex
Income        (-)     Income:Salary:Gross
Expenses      (+)     Expenses:Food:Restaurant
Equity        (-)     Equity:Opening-Balances

商品格式​

商品是大写符号——货币、股票代码和自定义单位。以下是命名示例,不是指令:

货币:       USD, EUR, CAD, AUD
投资:       GOOG, AAPL, VTI
加密货币:   BTC, ETH
自定义单位: HOURS, AIRMILES, HOME_MAYST

指令语法​

账户管理​

; 开户
2024-01-01 open Assets:Checking             ; 简单形式
2024-01-01 open Assets:Investing USD,GOOG   ; 带约束
 
; 关户
2024-12-31 close Assets:Old:Account

商品声明​

2024-01-01 commodity VTSAX
    name: "Vanguard Total Stock Market Index"
    asset-class: "equity"

交易记录​

; 基本交易
2024-01-15 * "Grocery Store" "Weekly shopping"
    Assets:Checking     -100.00 USD
    Expenses:Food:Groceries
 
; 带元数据和标签(#work 是标签,^invoice-123 是链接)
2024-01-15 * "Restaurant" "Business dinner" #work ^invoice-123
    id: "T-1234"
    receipt: "path/to/receipt.pdf"
    Expenses:Meals      80.00 USD
    Liabilities:Credit

过账规范​

以下记是账分录行——每一行都位于某个交易内部,缩进在日期行下方:

; 基本金额
Assets:Cash              100.00 USD
 
; 成本基础跟踪
Assets:Invest:VTSAX      10 VTSAX {100.00 USD}        ; 单位成本
Assets:Invest:VTSAX      10 VTSAX {{1000.00 USD}}     ; 总成本
Assets:Invest:VTSAX      10 VTSAX {100.00 # 9.95 USD} ; 单位成本加总费用
 
; 价格规范
Assets:Forex            1000.00 USD @ 0.85 EUR        ; 单价
Assets:Forex            1000.00 USD @@ 850.00 EUR     ; 总价
 
; 带日期的批次
Assets:Invest:VTSAX      10 VTSAX {100.00 USD, 2024-01-15}

余额核对​

; 余额补足:将 Assets:Checking 补足至 Equity:Opening-Balances
2024-01-01 pad Assets:Checking Equity:Opening-Balances
 
; 余额断言:在其日期的开始时检查,所以日期要放在补足之后
2024-02-01 balance Assets:Checking  1000.00 USD

元数据追踪​

; 附注
2024-01-15 note Assets:Checking "Called bank about fee"
 
; 文档链接
2024-01-15 document Assets:Checking "path/to/statement.pdf"
 
; 价格记录
2024-01-15 price VTSAX  100.00 USD

对于托管账本,实时价格可以自动提供带日期的估值价格。在选择器中选择支持的资产对,然后将 include 复制到你的账本中。保持交易价格和成本基础明确。

事件记录​

; 位置跟踪
2024-01-15 event "location" "New York, USA"
 
; 属性变更
2024-01-15 event "address" "123 Main Street"

标签管理​

; 标签作用域控制:#vacation 应用于 pushtag 和 poptag 之间的每一笔交易
pushtag #vacation
2024-01-15 * "Hotel"
    Expenses:Travel:Lodging   200.00 USD
    Assets:Credit
poptag #vacation

配置选项​

; 基本设置
option "title" "Personal Finance Ledger"
option "operating_currency" "USD"
 
; 账户命名
option "name_assets" "Assets"
option "name_liabilities" "Liabilities"
option "name_income" "Income"
option "name_expenses" "Expenses"
option "name_equity" "Equity"
 
; 文档处理
option "documents" "/path/to/docs"

注释与组织​

; 单行注释
 
* 章节标题
** 子章节
; 交易块紧随其后...
 
; 账户分组
; Assets
2024-01-15 ...
 
; Expenses
2024-01-16 ...

这份参考资料通过实用示例完整概述了 Beancount 的语法元素。

来源:https://beancount.io/zh/docs/Basics/cheatsheet