Beancount 中的应计费用:实用指南(附复制粘贴账本示例)
应计费用在月末结账堆积时听起来抽象。它们是正确权责发生制会计的基石,确保你的财务报 告反映经济实质,而不仅仅是现金何时流动。下面是一个清晰、以 Beancount 为先的完整演练,说明它们是什么、为何重要,以及如何在纯文本账本中记账、冲销和报告。
TL;DR ⚡
- 应计费用 是指本期已发生但尚未付款的成本。它们在现金支出前被记录为负债。
- 在 Beancount 中,这很简单:借记
Expenses:
科目,贷记Liabilities:Accrued:
科目。稍后付款时清除负债。- 报告时,可以通过在
bean-query
中使用CLOSE ON
和CLEAR
,在特定日期查看应付金额,以获得干净的资产负债表快照。
什么是应计费用?
应计费用是企业已经发生但尚未付款的成本。服务已收到或费用已产生时即记录,即使发票尚未到达或付款尚未到期。这一做法遵循权责发生制会计的 配比原则,即费用应与其帮助产生的收入在同一期间确认。
常见例子包括:
- 员工工资 在本月末已产生,但在下月支付。
- 公用事业费用(电、水) 你在十二月使用,但要到一月才收到账单。
- 贷款利息 本月已累计,但尚未从账户中扣除。
在费用发生时记录这些成本,你可以更真实地反映公司该期间的财务表现。
Beancount 对此的思考(30 秒概览)
Beancount 是一个纯文本、双式记账系统。所有内容都是带日期的指令或交易,保存在文本文件中。系统基于五大核心账户类型:资产、负债、权益、收入、费用。
条目始终按日期排序。关键细节是 balance
断言在同一天的交易处理之前进行检查。这在放置检查和冲销条目时尤为重要。
最后,bean-query
语言提供了强大的类 SQL 报表功能。使用 OPEN ON
、CLOSE ON
、CLEAR
等操作符,你可以为财务报表创建精确的 “截至” 视图。
建议的科目表
整洁的层级科目表是你的最佳伙伴。对于应计费用,结构非常直接。你需要:
- 费用科目:例如
Expenses:Utilities
、Expenses:Payroll:Wages
- 对应的负债科目:例如
Liabilities:Accrued:Utilities
、Liabilities:Accrued:Payroll
- 现金科目:例如
Assets:Bank:Checking
Beancount 强制使用这五大顶层账户类型。保持科目名称有序,可让查询和报表在后期更加轻松。
核心模式(无需插件、无需魔法)
这是在 Beancount 中处理应计的最直接方式。包括两步:月末计提费用,付款时清除负债。
步骤 1:在月末计提费用
在期间的最后一天,记录费用并创建负债。
2025-02-28 * "Accrue February electricity" #accrual
Expenses:Utilities 120.00 USD
Liabilities:Accrued:Utilities
步骤 2:付款时冲销计提
当账单到来并付款时,不再触及费用科目,而是借记负债科目将其冲销。
2025-03-05 * "Pay Feb electricity - City Power"
Liabilities:Accrued:Utilities 120.00 USD
Assets:Bank:Checking
这是小团队最简洁的做法。它正确地将费用计入二月,并确保三月不会重复计入。请注意,在 Beancount 中,留空金额会让系统自动平衡交易。
替代方案:在次月第一天做冲销
如果你更喜欢经典的 “自动冲销” 会计风格,可以在下月第一天发布计提条目的相反方向。随后,像往常一样将实际供应商账单记入费用科目。
步骤 1:月末计提(同上)
2025-02-28 * "Accrue February electricity" #accrual
Expenses:Utilities 120.00 USD
Liabilities:Accrued:Utilities
步骤 2:次月第一天冲销
2025-03-01 * "Reverse Feb electricity accrual" #reversal
Liabilities:Accrued:Utilities 120.00 USD
Expenses:Utilities
步骤 3:正常记账付款
2025-03-05 * "City Power - February bill"
Expenses:Utilities 120.00 USD
Assets:Bank:Checking
检查提示:记住 balance
断言在同一天的交易之前评估。如果想检查 Liabilities:Accrued:Utilities
的余额,请在 2025-02-28
放置断言以确认计提,或在 2025-03-01
之后 放置断言以确认为零。若在 2025-03-01
的冲销之前放置断言,会导致错误失败。
六大常见应计(复制粘贴模板) 📋
以下是一些常用业务应计的即用示例。
1. 未开票租金
2025-01-31 * "Accrue January rent" #accrual
Expenses:Rent 3000.00 USD
Liabilities:Accrued:Rent
2. 已赚未付工资
2025-03-31 * "Accrue March wages" #accrual
Expenses:Payroll:Wages 8500.00 USD
Liabilities:Accrued:Payroll
3. 已赚的带薪休假(PTO)
2025-03-31 * "Accrue PTO earned in March" #accrual
Expenses:Payroll:PTO 900.00 USD
Liabilities:Accrued:Payroll
4. 贷款利息累计
2025-02-29 * "Accrue monthly loan interest" #accrual
Expenses:Interest 210.00 USD
Liabilities:Accrued:Interest
5. 专业费用(审计/法律)
2025-12-31 * "Accrue year-end audit fees" #accrual
Expenses:Professional:Audit 4200.00 USD
Liabilities:Accrued:Professional
6. 已使用但未计费的公用事业
2025-04-30 * "Accrue April utilities" #accrual
Expenses:Utilities 95.00 USD
Liabilities:Accrued:Utilities
报告:“截至某日期我欠多少钱?”
bean-query
是获取答案的工具。下面演示如何获得应计费用的资产负债表快照。
获取期末所有应计负债余额
此查询返回截至 2025‑03‑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 …
在2025-03-01
的任何交易之前运行,请相应安排。 - 命名与层级:像
Liabilities:Accrued:*
这样的整洁树结构不仅美观,还能简化查询,使报表一目了然。 - Pad 使用需谨慎:
pad
指令可修正期初余额,但不要用它来 “修补” 经常性的应计。显式条目提供清晰的审计轨迹。 - 截至报告:资产负债表快照请始终使用
OPEN … CLOSE … CLEAR
,避免收入和费用科目污染负债合计。
预付费用 vs. 应计费用(快速对比)
两者容易混淆,实为镜像关系:
- 应计费用:服务已消费 现在,现金 以后 支付,形成 负债。
- 预付费用:现金 现在 支付,服务 以后 消费,形成 资产。
在 Beancount 中会计逻辑相同,只是科目不同(Assets:Prepaid:*
对应 Liabilities:Accrued:*
)。
开箱即用模板(文件开头)
以下是本文示例所需的 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 Expenses:Interest
2025-01-01 open Expenses:Professional:Audit
2025-01-01 open Liabilities:Accrued:Utilities
2025-01-01 open Liabilities:Accrued:Payroll
2025-01-01 open Liabilities:Accrued:Interest
2025-01-01 open Liabilities:Accrued:Professional
最后说明
如果你采用 现金制,根本不会做应计——费用在付款时才记录。若采用 权责发生制,上述模式对于将成本匹配到实际消费期间至关重要。
本文示例仅作一般教育参考。特定行业(如奖金、工资税、资本化门槛)请务必咨询注册会计师。