跳到主要内容

摊销

假设您一次性支付了 600 美元的年度汽车保险费。 如果您将此记录为一次性支出,则当月的账簿将显示一笔巨额费用,而接下来的 11 个月将显示零保险费用。 这会扭曲您每月的财务状况,使您难以了解真实的运营成本并有效地进行预算。

解决方案是摊销: 一种会计实务,即将单笔成本分摊到受益的时间段内。 本教程将向您展示如何使用 Fava 插件在 Beancount 中无缝实现摊销。

什么是摊销?

摊销是指在无形资产或预付项目的有效使用期内,逐步将成本作为费用列支的过程。

主要优点:

  • 准确的报告: 平滑了大额支出,从而更真实地了解每月的盈利能力。
  • 更好的预算编制: 使您可以为一致的月度支出编制预算,而不是为大额的、不规律的支出编制预算。
  • 更清晰的现金流量分析: 将现金支付的时间与费用的确认分开。

Beancount 解决方案:fava.plugins.amortize_over

Beancount 及其 Fava Web 界面提供了一个简单而强大的插件来自动执行摊销。

步骤 1:启用插件

首先,您必须通过将以下行添加到 Beancount 文件的顶部来启用该插件:

plugin "fava.plugins.amortize_over"

重要提示:虚拟交易 请注意,此插件会生成虚拟过账。 它们动态地显示在 Fava 的报告和 bean-report 等工具中(如果已加载该插件),但它们不会写回到您的 .bean 文件中。 您的源文件保持不变。

步骤 2:构建您的账户结构

对于典型的预付费用,您需要三个关键账户:

  1. Assets:Bank:Checking:现金支付的来源。
  2. Assets:Prepaid:Insurance:您已支付但尚未使用的价值的临时持有账户。
  3. Expenses:Insurance:Auto:月度费用的最终目的地。
2024-01-01 open Assets:Bank:Checking
2024-01-01 open Assets:Prepaid:Insurance
2024-01-01 open Expenses:Insurance:Auto

步骤 3:记录摊销交易

让我们记录 600 美元的保险费,该保费用于 6 个月的保单。 我们将资金从银行转移到预付资产账户,并添加元数据标签。

2024-06-01 * "支付 6 个月汽车保险费"
amortize_months: 6
Assets:Prepaid:Insurance 600.00 USD
Assets:Bank:Checking -600.00 USD
Expenses:Insurance:Auto
  • amortize_months: 6:告诉插件将价值分摊到 6 个月内。
  • 该交易将现金转移到预付资产。
  • Expenses:Insurance:Auto:最终的、无编号的条目告诉插件在哪里记录月度费用。

该插件生成每月条目,从交易月份的第一天开始,借记 Expenses:Insurance:Auto 并贷记 Assets:Prepaid:Insurance 100 美元。

实际例子

年度软件许可证

2024-01-15 * "Adobe Creative Suite 年度许可证"
amortize_months: 12
Assets:Prepaid:Software 1200.00 USD
Assets:Bank:Checking -1200.00 USD
Expenses:Software:Adobe

结果: 在 Expenses:Software:Adobe 中,每个月确认一笔 100.00 美元的费用,持续 12 个月。

专业服务预付款

; 季度法律预付款,从支票账户预先支付
2024-01-05 * "Q1 法律服务预付款"
amortize_months: 3
Assets:Prepaid:Professional 4500.00 USD
Assets:Bank:Checking -4500.00 USD
Expenses:Professional:Legal

结果: 在 Q1,每个月确认一笔 1500.00 美元的法律费用。

设备折旧(固定资产)

固定资产折旧需要更正式的方法,以在您的账簿上保留资产的原始成本。 这可以通过使用备抵资产账户来完成,通常命名为 Accumulated-Depreciation

该过程涉及两个单独的交易:

; 打开所需的账户,包括备抵资产账户
2024-01-01 open Assets:Equipment:Computers:Cost
2024-01-01 open Assets:Equipment:Computers:AccumDep
2024-01-01 open Expenses:Depreciation:Computers

; 步骤 1:记录初始购买。 这是一个简单的、非摊销的交易。
2024-01-20 * "购买 MacBook Pro 用于业务"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

; 步骤 2:设置折旧计划。 此零和交易
; 告诉插件创建每月折旧条目。
2024-01-20 * "MacBook Pro 折旧计划"
amortize_months: 36
Expenses:Depreciation:Computers 3000.00 USD
Assets:Equipment:Computers:AccumDep -3000.00 USD

结果: 该插件将生成一个每月条目,持续 36 个月,该条目借记 Expenses:Depreciation:Computers 83.33 美元,并贷记备抵资产账户 Assets:Equipment:Computers:AccumDep 83.33 美元。

报告和验证

1. 使用断言监控预付余额

使用 Beancount 的 balance 指令来验证您的预付账户是否被正确地提用。

注意:断言日期必须在虚拟过账的日期或之后(默认为每月 1 日)。 一个好的做法是将其日期定为 2 日。

; 对于保险示例,请检查第一个月后的余额。
2024-07-02 balance Assets:Prepaid:Insurance 500.00 USD

2. 使用 bean-query 进行高级验证

为了快速了解您的预付余额如何随时间变化,您可以在终端中使用 bean-query

bean-query your-ledger.beancount "SELECT date, account, SUM(position) WHERE account ~ 'Prepaid' GROUP BY date, account ORDER BY date"

局限性和最终提示

  • 仅限平均分配amortize_over 插件专为在整数月内进行平均分配而设计。 它不处理不规则的计划或每日按比例分配。 对于这些情况,需要手动方法。
  • 税务会计与管理会计: 此处显示的摊销计划用于管理会计(清楚地了解您的财务状况)。 如果您正在进行法定簿记,请确保您的折旧计划符合当地法规 (GAAP/IFRS)。
  • 日期处理: 该插件在每个月的第一天生成月度条目,从源交易的月份开始。 例如,如果您希望摊销从 2 月开始,请将源交易的日期定为 2024-02-01 或之后。