跳到主要内容

1 篇博文 含有标签「financial reporting」

查看所有标签

Beancount 中的应计费用:实用指南(附复制粘贴账本示例)

· 阅读需 7 分钟
Mike Thrift
Mike Thrift
Marketing Manager

应计费用在月末结账堆积时听起来抽象。它们是正确权责发生制会计的基石,确保你的财务报告反映经济实质,而不仅仅是现金何时流动。下面是一个清晰、以 Beancount 为先的完整演练,说明它们是什么、为何重要,以及如何在纯文本账本中记账、冲销和报告。

TL;DR ⚡

  • 应计费用 是指本期已发生但尚未付款的成本。它们在现金支出前被记录为负债。
  • 在 Beancount 中,这很简单:借记 Expenses: 科目,贷记 Liabilities:Accrued: 科目。稍后付款时清除负债。
  • 报告时,可以通过在 bean-query 中使用 CLOSE ONCLEAR,在特定日期查看应付金额,以获得干净的资产负债表快照。

2025-08-24-accrued-expenses-in-beancount-a-practical-guide

什么是应计费用?

应计费用是企业已经发生但尚未付款的成本。服务已收到或费用已产生时即记录,即使发票尚未到达或付款尚未到期。这一做法遵循权责发生制会计的 配比原则,即费用应与其帮助产生的收入在同一期间确认。

常见例子包括:

  • 员工工资 在本月末已产生,但在下月支付。
  • 公用事业费用(电、水) 你在十二月使用,但要到一月才收到账单。
  • 贷款利息 本月已累计,但尚未从账户中扣除。

在费用发生时记录这些成本,你可以更真实地反映公司该期间的财务表现。

Beancount 对此的思考(30 秒概览)

Beancount 是一个纯文本、双式记账系统。所有内容都是带日期的指令或交易,保存在文本文件中。系统基于五大核心账户类型:资产负债权益收入费用

条目始终按日期排序。关键细节是 balance 断言在同一天的交易处理之前进行检查。这在放置检查和冲销条目时尤为重要。

最后,bean-query 语言提供了强大的类 SQL 报表功能。使用 OPEN ONCLOSE ONCLEAR 等操作符,你可以为财务报表创建精确的 “截至” 视图。

建议的科目表

整洁的层级科目表是你的最佳伙伴。对于应计费用,结构非常直接。你需要:

  • 费用科目:例如 Expenses:UtilitiesExpenses:Payroll:Wages
  • 对应的负债科目:例如 Liabilities:Accrued:UtilitiesLiabilities: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

最后说明

如果你采用 现金制,根本不会做应计——费用在付款时才记录。若采用 权责发生制,上述模式对于将成本匹配到实际消费期间至关重要。

本文示例仅作一般教育参考。特定行业(如奖金、工资税、资本化门槛)请务必咨询注册会计师。