跳到主要内容

3 篇博文 含有标签「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

最后说明

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

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

绿色账本:使用 Beancount 追踪 ESG

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

在当今世界,环境、社会和公司治理 (ESG) 指标不再仅仅是流行语;它们是衡量公司健康状况和未来生存能力的重要指标。但如何将这些关键的可持续发展洞察与传统的财务会计整合起来呢?答案是 Beancount,一个开源的、纯文本复式记账系统,它提供了一个出人意料的强大且灵活的解决方案来弥合这一差距。

想象一下,将你零散的可持续发展报告转化为一个流线型、自动化的系统,该系统可以追踪从碳排放到供应商多样性的一切,所有这些都在你现有的财务工作流程中进行。Beancount 通过将 ESG 数据视为与财务交易“一等公民”来使这成为可能。

2025-06-22-esg-tracking

建模ESG数据:Beancount之道

Beancount固有的灵活性是其在ESG方面的强大优势。你无需使用孤立的电子表格,而是可以通过以下几种关键技术,将可持续发展指标直接嵌入到你的财务结构中:

  • 专用账户和商品: 将你的环境足迹视为另一种货币。你可以创建诸如 Metrics:Emissions:CO2e 的账户来追踪碳排放。这些排放甚至可以被视为一种商品(例如,二氧化碳当量单位,tCO2e),允许你在交易中记录具体数量。例如,一次航班购买除了记录货币成本外,还可以贷记 Emissions:CO2e 账户 +0.3 tCO2e
  • 自定义元数据标签: Beancount的键值元数据非常适合添加上下文信息。你可以使用 CO2e: 0.3 tScope: 3 等标签标记交易,以表示其碳影响或温室气体议定书(GHG Protocol)范围。这将财务支出与其环境后果直接关联起来,提供更丰富、更全面的图景。
  • 结构化分类标签: 遵循**温室气体议定书(GHGP)**等标准至关重要。你可以使用一致的标签或账户命名约定,例如 Metrics:Emissions:Scope1Metrics:Emissions:Scope2Metrics:Emissions:Scope3,以便轻松分类和报告直接排放、能源相关排放和价值链排放。

这种适应性强的方法意味着,随着ESG标准的演变,你可以调整你的账本结构,而无需进行彻底的改造。


Beancount 与专业 ESG 工具:战略选择

尽管 Persefoni 或 SAP Green Ledger 等专用 ESG 平台提供高度自动化、量身定制的解决方案,但 Beancount 仍是一个引人注目的替代方案,尤其适合那些追求透明度和控制权的用户。

特性Beancount(纯文本)专业 SaaS(例如:Persefoni, Plan A)企业 ERP 集成(例如:SAP Green Ledger)
数据建模用户自定义账户和元数据;灵活但需要手动构建。预定义模式;活动输入引导和自动排放转换。排放量直接映射到 ERP 交易和主数据。
排放因子用户提供或通过自定义脚本集成;需要手动更新。内置、定期更新的排放因子库;自动计算。与企业数据和标准因子集成,确保审计级别的准确性。
数据集成通过自定义 Python 脚本/API 实现开放架构;需要开发以实现自动化导入。许多预构建连接器可连接外部数据源(公用事业、ERP、差旅系统)。与 ERP 内部的核心业务流程和数据流进行原生集成。
报告与审计自定义查询和 Fava 报告;高度可定制但需要用户设计。版本控制(Git)提供透明的审计追踪。丰富的仪表板,符合标准(GHG、TCFD、CDP)的预构建报告。平台内审计日志和期间锁定。ERP 内部集成报告;专为“合理保证”可审计数据而设计。
成本与可访问性免费开源;需要 Beancount/脚本知识。商业 SaaS,有订阅费用;技术开销较少。企业级软件,可能涉及高昂的许可和实施成本;需要特定的 ERP 专业知识。

Beancount 是一个 DIY 强手: 它为你提供无与伦比的灵活性和透明度,非常适合个人或技术娴熟的小型组织。你完全拥有自己的数据,避免供应商锁定。

专业工具提供一站式解决方案: 它们擅长自动化数据收集、内置排放因子数据库和现成的合规报告,通常成本更高且灵活性较低。

混合方法也同样可行:使用 Beancount 进行详细的内部追踪和核对,然后将汇总数据导出到外部平台,用于高层利益相关者报告。


实际应用:Beancount 在 ESG 实践中的作用

Beancount 的多功能性使其适用于以下几个关键的 ESG 用例:

  • 追踪范围 3 排放: 范围 3 排放(来自你的价值链)是最具挑战性的追踪对象,但可以通过将供应商排放数据与采购交易关联起来进行整合。Beancount 为这些复杂数据提供清晰的审计追踪,从而实现更好的分析并精确定位数据源。
  • 可持续性审计与鉴证: 像财务数据一样,ESG 数据需要可验证。Beancount 允许你将每条 ESG 条目关联到原始凭证(例如,水电费账单、第三方验证声明),从而提供细致的审计追踪,以实现透明度和鉴证。
  • 欧盟 CSRD/ESRS 合规报告: 对于面临 CSRD 等严格监管的公司,Beancount 可以作为量化披露的中央存储库。虽然它不会自动将报告格式化为 XBRL,但它提供了生成符合合规要求数据所需的粒度化、可审计数据。
  • 碳足迹分析与管理会计: 将碳视为管理会计的另一个维度。通过将排放量分配到利润中心或产品代码,你可以计算诸如“每美元收入的排放量”等指标,并识别碳热点,从而推动更明智的可持续发展决策。

你的 Beancount ESG 账本最佳实践

为了最大限度地发挥 Beancount 在 ESG 方面的作用,请考虑以下最佳实践:

  1. 为 ESG 设计清晰的会计科目表: 像管理你的财务账户一样,深思熟虑地构建你的 ESG 账户(例如,Metrics:Emissions:Scope1:Fuel)。
  2. 一致地使用元数据: 利用标签(例如,Scope: 3FactorSource: EPA2024)以确保上下文的一致性并便于查询。
  3. 平衡粒度与可管理性: 关注重要指标,避免账本被不必要的细节淹没。
  4. 谨慎自动化: 使用 Python 脚本进行数据导入和验证,但要确保强大的错误检查和清晰的自动化流程文档。
  5. 利用版本控制: 使用 Git 跟踪账本的每一次更改,提供 ESG 数据的透明且可审计的历史记录。
  6. 连接文档和证据: 将源文件(例如,水电费账单的 PDF 文件)链接到账本条目,以便在审计期间轻松验证。
  7. 利用 Fava 获取洞察: 配置 Fava 以显示自定义的 ESG 图表和报告,使你的可持续发展数据具有可操作性,并对非技术利益相关者可访问。
  8. 及时了解标准: ESG 报告是动态的;随着新法规和框架的出现,请准备好调整你的 Beancount 结构。

绿色未来,纯文本

尽管 Beancount 目前缺乏原生的 ESG 智能或即插即用报告功能,但其开源特性为增强功能提供了巨大的机会。社区驱动的碳核算插件、标准化的 ESG 账本模板以及与排放因子 API 的更好集成,都将显著提升其能力。

随着企业界越来越接受“绿色账本”,Beancount 已准备就绪,成为一个灵活、透明且可审计的解决方案。通过以与财务数据相同的严谨性整合 ESG 数据,Beancount 赋能组织不仅满足合规要求,而且推动有意义的可持续发展举措。

你准备好将你的 ESG 数据带入纯文本革命了吗?

通过自定义链接和查询提升你的 Beancount 体验

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

Beancount,这个深受开发者和财务爱好者喜爱的复式记账系统,以其简洁性而强大。但是,对于那些希望在 Beancount 的网页界面 Fava 中获得更多控制和更快导航的用户来说,自定义侧边栏链接和 SQL 查询可以将你的工作流提升到新的水平。

在本指南中,我们将向你展示如何:

  • 在 Fava 的侧边栏添加快速访问链接
  • 使用 SQL 查询进行高级筛选和分析
  • 为月度审查或异常检测自定义你的工作流

为什么要自定义 Fava?

Fava 已经是查看你的 Beancount 账本的精美界面,但随着你的日记账不断增长,对更好快捷方式和更智能查询的需求也随之增加。

这解决了以下痛点:

  • 重复导航时间范围
  • 跨嵌套账户筛选交易
  • 更快地发现负余额或异常

✨ 自定义侧边栏链接

让我们从使用简单的侧边栏快捷方式改进你的日常工作流开始。这些链接会出现在 Fava 的左侧边栏,可以直接带你进入筛选视图,例如本月交易或上月收入。

将以下行添加到你的 Beancount 文件中:

2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="

它们的作用:

  • 本月: 打开筛选到当前月份的交易视图。
  • 上月: 立即跳转到上个月——非常适合月末审查。
  • 清除所有: 重置筛选器,再次显示所有条目。

这些快捷方式消除了手动输入时间,让你的 Fava 体验更加流畅和个性化。

🔍 自定义 SQL 查询

为了获得更深入的洞察,Fava 的 SQL 界面功能强大得令人难以置信。这是一个查询,用于查找符合特定模式的账户中的所有负余额——非常适合标记异常或有问题的交易。

SELECT account, units(sum(position)), sum(position)
WHERE number(units(position)) < 0
AND account ~ '.*:BCM:.*'
AND date >= DATE(2021,12,9)
AND date < DATE(2022,1,9)

解析:

  • account ~ '.*:BCM:.*':筛选名称中包含 :BCM: 的账户。
  • number(units(position)) < 0:标记负余额(例如,预算超支)。
  • 日期筛选器将结果范围缩小到特定的 1 个月窗口。

用例:

  • 发现重复支出或错误过账等错误
  • 审计特定供应商或类别
  • 快速提取可操作的预算洞察

🛠 专业提示:结合链接 + 查询

虽然 Fava 不允许直接链接到自定义查询,但你可以通过以下方式养成每月审查的习惯:

  • 使用“本月”链接开始你的审查
  • 在另一个窗格中打开你保存的查询选项卡
  • 同时审查两者——先筛选,然后深入挖掘

这种组合有助于你在异常恶化之前发现它们确保你的账本保持整洁

总结

Beancount 的设计理念是极简,但像这些小小的增强功能却能带来巨大的效率提升。无论你是在审查预算、调试异常余额,还是仅仅为了节省点击次数,自定义链接和 SQL 查询都能为你提供更大的能力和更少的阻碍。

额外提示: 如果你正在使用 Fava 的自定义报告,你甚至可以构建完全符合你个人财务习惯的仪表板。

准备好掌控一切了吗?

从小处着手:添加“本月”链接。然后构建你自己的查询。未来的你会感谢你的。

想要更多此类技巧?订阅我们的新闻通讯或在 Beancount.io 探索更多 Beancount 秘籍。