摊销
假设你一次性支付了 600 美元的年度汽车保险费。 如果你将此记录为一次性支出,则当月的账簿将显示一笔巨额费用,而接下来的 11 个月将显示零保险费用。 这会扭曲你每月的财务状况,使你难以了解真实的运营成本并有效地进行预算。
解决方案是摊销: 一种会计实务,即将单笔成本分摊到受益的时间段内。 本教程将向你展示如何使用 Fava 插件在 Beancount 中无缝实现摊销。
什么是摊销?
摊销是指在无形资产或预付项目的有效使用期内,逐步将成本作为费用列支的过程。
主要优点:
- 准确的报告: 平滑了大额支出,从而更真实地了解每月的盈利能力。
- 更好的预算编制: 使你可以为一致的月度支出编制预算,而不是为大额的、不规律的支出编制预算。
- 更清晰的现金流量分析: 将现金支付的时间与费用的确认分开。
Beancount 解决方案:fava.plugins.amortize_over
Beancount 及其 Fava Web 界面提供了一个简单而强大的插件来自动执行摊销。
步骤 1:启用插件
首先,你必须通过将以下行添加到 Beancount 文件的顶部来启用该插件:
plugin "fava.plugins.amortize_over"
重要提示:虚拟交易 请注意,此插件会生成虚拟过账。 它们动态地显示在 Fava 的报告和
bean-report等工具中(如果已加载该插件),但它们不会写回到你的.bean文件中。 你的源文件保持不变。
步骤 2:构建你的账户结构
对于典型的预付费用,你需要三个关键账户:
Assets:Bank:Checking:现金支付的来源。Assets:Prepaid:Insurance:你已支付但尚未使用的价值的临时持有账户。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或之后。