理解 Beancount 中的日记账分录
日记账分录是复式记账的核心,在 Beancount 中,你编写的每一条 *
交易都是一条日记账分录。本指南解释了关键要点——借方与贷方、调整分录和冲销分录——并展示它们如何干净地映射到 Beancount 的纯文本语法。你将学会以最少的繁琐保持账目精准。
快速回顾:什么是日记账分录?
日记账分录是对金融交易的正式、带日期的记录。它以 借方 与 贷方 的形式表达,保持基本会计等式平衡:
在复式记账体系中,每笔交易至少影响两个账户,总借方必须等于总贷方。这一简单规则确保了后续的利润表、资产负债表等财务报告的可信度和准确性。
一分钟了解借方与贷方
借方与贷方的概念起初可能让人困惑,但其实只需记住几个简单规则。可以这样思考:“价值从哪里来?”(贷方)以及 “价值到哪里去?”(借方)。
以下是五大核心账户类型的增减规则速查表:
账户类型 | 增加方式 |
---|---|
资产 | 借方 |
费用 | 借方 |
负债 | 贷方 |
所有者权益 | 贷方 |
收入 | 贷方 |
Beancount 中的日记账分录长什么样
Beancount 使用简洁、易读的文本指令记录交易。每笔交易必须对每种商品(例如 USD、EUR、AAPL 股票)平衡为零。若不平衡,Beancount 会报错。
下面是一个购买咖啡的基本交易示例:
2025-09-10 * "Coffee Bar" "Team coffee"
Expenses:Food:Coffee 18.00 USD
Assets:Bank:Checking -18.00 USD
注意两行记账(带账户的行)相加为零:$18.00 + (-$18.00) = 0
。
你可以在叙述中直接使用 标签(如 #clientX
)进行过滤,或使用 链接(如 ^INV-2025-001
)将 相关分录关联起来。
例如,下面展示如何将发票与付款关联:
; 首先,记录发送给客户的发票
2025-09-15 * "Acme Corp" "Invoice 2025-001 #clientX ^INV-2025-001"
Assets:AccountsReceivable 1000.00 USD
Income:Consulting -1000.00 USD
; 稍后,记录付款并回链到原始发票
2025-09-28 * "Acme Corp" "Payment on ^INV-2025-001"
Assets:Bank:Checking 1000.00 USD
Assets:AccountsReceivable -1000.00 USD
#clientX
标签让你轻松筛选该客户的所有交易,^INV-2025-001
链接则在报告中创建两条分录之间的可追溯关系。
常用日记账分录(可直接粘贴)
以下是几类常见业务交易的 Beancount 格式示例。
所有者投入现金
所有者为创业投入个人资金。
2025-01-01 * "Owner" "Initial capital contribution"
Assets:Bank:Checking 10000.00 USD
Equity:Owner-Capital -10000.00 USD
含税现金销售
客户以现金购买商品,需收取 8% 销售税,税金稍后上缴政府。
2025-01-05 * "Walk-in Customer" "Cash sale with 8% tax"
Assets:Cash 108.00 USD
Income:Sales -100.00 USD
Liabilities:Tax:Sales -8.00 USD
信用销售(发票)与收款
提供服务并开具发票,随后收到付款。
2025-01-10 * "Acme Corp" "Consulting invoice ^INV-2025-002"
Assets:AccountsReceivable 2500.00 USD
Income:Consulting -2500.00 USD
2025-01-30 * "Acme Corp" "Payment on ^INV-2025-002"
Assets:Bank:Checking 2500.00 USD
Assets:AccountsReceivable -2500.00 USD
信 用卡费用
使用公司信用卡购买办公用品。
2025-01-12 * "OfficeMax" "Supplies on credit card"
Expenses:Office:Supplies 75.00 USD
Liabilities:CreditCard -75.00 USD
薪资(简化模型)
记录工资总额、员工税款预扣以及银行净付款。
2025-01-31 * "Payroll" "January wages and withholdings"
Expenses:Payroll:Wages 2000.00 USD
Liabilities:Taxes:Withheld -400.00 USD
Assets:Bank:Checking -1600.00 USD
月度折旧
记录资产(如笔记本电脑)的月度折旧费用。
2025-01-31 * "Depreciation" "Laptop, straight-line"
Expenses:Depreciation 100.00 USD
Assets:Equipment:AccumDepr -100.00 USD
预付费用与月度摊销
一次性支付全年保险费,然后在每月确认费用。
; 1. 支付全年保费
2025-01-01 * "InsureCo" "Annual insurance premium"
Assets:Prepaid:Insurance 1200.00 USD
Assets:Bank:Checking -1200.00 USD
; 2. 在一月末确认一个月费用
2025-01-31 * "InsureCo" "Amortize 1/12 of insurance"
Expenses:Insurance 100.00 USD
Assets:Prepaid:Insurance -100.00 USD
递延收入与月度确认
客户预付 3 个月订阅费,随后按月确认收入。
; 1. 客户预付服务费
2025-02-01 * "Subscriber" "3-month plan prepaid"
Assets:Bank:Checking 300.00 USD
Liabilities:Unearned:Subs -300.00 USD
; 2. 在二月末确认第一个月收入
2025-02-28 * "Recognition" "Recognize month 1 of 3"
Liabilities:Unearned:Subs 100.00 USD
Income:Subscriptions -100.00 USD
坏账准备与核销
为可能无法收回的应收账款 计提准备金,随后核销具体坏账。
; 1. 按应收账款的 2% 计提准备金
2025-03-31 * "Provision" "2% of A/R for doubtful accounts"
Expenses:BadDebt 200.00 USD
Assets:AllowanceForDoubtful -200.00 USD
; 2. 核销已确认无法收回的发票
2025-04-15 * "Write-off" "Customer XYZ invoice"
Assets:AllowanceForDoubtful 150.00 USD
Assets:AccountsReceivable -150.00 USD
期末存货与成本调整
期末通过调整存货账户计算本期销货成本(COGS)。
2025-03-31 * "COGS adjustment" "Periodic inventory method"
Expenses:COGS 4500.00 USD
Assets:Inventory -4500.00 USD
调整分录 vs. 冲销分录
调整分录 在会计期间(如月末或季末)记 录,用于将收入与费用准确匹配到实际发生的期间,涵盖应计、递延以及折旧等估计。
冲销分录 是可选的,通常在新期间的第一天录入,用来完全冲销前一期的特定调整分录,以简化后续记账。冲销应计后,你可以用标准方式记录实际现金交易,而无需记得再对负债账户进行拆分。
示例:计提并冲销水电费
假设你需要在一月计提水电费,但账单要到二月才收到。
; 1. 在一月末计提预计费用
2025-01-31 * "Accrual" "Estimate January utilities expense"
Expenses:Utilities 500.00 USD
Liabilities:Accrued:Utilities -500.00 USD
; 2. (可选)在下期第一天冲销该计提
2025-02-01 * "Reversal" "Undo January utilities accrual"
Liabilities:Accrued:Utilities 500.00 USD
Expenses:Utilities -500.00 USD
; 3. 二月收到实际账单并付款
; 实际账单为 520 美元。由于已冲销,你可以直接全额记入费用。
2025-02-10 * "City Utilities" "Payment for January bill"
Expenses:Utilities 520.00 USD
Assets:Bank:Checking -520.00 USD
注:大纲中的示例展示了分拆最终付款的方式。冲销分录是一种简化最终付款录入的替代方案。
Beancount 日记账分录检查清单
请按以下步骤确保分录整洁、正确:
- 以 日期(YYYY-MM-DD)和交易标记 (
*
) 开头。 - 添加 付款方 与描述性 叙述。使用
#标签
与^链接
提高可搜索性。 - 至少包含 两行记账,使每种商品的合计为零。
- 使用正确的 账户名称,遵循五大类型:
Assets
,Liabilities
,Equity
,Income
,Expenses
。 - 可选地添加 元数据(如
document: "invoices/INV-2025-001.pdf"
)以提升可追溯性。
常见陷阱(以及 Beancount 如何帮助)
- 记账不平衡:如果借方与贷方不等于零,Beancount 会拒绝该分录。这是防止错误的核心功能。 你甚至可以留空一行金额,Beancount 会自动计算。
- 账户符号错误:
Income
、Equity
、Liabilities
增加时使用贷方(在 Beancount 中通常为负数),容易写错。若写错,报告会显得异常,但平衡规则仍提供安全网。 - 缺少链接:忘记将发票与付款关联会导致追踪困难。始终使用
^链接
可创建可审计的追踪链。
下一步该去哪里
- Beancount 语言与平衡规则:深入官方文档。
- 语法速查表:所有 Beancount 指令的便捷参考。
- 借方/贷方入门:如果你对会计规则还不熟悉,这是很好的起点。
- 调整/冲销分录:更详细的会计理论文章。
附录:会计术语 → Beancount 映射表
此快速翻译指南帮助你将会计指令映射为 Beancount 语法。
会计指令 | Beancount 操作 |
---|---|
借记费用 | 正数金额记入 Expenses: 账户 |
贷记负债 | 负数金额记入 Liabilities: 账户 |
应计收入 | Assets:AccountsReceivable + Income:* - |
递延收入 | Assets:Bank:* + Liabilities:Unearned:* - |
确认递延收入 | Liabilities:Unearned:* + Income:* - |
有了这些模式与示例,你几乎可以在 Beancount 中干净地建模任何业务事件,确保财务报告毫无意外。