跳到主要内容

86 篇博文 含有标签「beancount」

查看所有标签

为你的小企业财务排毒 —— Beancount 方式

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

在30天内将一个混乱的总账转换为平静、现金充裕的企业——使用纯文本会计。


2025-09-04-detox-your-small-business-finances

简要总结

  • 分离、简化和锁定你的账簿,使用精简的科目表、一致的导入和自动化的余额检查。
  • 显示重要信息——销货成本、管理费用、现金储备——通过快速的bean-query报告。
  • 消除噪音(未使用的订阅、重复工具)和编码良好习惯(每周对账、每月结账、附加收据)。
  • 让税务季节变得无聊,通过在一个地方保持对账单、收据和余额可验证。

为什么要"排毒"?

小企业的财务混乱不仅仅是杂乱无章——而是昂贵的。它隐藏浪费的支出,模糊你的真实盈利能力,并将税务季节变成疯狂的寻宝游戏。财务排毒是一个专注的30天重置:你识别什么推动(和泄露)金钱,移除复杂性,然后制度化简单、可重复的例程来保持清洁。

Beancount是这项工作的完美工具,因为它是透明的、可脚本化的和可验证的。与黑盒软件不同,纯文本总账意味着每个数字都是可解释的。每个检查和余额都可以通过指令和查询自动化,创建一个强制清晰度的自审计系统。这个指南将带你通过一个四周计划来实现这一点。


第0周 —— 设定你的基线

在你能够清理之前,你需要一个坚实的基础。这周是关于定义你财务世界的结构。

创建精简的科目表

你的科目表是你财务系统的骨架。这里的目标是极简主义。不要为每一个你可能有的支出创建账户。从你今天使用的基本要素开始;你总是可以稍后添加更多。杂乱的科目表鼓励错误的分类,并使高级分析变得困难。

这里是一个简单、有效的起点:

; 核心实体
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Assets:Bank:Savings USD
2025-01-01 open Liabilities:CreditCard:Business USD
2025-01-01 open Income:Sales
2025-01-01 open Expenses:COGS
2025-01-01 open Expenses:Overhead:Rent
2025-01-01 open Expenses:Overhead:Utilities
2025-01-01 open Expenses:SaaS
2025-01-01 open Equity:Opening-Balances

锁定你可以验证的余额

纯文本会计中最强大的功能是断言现实的能力。balance指令告诉Beancount:"在这个日期,这个账户恰好有这么多钱。"如果不是,Beancount会抛出一个错误。这是你的主要安全网。

开始时,使用padbalance结合来从银行对账单初始化你的账户。pad指令创建一个交易,强制账户到正确的开始余额,将差异记入权益账户。

; 从对账单初始化
2025-01-01 pad Assets:Bank:Checking Equity:Opening-Balances
2025-01-01 balance Assets:Bank:Checking 12345.67 USD

**谨慎提醒:**谨慎使用pad。它是为了干净的开始,而不是为了掩盖反复出现的对账错误。


第1周 —— 分离和简化流程

有了结构到位,是时候澄清资金如何通过你的业务流动了。

保持业务 ≠ 个人

这是小企业财务的黄金法则。混合资金是造成混乱和税务头痛的原因。

  • 维护一个专门的企业银行账户和一张企业信用卡。
  • 在你的总账中反映这种分离:Assets:Bank:Business:Checking, Liabilities:CreditCard:Business
  • 如果你给自己付款,将其记录为分配到Equity:Owner-Draws。永远不要直接从企业账户分类个人支出。

标准化供应商类别

你为AWS、Google Cloud和Vercel付费吗?不要创建三个单独的账户。将它们全部映射到一个逻辑类别,如Expenses:Cloud。避免创建你实际上不会分析的微账户。目标是看到模式,而不是用自己的账户跟踪每个单独的供应商。


第2周 —— 自动化输入和收据

手动数据输入缓慢、容易出错且不可持续。这周是关于建立一台机器来可靠地为你的总账提供数据。

建立无戏剧的导入路径

Beancount的导入框架让你教会它如何从你的银行读取CSV或OFX文件并自动生成交易。投入时间一次性设置这个,你将在长期内节省数百小时。将你的导入规则保持在版本控制下(如Git),以便你的系统是可重复的和备份的。

  • 从Beancount官方的导入外部数据指南开始。
  • 对于更交互式的工作流程,考虑像beancount-import这样的工具,它提供半自动匹配的Web界面。
  • 许多用户依赖内置的ingest或更新的beangulp框架来构建他们的自定义导入器。选择一个并坚持使用以保持一致性。

将文档附加到它们所属的地方

没有收据的交易是一个没有根据的声明。Beancount及其Web界面Fava使得将源文档链接到条目变得轻而易举,创建了一个不可动摇的审计轨迹。

你有两个很好的选择:

  1. **文档文件夹+指令:**将所有收据和对账单存储在专用文件夹中。然后,使用document指令将文件链接到交易。
  2. **在Fava中拖放:**简单地将PDF或图像文件拖到Fava界面中的交易上。Fava自动存储文件并在你的总账文件中插入正确的document指令。
; 在你的主总账文件中,告诉Fava你的文档在哪里
option "documents" "/home/acme/docs"

; 将收据链接到特定的交易记录
2025-08-07 * "Figma" "Monthly Subscription"
Assets:CreditCard:Business -12.00 USD
Expenses:SaaS 12.00 USD
document: "receipts/figma-2025-08-07.pdf"

第3周 —— 看到真相(你将重复使用的快速查询)

你的总账现在干净并充满数据。是时候向它提出重要问题了。启动bean-query命令行工具以获得即时答案。

1) 我的钱在哪里?

快速获取你的流动资产快照。

bean-query business.beancount 'BALANCES FROM year = 2025 AND (account ~ "Assets:Bank" OR account ~ "Liabilities:CreditCard")'

这给你一个即时的、实时的现金头寸视图,而无需登录多个银行门户。

2) 我在管理费用vs.销货成本上花了多少?

了解你的钱真正去了哪里。你是在非必需的管理费用上花费更多,还是在直接与交付产品相关的成本(销售商品成本)上花费更多?

SELECT
account,
units(sum(position))
WHERE
account ~ "^Expenses:(Overhead|COGS)" AND year = 2025
GROUP BY
account
ORDER BY
account

这个查询将你的核心运营成本与管理负担分开,这是盈利能力的关键洞察。

3) 哪些订阅看起来像"僵尸"?

找到经常在雷达下飞行的重复性小额费用。这些"僵尸"订阅可能会让你的现金流流失。

SELECT
payee,
COUNT(*) AS num_transactions,
SUM(number) AS total_spent
WHERE
account ~ "^Expenses:SaaS" AND date >= '2025-01-01'
GROUP BY
payee
ORDER BY
num_transactions DESC,
total_spent DESC

这个查询立即显示你经常付款的供应商。如果你看到一个你不认识或不再需要的,是时候取消了。


第4周 —— 整理和锁定系统

最后一周是关于建立保持你的财务永远清洁的习惯和护栏。

设置简单的预算

Fava可以从你的总账读取budget指令,并在其报告中显示有用的进度条,显示你是否在正轨上。这提供了一个温和、持续的支出目标提醒。

; 将SaaS支出限制在每月$100
2025-01-01 custom "budget" Expenses:SaaS "monthly" 100.00 USD

为关键的可变支出类别设置这些,如软件、广告或承包商,以在漂移成为问题之前注意到它。

每次都关闭月份

建立一个简单、不可协商的月度结账流程:

  1. **对账:**对于每个银行和信用卡账户,添加一个balance断言,匹配你月度对账单上的最终数字。
  2. **附加:**使用document指令将PDF对账单本身附加到balance条目。
  3. **报告:**运行你保存的三个查询(现金、管理费用/销货成本、订阅),并将输出粘贴到简短的月度审查笔记中。

余额断言是一个自动触发器。如果你的总账与银行对账单不匹配,Beancount将抛出错误,准确告诉你在哪里查找差异。


让税务季节变得无聊(以好的方式)

通过遵循这个系统,你将税务准备从危机转化为简单的报告练习。

  • 收据附加到交易,所以没有疯狂的搜索。在Fava中,你距离任何支出的源文档只有一次点击。
  • 税务相关项目可以被标记(例如,#tax-deductible),允许你用bean-query为你的会计师提取干净的报告。
  • 年末余额被锁定和验证balance断言,给你和你的准备者对数字的信心。

30天检查清单(打印这个)

  • 第1-3天
    • 创建最小的科目表。
    • 使用最新对账单为每个银行/卡添加pad + balance
  • 第4-10天
    • 设置一个导入管道,并将你的规则提交到版本控制。
    • 回填90天的交易;运行第一个BALANCES快照。
  • 第11-15天
    • 将供应商标准化到各自的账户(SaaS、云、运输等)。
    • 为对账期间附加对账单PDF;确认它们出现在Fava中。
  • 第16-20天
    • 运行管理费用vs.销货成本查询;修复任何错误分类的项目。
    • 运行订阅频率查询;取消或整合未使用的服务。
  • 第21-25天
    • 通过custom "budget"为关键可变支出添加一到两个预算上限。
    • 将你最重要的三个bean-query命令保存到脚本中以便于重用。
  • 第26-30天
    • 用月末balance断言对账所有账户。
    • 写一个简短的"月度结账"笔记,总结关键数字并链接到文档。

你将重复使用的常见片段

清洁的支出记录

2025-08-05 * "Figma" "Pro plan"
Expenses:SaaS 12.00 USD
Assets:Bank:Checking -12.00 USD

来自对账单的余额断言

2025-09-01 balance Assets:Bank:Checking  8423.17 USD

租金的预算护栏

2025-01-01 custom "budget" Expenses:Overhead:Rent "monthly" 2500.00 USD

保持简单,保持脚本化

Beancount驱动的财务排毒的理念很简单:

  • **脚本化你重复的内容:**自动化导入和报告。
  • **让断言大声失败:**它们是你的安全护栏,而不是不便。
  • 偏好更少、更清晰的账户而不是完美的、颗粒化的分类。

采用这些习惯,你的业务将在紧密的反馈循环上运行:每日现金可见性,每周可见的支出漂移,和真正无聊的年终。这就是这种排毒设计要提供的清晰度和控制。


参考文献和进一步阅读

这篇文章仅用于教育目的,不是税务或法律建议。

理解 Beancount 中的日记账分录

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

日记账分录是复式记账的核心,在 Beancount 中,你编写的每一条 * 交易都是一条日记账分录。本指南解释了关键要点——借方与贷方、调整分录和冲销分录——并展示它们如何干净地映射到 Beancount 的纯文本语法。你将学会以最少的繁琐保持账目精准。


2025-09-02-journal-entries-in-beancount

快速回顾:什么是日记账分录?

日记账分录是对金融交易的正式、带日期的记录。它以 借方贷方 的形式表达,保持基本会计等式平衡:

资产=负债+所有者权益资产 = 负债 + 所有者权益

在复式记账体系中,每笔交易至少影响两个账户,总借方必须等于总贷方。这一简单规则确保了后续的利润表、资产负债表等财务报告的可信度和准确性。


一分钟了解借方与贷方

借方与贷方的概念起初可能让人困惑,但其实只需记住几个简单规则。可以这样思考:“价值从哪里来?”(贷方)以及 “价值到哪里去?”(借方)。

以下是五大核心账户类型的增减规则速查表:

账户类型增加方式
资产借方
费用借方
负债贷方
所有者权益贷方
收入贷方

Beancount 中的日记账分录长什么样

Beancount 使用简洁、易读的文本指令记录交易。每笔交易必须对每种商品(例如 USD、EUR、AAPL 股票)平衡为零。若不平衡,Beancount 会报错。

下面是一个购买咖啡的基本交易示例:

2025-09-10 * "Coffee Bar" "Team coffee"
Expenses:Food:Coffee 18.00 USD
Assets:Bank:Checking -18.00 USD

注意两行记账(带账户的行)相加为零:$18.00 + (-$18.00) = 0

你可以在叙述中直接使用 标签(如 #clientX)进行过滤,或使用 链接(如 ^INV-2025-001)将相关分录关联起来。

例如,下面展示如何将发票与付款关联:

; 首先,记录发送给客户的发票
2025-09-15 * "Acme Corp" "Invoice 2025-001 #clientX ^INV-2025-001"
Assets:AccountsReceivable 1000.00 USD
Income:Consulting -1000.00 USD

; 稍后,记录付款并回链到原始发票
2025-09-28 * "Acme Corp" "Payment on ^INV-2025-001"
Assets:Bank:Checking 1000.00 USD
Assets:AccountsReceivable -1000.00 USD

#clientX 标签让你轻松筛选该客户的所有交易,^INV-2025-001 链接则在报告中创建两条分录之间的可追溯关系。


常用日记账分录(可直接粘贴)

以下是几类常见业务交易的 Beancount 格式示例。

所有者投入现金

所有者为创业投入个人资金。

2025-01-01 * "Owner" "Initial capital contribution"
Assets:Bank:Checking 10000.00 USD
Equity:Owner-Capital -10000.00 USD

含税现金销售

客户以现金购买商品,需收取 8% 销售税,税金稍后上缴政府。

2025-01-05 * "Walk-in Customer" "Cash sale with 8% tax"
Assets:Cash 108.00 USD
Income:Sales -100.00 USD
Liabilities:Tax:Sales -8.00 USD

信用销售(发票)与收款

提供服务并开具发票,随后收到付款。

2025-01-10 * "Acme Corp" "Consulting invoice ^INV-2025-002"
Assets:AccountsReceivable 2500.00 USD
Income:Consulting -2500.00 USD

2025-01-30 * "Acme Corp" "Payment on ^INV-2025-002"
Assets:Bank:Checking 2500.00 USD
Assets:AccountsReceivable -2500.00 USD

信用卡费用

使用公司信用卡购买办公用品。

2025-01-12 * "OfficeMax" "Supplies on credit card"
Expenses:Office:Supplies 75.00 USD
Liabilities:CreditCard -75.00 USD

薪资(简化模型)

记录工资总额、员工税款预扣以及银行净付款。

2025-01-31 * "Payroll" "January wages and withholdings"
Expenses:Payroll:Wages 2000.00 USD
Liabilities:Taxes:Withheld -400.00 USD
Assets:Bank:Checking -1600.00 USD

月度折旧

记录资产(如笔记本电脑)的月度折旧费用。

2025-01-31 * "Depreciation" "Laptop, straight-line"
Expenses:Depreciation 100.00 USD
Assets:Equipment:AccumDepr -100.00 USD

预付费用与月度摊销

一次性支付全年保险费,然后在每月确认费用。

; 1. 支付全年保费
2025-01-01 * "InsureCo" "Annual insurance premium"
Assets:Prepaid:Insurance 1200.00 USD
Assets:Bank:Checking -1200.00 USD

; 2. 在一月末确认一个月费用
2025-01-31 * "InsureCo" "Amortize 1/12 of insurance"
Expenses:Insurance 100.00 USD
Assets:Prepaid:Insurance -100.00 USD

递延收入与月度确认

客户预付 3 个月订阅费,随后按月确认收入。

; 1. 客户预付服务费
2025-02-01 * "Subscriber" "3-month plan prepaid"
Assets:Bank:Checking 300.00 USD
Liabilities:Unearned:Subs -300.00 USD

; 2. 在二月末确认第一个月收入
2025-02-28 * "Recognition" "Recognize month 1 of 3"
Liabilities:Unearned:Subs 100.00 USD
Income:Subscriptions -100.00 USD

坏账准备与核销

为可能无法收回的应收账款计提准备金,随后核销具体坏账。

; 1. 按应收账款的 2% 计提准备金
2025-03-31 * "Provision" "2% of A/R for doubtful accounts"
Expenses:BadDebt 200.00 USD
Assets:AllowanceForDoubtful -200.00 USD

; 2. 核销已确认无法收回的发票
2025-04-15 * "Write-off" "Customer XYZ invoice"
Assets:AllowanceForDoubtful 150.00 USD
Assets:AccountsReceivable -150.00 USD

期末存货与成本调整

期末通过调整存货账户计算本期销货成本(COGS)。

2025-03-31 * "COGS adjustment" "Periodic inventory method"
Expenses:COGS 4500.00 USD
Assets:Inventory -4500.00 USD

调整分录 vs. 冲销分录

调整分录 在会计期间(如月末或季末)记录,用于将收入与费用准确匹配到实际发生的期间,涵盖应计、递延以及折旧等估计。

冲销分录 是可选的,通常在新期间的第一天录入,用来完全冲销前一期的特定调整分录,以简化后续记账。冲销应计后,你可以用标准方式记录实际现金交易,而无需记得再对负债账户进行拆分。

示例:计提并冲销水电费

假设你需要在一月计提水电费,但账单要到二月才收到。

; 1. 在一月末计提预计费用
2025-01-31 * "Accrual" "Estimate January utilities expense"
Expenses:Utilities 500.00 USD
Liabilities:Accrued:Utilities -500.00 USD

; 2. (可选)在下期第一天冲销该计提
2025-02-01 * "Reversal" "Undo January utilities accrual"
Liabilities:Accrued:Utilities 500.00 USD
Expenses:Utilities -500.00 USD

; 3. 二月收到实际账单并付款
; 实际账单为 520 美元。由于已冲销,你可以直接全额记入费用。
2025-02-10 * "City Utilities" "Payment for January bill"
Expenses:Utilities 520.00 USD
Assets:Bank:Checking -520.00 USD

注:大纲中的示例展示了分拆最终付款的方式。冲销分录是一种简化最终付款录入的替代方案。


Beancount 日记账分录检查清单

请按以下步骤确保分录整洁、正确:

  1. 日期(YYYY-MM-DD)和交易标记 (*) 开头。
  2. 添加 付款方 与描述性 叙述。使用 #标签^链接 提高可搜索性。
  3. 至少包含 两行记账,使每种商品的合计为零。
  4. 使用正确的 账户名称,遵循五大类型:Assets, Liabilities, Equity, Income, Expenses
  5. 可选地添加 元数据(如 document: "invoices/INV-2025-001.pdf")以提升可追溯性。

常见陷阱(以及 Beancount 如何帮助)

  • 记账不平衡:如果借方与贷方不等于零,Beancount 会拒绝该分录。这是防止错误的核心功能。你甚至可以留空一行金额,Beancount 会自动计算。
  • 账户符号错误IncomeEquityLiabilities 增加时使用贷方(在 Beancount 中通常为负数),容易写错。若写错,报告会显得异常,但平衡规则仍提供安全网。
  • 缺少链接:忘记将发票与付款关联会导致追踪困难。始终使用 ^链接 可创建可审计的追踪链。

下一步该去哪里

  • Beancount 语言与平衡规则:深入官方文档。
  • 语法速查表:所有 Beancount 指令的便捷参考。
  • 借方/贷方入门:如果你对会计规则还不熟悉,这是很好的起点。
  • 调整/冲销分录:更详细的会计理论文章。

附录:会计术语 → Beancount 映射表

此快速翻译指南帮助你将会计指令映射为 Beancount 语法。

会计指令Beancount 操作
借记费用正数金额记入 Expenses: 账户
贷记负债负数金额记入 Liabilities: 账户
应计收入Assets:AccountsReceivable +
Income:* -
递延收入Assets:Bank:* +
Liabilities:Unearned:* -
确认递延收入Liabilities:Unearned:* +
Income:* -

有了这些模式与示例,你几乎可以在 Beancount 中干净地建模任何业务事件,确保财务报告毫无意外。

Beancount 中实现快速可靠的月末结账的 10 步实用指南

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

如果你的账本是纯文本格式,月末结账既可以快速又可审计。这个过程不必像电子表格和计算器的疯狂混乱。本文指南提炼了一套简洁、可重复的流程,专为 Beancount 及其网页界面 Fava 设计,围绕余额断言、智能导入和轻量检查。

以下是无痛结账的检查清单:

2025-09-02-month-end-close

  1. 收集对账单并导入所有原始交易。
  2. 标准化付款人、描述和元数据。
  3. 使用 balance 断言对每个现金、银行和信用账户进行对账。
  4. 核对转账和账户间的移动。
  5. 更新投资价格并验证估值。
  6. 在账本中附加或关联文档(收据、发票)。
  7. 运行查询和仪表板进行损益和差异检查。
  8. 根据需要计提应计项目和调整。
  9. 使用自动检查验证账本。
  10. 提交、打标签并归档本月。

1. 设定基本规则(并重复使用)

一致的结账始于稳固的基础。你的科目表和关键 Beancount 选项应在中心声明,并且很少更改。诸如 operating_currencydocuments 处理等选项可确保报告和导入每次都表现可预测。

提示: 将你的 options 文件视为“基础设施”。更改它可能会影响数字的计算方式。请在 Git 中谨慎进行版本管理。

2. 导入所有数据——此后不再手动输入

自动化数据导入是加快结账的最大提速手段。使用 Beancount 强大的导入工具和社区构建的导入器,拉取银行流水、信用卡 CSV/OFX 文件、经纪数据和工资报告。

目标是一次性命令导入,生成平衡的分录,你只需审阅并提交。这消除了手动录入数据的需求,而手动录入是错误和延迟的主要来源。

3. 预先标准化付款人和元数据

干净的数据才是可靠的数据。在导入过程中标准化付款人、说明和标签,使搜索、规则和报告在每个月都保持准确。

Beancount 的插件系统允许在加载文件时添加轻量级的转换和校验。这非常适合强制自定义一致性检查,或使用内置的 noduplicates 插件在重复交易成为问题之前标记出来。

4. 使用 balance 断言进行对账

对于每个有对账单的账户(支票、储蓄、信用卡),使用 Beancount 的 balance 指令断言期末余额。这行简单的指令将对账从手动目测检查转变为精确的自动化测试。

2025-01-01 open Assets:Cash
2025-01-01 open Assets:Bank
2025-01-01 open Expenses:Food
2025-01-01 open Income:Salary
2025-01-01 open Equity:Opening-Balances

2025-01-01 balance Assets:Cash 1000.00 USD
2025-01-01 balance Assets:Bank 5000.00 USD
2025-01-01 balance Equity:Opening-Balances -6000.00 USD

由于余额在当天开始时进行检查,使用下个月的第一天作为月末对账单最为简便。如果 Beancount 计算的余额与你的断言不符,你将收到精确的错误信息和一个调查起始日期。始终先修正真实来源(你的交易);不要“强行”对账。

5. 核对账户间转账

确保每笔转账在交易的双方都出现。例如,从支票账户向信用卡的付款应在两个账户中都有体现。转账不匹配是对账常见的痛点。

仅在首次设置账户时使用 pad 指令来设定历史期初余额。它是一个初始化工具,而非用于修复月末差异的对账支撑。

6. 验证投资持仓和价格

要准确了解净资产,需要获取投资和外币的最新市场价值。使用 Beancount 的 price 指令记录这些在结账日期的价值。

2025-01-01 price AAPL 150.00 USD
2025-01-01 price GOOG 2800.00 USD
2025-01-01 price EUR 1.10 USD

许多工具可以自动获取这些价格。更新后,重新运行资产负债表或净资产报告即可看到估值变化。

7. 附加收据和原始文档

通过将交易链接到原始文档,保持清晰的审计轨迹。在主 Beancount 文件中使用 documents 选项指向收据和发票的存档。

option "documents" "/path/to/documents"

如果按日期命名文件(例如 2025-08-13.vendor.receipt.pdf),Beancount 和 Fava 能自动发现并链接它们,使得只需一次点击即可为任意交易调出收据。

8. 使用 Fava 和 BQL 回顾本月

快速的反馈回路至关重要。使用 Fava 直观检查财务。其图表和报告非常适合按类别切分支出、查看收入趋势以及一目了然地发现异常。

如需更精确的检查,可使用 Beancount Query Language (BQL)。例如,以下查询可提供 2025 年 8 月所有支出的排名细分:

SELECT account, sum(position) AS total
WHERE date >= 2025-08-01 AND date < 2025-09-01 AND account ~ "Expenses"
GROUP BY account
ORDER BY total DESC

9. 计提应计项目和调整

如果使用权责发生制,会计月末调整应记录为明确的、带日期的交易。这可以包括应计费用(如尚未收到的水电费账单)、预付费用摊销或收入确认。保持简洁并在说明中做好文档记录,便于未来审阅时理解。

10. 验证、打标签并归档

在最终确定本月之前,运行一次结构完整性检查:

beancount -f myfile.beancount check

此命令会捕获不平衡、引用未开设的账户以及其他常见错误。修复所有标记的问题。

确认无误后,将更改提交到版本控制(如 Git),并使用清晰的提交信息和标签,例如 close-2025-08。最后,归档银行对账单并视本月已锁定。

可适配的简易结账脚本

你可以使用简单的 shell 脚本自动化大部分步骤。这将把结账转化为单一、可重复的命令。

#!/usr/bin/env bash
set -euo pipefail

# 1. 收集对账单并导入
beancount -f myfile.beancount import statements.csv

# 2. 断言期末余额
beancount -f myfile.beancount balance

# 3. 定价
beancount -f myfile.beancount price

# 4. 查询
beancount -f myfile.beancount query "SELECT * FROM ..."

# 5. 提交
git add myfile.beancount
git commit -m "Month-end close for August 2025"
git tag close-2025-08

为什么这样有效

该流程快速且可靠,因为它基于以下核心原则:

  • 断言,而非目测: balance 指令将对账转化为精确的自动化检查。
  • 确定性输入: 自动导入器和标准化的元数据使账本可复现且一致。
  • 可探索数据: Fava 和 BQL 提供强大工具,立即验证结果并深入异常数据。
  • 可审计的更改: 调整以纯文本日记账形式记录,便于数月或数年后审阅和理解。

良好的月末结账主要是后勤工作。使用 Beancount,你可以将其转化为简短、可脚本化的仪式:导入、断言、定价、查询、提交。保持工作流稳定,结账将保持快速——即使财务情况日益复杂。

2025 年最佳商业信用额度

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

如果你需要灵活的营运资金,可以随时提取、偿还并再次使用,那么商业信用额度(LOC)胜过一次性多次的定期贷款。以下是按使用场景划分的今年最强选项,附带快速成本比较方法以及记录提取、利息和费用的简易 Beancount 配方。


2025-08-27-最佳商业信用额度

TL;DR — 场景最佳推荐

  • 快速、灵活的金融科技额度: Bluevine — 最高 $250k,支持每周或每月还款,资金通常在 24 小时内到账,利率宣传为 “最低 7.8%(单利)”。
  • 带费用的多期限提取: American Express Business Blueprint® Line of Credit — 额度 2k2k–250k;可选择 1–3 个月一次性还款贷款或 6–24 个月分期贷款,收取固定贷款费用(非 APR)。
  • 基于 Prime 的银行额度,定价透明: Wells Fargo BusinessLine® / Prime Line — BusinessLine:Prime + 1.75% 至 +9.75%;Prime Line:Prime + 0.50%(下限 5%);典型额度 10k10k–150k。
  • 关系定价并提供“升级”路径: Bank of America — 无担保 Business Advantage 额度(关系折扣 0.25–0.75%);或现金担保额度,存款决定额度(起始 $1,000),有助于建立商业信用。
  • 分支机构 + 全国网络: Chase Business Line of Credit — 在线最高 $250k,5 年循环期后 5 年偿还期(48 州可用)。
  • **最高 250k,年费政策明确:U.S.BankCashFlowManager—额度至250k,年费政策明确:** **U.S. Bank Cash Flow Manager** — 额度至 250k;无担保选项至 100k;额度>100k;额度 > 50k 无年费(否则 $150)。
  • 新创企业需要速度(了解成本): Headway Capital5k5k–100k,计算器显示起始月费率 3.3% + 2% 提取费。
  • 快速批准但通常成本高: OnDeck LOC — 最高 $200k;公司报告的平均 APR 为 56.6%(2025 上半年)。
  • 更大、低费率、受监管的额度(符合条件): SBA 信用额度 — 传统 CAPLines 项目以及新推出的 7(a) Working Capital Pilot(WCP)。WCP 允许放贷机构发行最高 $5M 的受监管循环额度并提供 SBA 担保。

2025 年有什么变化或重要事项? 📈

两大趋势正在塑造今年的商业信用格局:

  1. Prime 低于 2023 年高点。 《华尔街日报》公布的 Prime Rate 为 7.50%(截至 2025 年 9 月 2 日),上次变动为 2024 年 12 月 19 日。该基准利率直接影响大多数浮动利率银行信用额度的定价(通常为 “Prime + 边际”)。较低且稳定的 Prime Rate 为借款人带来更可预测的成本。
  2. SBA 推出/扩展受监管的营运资金额度。 7(a) Working Capital Pilot(WCP)项目自 2024 年 8 月 1 日生效,持续扩容。它使放贷机构能够发行基于资产或交易的受监管 LOC,对需要库存、应收账款或特定合同融资的企业帮助巨大。

快速概览:实际可获的热门信用额度

ProviderMax line sizeHow pricing worksNotable terms/feesBest for
Bluevine$250,000单利 “最低 7.8%”;每周或每月还款资金通常在 24 小时内到账快速、灵活的在线 LOC,提取方式简单
AmEx Business Blueprint®2,0002,000–250,000贷款费用取代利息;可选 1–3 个月一次性还款或 6–24 个月分期按期限查看公布的费用区间;可即时存入 AmEx Business Checking费用可预见;每笔提取可自行选择短期或长期还款
Wells Fargo BusinessLine®10,00010,000–150,000浮动 Prime + 1.75% 至 +9.75%无担保循环额度基于 Prime 的银行额度,边际透明
Wells Fargo Prime LineVariesPrime + 0.50%(下限 5%)通常针对信用更强的客户若符合条件,可享受更低边际
Chase Business LOC在线最高 $250,000浮动(未公开)5 年循环后 5 年偿还;阿拉斯加/夏威夷除外传统银行 LOC,循环窗口长
U.S. Bank Cash Flow Manager最高 $250,000浮动;有担保与无担保选项无担保最高 100k;额度>100k;额度 > 50k 免年费(否则 $150)费用政策明确,分支网络广
PNC Unsecured LOC20,00020,000–100,000WSJ Prime + 边际(浮动)年费 $175小额额度,适合关系银行
Headway Capital5,0005,000–100,000起始月费率 3.3% + 2% 提取费(按州)每周或每月年轻企业需要速度(注意成本)
OnDeck LOC最高 $200,000平均 APR 56.6%(2025 上半年)快速批准;常见每周付款短期现金缺口,成本偏高
SBA CAPLines & 7(a) WCP最高 $5,000,000SBA 通过放贷机构设定上限利率;受监管额度WCP 设施最长 12 个月,可续;CAPLines 最长 10 年大额、结构化的营运资金需求,需提供抵押

如何挑选合适的 LOC(7 条快速检查) ✅

  1. 基准利率 & 边际: 若是银行额度标注 “Prime ± X%”,请查询今日 Prime Rate(7.50%),再加上你获得的边际,即为当前的浮动年化百分比率(APR)。
  2. 费用制 vs. 利息制: 部分金融科技(如 AmEx Blueprint)对每笔提取收取固定 “贷款费用”,而非利息。比较时请将该费用折算为等效 APR,再与利息制报价对比。
  3. 年费/提取费: 这些费用会累加到总成本,尤其在使用频率低时更明显。U.S. Bank 对额度 > 50k免除50k 免除 150 年费,PNC 则收取 $175 年费。
  4. 还款频率: 每周付款(线上放贷常见)有助于平滑现金流,但需更频繁管理;每月付款则简化记账。Bluevine 同时提供两种选项。
  5. 放款速度: 若急需现金,速度至关重要。Bluevine 常在 24 小时内放款,American Express 还能将提取金额即时存入 AmEx Business Checking。
  6. 资格 & 升级路径: 若暂时无法获得无担保额度,可先使用 Bank of America 的现金担保额度(起始 $1,000),帮助建立商业信用,后续再升级为无担保额度。
  7. 考虑 SBA 规模或结构化需求: 对于与库存、应收账款或合同挂钩的较大需求,SBA 的 7(a) WCP 或 CAPLines 项目可提供更大、受监管的额度,利率受监管,但需接受更深入的尽职调查。

快速成本比较小技巧 🧮

比较报价往往不易。下面提供一种简化思路:

  • 基于 Prime 的示例: 若银行报价为 Prime + 2.75%,则今日起始 APR 为 10.25%(7.50% + 2.75%)。记住,若 Prime Rate 变动,该 APR 也会随之上下浮动。
  • 费用制示例(AmEx Blueprint): 12 个月的提取若收取 6–18% 的总贷款费用,看似不高。但要与利息制对比,需要将该固定费用折算为在递减余额上的等效 APR,才能实现“苹果对苹果”的比较。

Beancount:如何记录信用额度

对于使用纯文本记账工具 Beancount 的用户,跟踪信用额度非常直接。LOC 属于负债;提取会增加负债并增加现金,利息和费用计入费用科目。请将下列账户名称替换为你自己的账本对应科目。

1) 从 LOC 提取 $25,000 到支票账户

2025-03-15 * "LOC draw"
Assets:Bank:Checking 25,000.00 USD
Liabilities:LOC:Bluevine -25,000.00 USD

2) 支付 2,300(其中2,300(其中 300 为利息,$2,000 为本金)

2025-04-15 * "LOC payment (principal + interest)"
Liabilities:LOC:Bluevine 2,000.00 USD
Expenses:Interest:LOC 300.00 USD
Assets:Bank:Checking -2,300.00 USD

3) 记录 $150 的年费(从银行账户扣款)

2025-01-10 * "Annual LOC fee"
Expenses:BankFees:LOC 150.00 USD
Assets:Bank:Checking -150.00 USD

替代方案: 若年费直接计入额度余额而非从银行账户扣除,则交易应为:

2025-01-10 * "Annual LOC fee added to balance"
Expenses:BankFees:LOC 150.00 USD
Liabilities:LOC:Bluevine -150.00 USD

何时更适合选择 SBA 背书的额度

SBA 担保的额度并非适合所有企业,但在以下情况下极具价值:

  • 需要的 信用额度 超出大多数金融科技或银行无担保产品的上限。
  • 营运资金需求与 抵押品(如应收账款、库存或已签合同)挂钩。
  • 能够满足 监控要求,如提交借款基准证书和定期财务报告。

如果你的业务符合上述条件,请深入了解 SBA CAPLines 项目以及 7(a) Working Capital Pilot(WCP)。这些项目可提供最高 $5M 的额度,且标准 CAPLines 的期限最长可达 10 年。


申请清单 📝

准备好材料。大多数放贷机构会要求以下信息:

  • 营业年限、收入与信用评分: 银行通常要求 1–2 年以上的营业历史和较强信用;而多数线上放贷机构标准更宽松,但会为更高风险收取更高费用。
  • 财务报表: 最近的银行对账单、企业税表,必要时提供应收账款账龄或库存报告。
  • 个人担保: 这是大多数商业信用额度的标准要求,意味着若企业无法偿付,个人需承担还款责任。

关键来源


结语

信用额度的核心在于控制:在需要时提取,在不需要时保持灵活。2025 年,符合条件的企业仍可受益于基于 Prime 的银行额度,其透明的边际定价颇具吸引力;而金融科技额度则以更高成本换取惊人的速度与灵活性。对于更大、更复杂的需求,SBA 背书的额度提供结构化的融资方案。关键在于:跑通数字(始终将费用折算为等效 APR),了解费用结构,并选择能保持企业财务健康且让 Beancount 账本保持整洁的还款计划。

在 Beancount 中记录税务(实用方法)

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

税务在个人理财的世界里常常像一种特殊、复杂的怪兽。但如果它们不是这样呢?如果你可以把它们当作账本中任何其他资金流动来处理呢?好消息:完全可以。把税务当作简单的价值流动来记账,你的 Beancount 账本将保持整洁、易于查询,且——最重要的是——易于理解。

下面是一套实用、直截了当的模式,你可以直接放进个人或小型企业的 Beancount 文件中。它是一个处理工资单、税款支付,甚至跨年度的退款的简易系统。我们将介绍你需要的关键账户,演示真实案例,并展示获取所需答案的确切查询语句。

2025-08-25-recording-taxes-in-beancount


核心原则

在深入代码之前,先约定几条简单规则。这些原则让逻辑保持清晰,防止以后出现头疼的问题。

  • 把“它是什么”与“现金何时流动”分开。 🗓️
    这是最重要的概念。税务费用属于你获得收入的那一年(例如 2024 年),即使你在 2025 年 4 月才向 IRS 结清。如果不把费用的发生时间与现金支付的时间分离,你的年度报告将会混乱且误导。

  • 保持账户层级单调、简洁。 📁
    根据税种(例如 IncomeTaxSocialSecurity)为账户命名,这样查询会非常简单。不要在账户名里塞入供应商名称或表格编号(如 “W‑2” 或 “1099”),这些细节请使用元数据和标签来记录。

  • 采用权责发生制进行年终调整。 ⚖️
    即使是个人账本,在年终使用一个简单的权责发生分录也是最干净的做法。它意味着在正确的年度确认费用或退款,即使资金要到下一年才实际流动。这一步虽小,却能让你以后免去大量思考。

  • 为未来的自己写代码。 🧠
    目标是清晰。只有在真的能让查询更容易时,才在账户名里加入税务年度等额外信息。除非有充分理由,否则不要每年都创建一套新账户(Expenses:Taxes:2024:FederalExpenses:Taxes:2025:Federal 等),扁平结构往往更易管理。


最小化账户骨架

下面是一组基本账户,帮助你快速起步。该结构以美国税制为例,但你可以轻松改为自己所在国家的税务系统。只需把这些 open 指令放进你的 Beancount 文件即可。

; --- 美国联邦所得税与工资税 ---
; 用于记录工资单中被预扣的税款
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Withheld USD
; 用于记录估算付款或税日直接支付的税款
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Payments USD
; 用于记录收到的税款退款
2024-01-01 open Expenses:Taxes:Federal:IncomeTax:Refunds USD

; 你的 FICA(社会保险)缴款
2024-01-01 open Expenses:Taxes:Federal:SocialSecurity USD
2024-01-01 open Expenses:Taxes:Federal:Medicare USD

; --- 其他常见税种 ---
; 用于记录购买时支付的销售/使用税
2024-01-01 open Expenses:Taxes:Sales USD

; --- 年终调整账户(可选但推荐) ---
; 用于暂存尚未支付的应缴税款
2024-01-01 open Liabilities:AccruedTaxes:Federal:Income USD
; 用于暂存尚未收到的退款应收款
2024-01-01 open Assets:Tax:Receivable USD

此设置将预扣税、直接付款和退款分离,便于清晰看到每笔钱的去向。LiabilitiesAssets 账户是我们保持年终报告准确的秘密武器。


示例 1:工资单

记录一笔典型的工资单,税款会自动预扣。关键是先记录税前收入,再将其拆分为税款和实际到账的现金。

2025-07-15 * "Employer Inc." "Salary for first half of July"
Income:Work:Salary -6,000.00 USD
Expenses:Taxes:Federal:IncomeTax:Withheld 1,200.00 USD
Expenses:Taxes:Federal:SocialSecurity 372.00 USD
Expenses:Taxes:Federal:Medicare 87.00 USD
Assets:Cash:Checking 4,341.00 USD

这笔交易完整说明了:

  • 你获得了 6,000 美元的税前收入。
  • 其中 1,200 美元被预扣为联邦所得税。
  • 372 美元用于社会保险,87 美元用于医疗保险。
  • 剩余的 4,341 美元即为实得工资。

小技巧: 可以在交易中附加工资单元数据(如 pay_period_end: "2025-07-15"),便于审计追踪。


示例 2:报税(跨年度问题)

常见的坑:2025 年 4 月,你在报 2024 年的税,发现除预扣外仍需额外支付 3,000 美元。

如何记录?你希望这笔费用计入 2024 年,而现金支付发生在 2025 年。下面提供两种优秀的处理方式。

方案 A:手动两步权责发生制

纯 Beancount 方法,无需插件。清晰的两步流程。

步骤 1:在税务年度末确认费用。
在 2024 年最后一天创建一条“冲销”分录。此时并未实际付款,只是把费用记入临时负债账户。

2024-12-31 * "Federal income tax true-up for 2024"
Expenses:Taxes:Federal:IncomeTax:Payments 3,000.00 USD
Liabilities:AccruedTaxes:Federal:Income -3,000.00 USD

现在你的 2024 年损益表已经正确显示这笔 3,000 美元的费用。

步骤 2:在实际付款时记录现金流。
2025 年 4 月向 IRS 实际付款时,冲销负债。

2025-04-15 * "IRS" "Payment for 2024 tax return"
Liabilities:AccruedTaxes:Federal:Income 3,000.00 USD
Assets:Cash:Checking -3,000.00 USD

这样 2024 年报告准确,2025 年现金流也正确。完全相同的模式可用于退款——只需把负债账户换成 Assets:Tax:Receivable 即可。

方案 B:使用插件自动化

如果你倾向于在单笔交易中完成,可使用社区插件 beancount_reds_plugins.effective_date。它允许为单行项目指定不同的“生效日期”。

在主 Beancount 文件中启用插件:

plugin "beancount_reds_plugins.effective_date"

然后写一条交易,插件会在后台自动拆分,使报告保持准确。

; 单条记录;插件负责其余
2025-04-15 * "IRS" "Payment for 2024 tax return"
Assets:Cash:Checking -3,000.00 USD
Expenses:Taxes:Federal:IncomeTax:Payments 3,000.00 USD
effective_date: 2024-12-31

这里现金部分记在 2025‑04‑15,费用部分则追溯到 2024‑12‑31。效果与方案 A 相同,只是工作流不同。


销售税怎么办?

对大多数个人账本而言,销售税很简单。如果不需要抵扣,只需在购买时把它拆分为单独的费用即可。

2025-07-19 * "Local Grocery Store"
Expenses:Groceries 12.32 USD
Expenses:Taxes:Sales 1.28 USD
Assets:Cash:Checking -13.60 USD

这样你可以轻松追踪全年在销售税上的支出。如果你经营的业务涉及增值税(VAT),则需要使用更正式的应付/应收账户体系,但原理相同。


实际会用到的查询

此结构的全部意义在于让获取答案变得轻而易举。下面列出几条 BQL 查询示例,帮助你快速看到税务全貌。

1. 2024 年我的联邦所得税总额是多少?

SELECT cost(sum(position))
WHERE account "Expenses:Taxes:Federal:IncomeTax"
AND date >= 2024-01-01 AND date < 2025-01-01;

2. 该总额在预扣、付款和退款之间如何分布?

SELECT account, cost(sum(position))
WHERE account "Expenses:Taxes:Federal:IncomeTax"
AND date >= 2024-01-01 AND date < 2025-01-01
GROUP BY account
ORDER BY account;

3. 我是否还有未结清的税务负债或应收款?(检查工作是否完整!)

SELECT account, units(sum(position))
WHERE account "Liabilities:AccruedTaxes" OR account "Assets:Tax"
GROUP BY account
ORDER BY account;

如果该查询返回非零余额,说明还有未结清的权责发生项。


快速 FAQ

  • 真的需要每年单独的 Expenses:Taxes:2024 之类的账户吗?
    大多数情况下不需要。权责发生制(或插件)能够保持账户结构平坦、易读。只有在特定查询需求下才考虑创建年度账户。

  • Beancount 能直接帮我算税吗?
    不能直接算税,但可以准备好数据。高级用户会把 BQL 结果导入税务计算软件,以便在年度中估算税负。

  • 这算是税务建议吗?
    不是。 这只是组织账务数据的记账模式。会计原理是可靠的,但具体税务问题请咨询专业税务顾问。


立即上手的检查清单

准备好了吗?

  1. 把账户骨架加入你的 Beancount 文件(并根据所在国家自行调整名称)。
  2. 记录工资单时先记税前收入,再拆分税款与实际到账。
  3. 年终时使用负债/资产账户进行冲销(或使用 effective_date 插件)。
  4. 把退款记为应收,收到现金后冲销。
  5. 运行上面的 BQL 查询,在报税前核对总额。

保持单调、保持一致,你的报税季节终将不再是谜题,而是财务故事的自然章节。

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):实用的纯文本指南

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

如果你在会计中跟踪固定资产——笔记本电脑、相机、机器,甚至是办公家具——你的账簿需要反映它们价值的下降。这涉及两个关键概念:折旧(费用)和它的累计总额 累计折旧。本指南用通俗的语言解释这两者,并展示如何在 Beancount 中使用可直接复制粘贴的示例进行建模,还包括强大的自动化选项。


2025-08-23-accumulated-depreciation

什么是累计折旧?

累计折旧 是自资产投入使用之日起已记录的折旧总额。可以把它看作一个累计计数。它不是一种新的费用——只是该资产迄今为止所有折旧费用的总和。

在财务报表中,你会看到累计折旧与资产的原始成本并列。这让阅读账簿的人能够同时看到 历史成本(你为其支付的金额)和 净账面价值(账面上当前的价值)。

一个关键细节是,累计折旧是 抵减资产(contra-asset)账户。听起来可能复杂,但概念很简单:

  • 它是一个“资产”账户,位于科目表的 Assets 部分。
  • 但它拥有 贷方 余额(在 Beancount 的资产账户中表现为负值),降低 相关固定资产的账面价值。

它在资产负债表上出现在哪里?

累计折旧通常直接位于其对应的固定资产下方。例如:

设备:电脑$3,000.00
减:累计折旧($1,000.00)
设备:电脑,净额$2,000.00

许多财务报表会简化为单行,如 “物业、厂房及设备,净额”。该数字代表所有资产的历史成本总和减去累计折旧总额,即最终的 净账面价值


如何计算折旧?

折旧的计算方法有多种。你选择的方法决定了每期记录的费用金额,从而影响累计折旧的累计额。常见的两大类方法是:

  • 直线法(SL): 最简单、最常用的记账方法。你在资产使用寿命的每个期间内计提相等的费用。例如,一台价值 3,000、使用寿命为36个月(3年)的笔记本电脑,每月折旧3,000、使用寿命为 36 个月(3 年)的笔记本电脑,每月折旧 83.33。
  • 税法折旧(如美国的 MACRS): 为了税务目的,政府通常规定加速折旧表。美国的 修改后加速成本回收系统(MACRS) 允许在资产使用早期计提更大的折旧。Beancount 完全可以处理这些表——只需根据官方表(如 IRS Publication 946)计算金额并生成相应的分录。

公式(直线法)

期间折旧 = 成本残值使用年限\frac{\text{成本} - \text{残值}}{\text{使用年限}}

累计折旧(截至日期 t) = (截至 t 的期间折旧)\sum (\text{截至 t 的期间折旧})

残值 是资产使用寿命结束时的估计残余价值。为简化起见,通常假设为零。


Beancount 实践:建模成本与累计折旧

为了在 Beancount 中正确跟踪固定资产并保留其原始成本,你需要为每类资产使用一对资产账户,再加一个费用账户。

  • Assets:Equipment:Computers:Cost(保存历史成本)
  • Assets:Equipment:Computers:AccumDep(抵减资产,随时间贷记)
  • Expenses:Depreciation:Computers(记录期间费用)

此结构符合标准会计实践,也是 Beancount 中管理固定资产折旧的推荐方式。


方案 A:手动直线法分录

这是最直接的方式。你可以完全控制每笔分录,便于理解其工作原理。

1. 打开所需账户

2025-01-01 open Assets:Bank:Checking
2025-01-01 open Assets:Equipment:Computers:Cost
2025-01-01 open Assets:Equipment:Computers:AccumDep
2025-01-01 open Expenses:Depreciation:Computers

2. 记录购买(按历史成本)

购买资产时,借记 Cost 账户。

2025-01-20 * "Purchase MacBook Pro"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

3. 记录月度折旧

每月记录一次折旧费用。对 3,000资产,36个月的月折旧为3,000 资产,36 个月的月折旧为 3000 ÷ 36 = $83.33。

分录为借记费用账户、贷记抵减资产账户。

2025-02-28 * "Monthly depreciation - MacBook Pro (SL 36mo)"
Expenses:Depreciation:Computers 83.33 USD
Assets:Equipment:Computers:AccumDep -83.33 USD ; 贷记抵减资产

将此分录重复 36 个月。Assets:Equipment:Computers:AccumDep 的余额会随时间变得更负,从而降低资产的净账面价值。

快速检查: 你可以在 Fava 的资产负债表中查看净账面价值,或运行以下查询:

bean-query myledger.bean "SELECT account, SUM(position) WHERE account   'Assets:Equipment:Computers:(Cost|AccumDep)' GROUP BY account"

两个账户的余额之和即为净账面价值。


方案 B:使用 Fava 的 amortize 插件自动化

如果你使用 Fava(Beancount 的流行网页界面),且折旧为固定金额,可通过插件实现自动化。

首先,在 Beancount 文件顶部启用插件:

plugin "fava.plugins.amortize_over"

然后,创建一条定义完整折旧计划的交易。

; 1. 正常记录首次购买
2025-01-20 * "Purchase MacBook Pro"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

; 2. 设置折旧计划
2025-01-20 * "Depreciation schedule - MacBook Pro"
amortize_months: 36
Expenses:Depreciation:Computers 3000.00 USD
Assets:Equipment:Computers:AccumDep -3000.00 USD

插件会读取此交易并自动生成 虚拟分录:每月 $83.33,持续 36 个月。虚拟分录不会写入 .bean 文件,但会出现在所有报表中。此方式适用于直线法,但不适用于 MACRS 等不等额的折旧表。


方案 C:使用第三方插件生成实际分录

如果你希望生成真实的、非虚拟的分录,同时保留自动化便利,可使用 beancount-periodic 插件(作者 Dallas Lu)。该插件可根据配置自动创建带日期的分录,兼具手动分录的可审计性与自动化的高效性。


查看结果:成本、累计折旧与净账面价值

无论采用哪种方法,资产负债表都会显示 CostAccumDep 两个账户。两者之和即为 净账面价值。这种“原始成本减累计折旧”的展示方式正是会计师和财务分析师所期望的,能够完整透明地呈现资产的使用年限与当前价值。


资产处置(出售、报废或退役)

资产使用寿命结束时,你可能会出售、报废或退役。要将其从账簿中移除,需要:

  1. 清除历史成本。
  2. 清除累计折旧。
  3. 记录收到的现金。
  4. 记录产生的盈亏(现金收入与净账面价值之差)。

示例:资产出售获利

假设在 2027‑06‑15 出售该 MacBook Pro。

  • 原始成本:$3,000
  • 出售时累计折旧:-$2,500
  • 净账面价值3,0003,000 - 2,500 = $500
  • 出售收入:$800
  • 出售盈余800800 - 500 = $300

Beancount 记账如下:

2027-06-15 * "Sell MacBook Pro"
Assets:Bank:Checking 800.00 USD ; 收到现金
Assets:Equipment:Computers:AccumDep 2500.00 USD ; 借记抵减资产以冲销
Assets:Equipment:Computers:Cost -3000.00 USD ; 贷记原始成本
Income:Gains:AssetDisposals -300.00 USD ; 贷记盈余

如果仅收到 400(亏损400(亏损 100),则将差额记入 Expenses:Losses:AssetDisposals(借方)。


FAQ(快速问答)

  • 累计折旧是资产还是负债?
    两者都不是。它是 抵减资产,位于资产区但为贷方余额,起到降低资产价值的作用。

  • 购买后还能直接记入 Cost 账户吗?
    通常不建议。抵减资产的目的是保留历史成本,所有价值下降应记入 ...:AccumDep

  • 能在 Beancount 中使用 MACRS(税法)折旧表吗?
    可以。先依据 IRS Publication 946 计算每期金额,然后用手动分录或周期插件记录。Fava 的 amortize 插件不适用于不等额的 MACRS 表。

  • Section 179 加速费用怎么办?
    Section 179 允许在投入使用的当年全额费用化。对应的 Beancount 记账就是在购买时直接借记费用账户,而不是固定资产账户。


常见错误及避免方法

  • 直接在 Cost 账户上计提折旧。

    • 解决方案: 始终贷记 ...:AccumDep,保留历史成本。
  • 资产处置时忘记冲销累计折旧。

    • 解决方案: 处置分录必须包含 借记 ...:AccumDep,以清除该资产的累计折旧。
  • 混淆税法折旧与记账折旧。

    • 解决方案: 明确区分税务表(用于报税)和记账表(用于财务报表),分别使用对应的分录。
  • 误用 Fava amortize 插件导致虚拟分录未被审计。

    • 解决方案: 若需审计痕迹,请改用生成真实分录的插件或手动分录。

方案 A 示例代码

2025-01-01 open Assets:Bank:Checking
2025-01-01 open Assets:Equipment:Computers:Cost
2025-01-01 open Assets:Equipment:Computers:AccumDep
2025-01-01 open Expenses:Depreciation:Computers

2025-01-20 * "Purchase MacBook Pro"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

2025-02-28 * "Monthly depreciation - MacBook Pro (SL 36mo)"
Expenses:Depreciation:Computers 83.33 USD
Assets:Equipment:Computers:AccumDep -83.33 USD

方案 B 示例代码

plugin "fava.plugins.amortize_over"

2025-01-20 * "Purchase MacBook Pro"
Assets:Equipment:Computers:Cost 3000.00 USD
Assets:Bank:Checking -3000.00 USD

2025-01-20 * "Depreciation schedule - MacBook Pro"
amortize_months: 36
Expenses:Depreciation:Computers 3000.00 USD
Assets:Equipment:Computers:AccumDep -3000.00 USD

方案 C 示例代码

(此处请根据 beancount-periodic 插件的配置自行编写相应的自动化分录。)


资产处置示例代码

2027-06-15 * "Sell MacBook Pro"
Assets:Bank:Checking 800.00 USD
Assets:Equipment:Computers:AccumDep 2500.00 USD
Assets:Equipment:Computers:Cost -3000.00 USD
Income:Gains:AssetDisposals -300.00 USD

参考文献与资源

  • Beancount 官方文档
  • Fava 插件列表
  • IRS Publication 946(美国税法折旧表)
  • Section 179 与 MACRS 相关税务指南

通过本指南,你可以在 Beancount 中实现对固定资产的精确折旧管理,并利用自动化工具提升记账效率。祝你财务管理顺利!

我能负担得起雇佣员工吗?

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

Beancount‑first 指南,帮助你建模真实成本、测试现金流,并将其写入账本。

雇佣第一位员工是一个巨大的步骤。这是对未来的赌注,但也是一项远超 offer letter 上数字的重大财务承诺。太多创始人和小企业主只盯着工资本身,结果被“全额成本”所惊讶。

2025-08-22-can-i-afford-to-hire-an-employee

本指南将手把手教你如何准确建模该成本、检验自己是否真的负担得起,并将模型直接写入 Beancount 账本,以在发布招聘信息之前降低决策风险。

TL;DR

  • 不要只看工资。 在美国,真实成本还包括雇主工资税(Social Security、Medicare、FUTA/SUTA)、福利、保险、工具和招聘费用。私营行业中,福利平均占总薪酬的约 30%,这意味着全额成本约为工资的 1.42 倍。不同公司和地区差异很大。
  • 快速经验法则: 全额成本 ≈ 工资 + 雇主工资税 + 福利 + 保险 + 工具/软件 + 招聘/上岗费用
  • 使用 Beancount 降低风险。 在账本中使用 Fava 的预算功能建模月度工资预算,然后运行预测,检查跑道、利润率以及该岗位的回报期,再决定是否招聘。

1) 什么因素驱动“全额成本”?

把员工的工资想象成冰山一角。可见部分很直接,但隐藏的成本如果没有准备好,可能会让现金流沉没。下面是具体拆解。

  • 基本工资(Wages/Salary): 这部分最简单——约定的年薪或时薪。它是最大的一项,但只是起点。

  • 雇主工资税(美国): 你不仅要付工资,还要为工资缴税。作为雇主,你需要负责:

    • 社会保障税(OASDI): 对员工工资的 6.2% 征收,最高至年度上限。2025 年上限为 $176,100
    • 医疗保险税(HI):全部 员工工资征收 1.45%,没有上限。
    • 失业税(FUTA & SUTA): 联邦失业税(FUTA)对前 $7,000 征收 6.0%。但大多数雇主可抵扣州失业税(SUTA)抵免,实际有效率约为 0.6%。SUTA 税率因州和公司历史差异显著。
  • 福利: 通常是第二大成本。包括健康保险、退休金(如 401(k) 匹配)和带薪休假。美国私营行业中,福利约占总薪酬的 30%。举例来说,2024 年单人健康保险的平均年保费为 $8,951,家庭保费为 $25,572。虽然员工会有自付部分,但雇主通常承担大头。

  • 工伤保险(Workers’ Compensation): 几乎所有州都要求购买,覆盖员工因工受伤的医疗费用和工资损失。费率取决于所在州、行业以及岗位风险(办公室职员比屋顶工便宜得多)。切勿将此项预算为零。

  • 工具与间接费用: 新员工需要合适的设备,包括笔记本、软件许可证(SaaS 账户)、如果有办公室的话还需要桌椅,以及工资处理软件本身。小企业常见的工资服务费用约为 $49-$50/月 基础费 + $6-$10/每位员工

  • 招聘与上岗成本: 别忘了一次性费用,包括职位发布费用、面试所花的时间,以及最关键的上岗期。新员工可能需要 1–3 个月 才能达到全生产力,在此期间你仍需支付全额成本但产出有限。


2) 具体案例

假设你在美国雇佣一名员工,年薪 $80,000,并提供单人健康保险,雇主承担全国平均 84% 的保费。

年度成本拆解如下:

  • 雇主工资税:

    • 社会保障税(OASDI):80,000×6.280,000 × 6.2% = \4,960
    • 医疗保险税:80,000×1.4580,000 × 1.45% = \1,160
    • FUTA(有效税率):7,000×0.67,000 × 0.6% = \42
    • 雇主工资税合计:$6,162
  • 健康保险(雇主承担部分):

    • 使用 2024 年单人平均保费 $8,951,乘以 84%:8,951 × 0.84 = **\7,519/年(约 $627/月)**。
  • 工资软件与工具:

    • 工资软件:(50 基础费 + \6/员工) × 12 个月 = $672/年
    • 设备/软件(估算):$2,000/年

合计如下:

项目年度成本
工资$80,000
雇主工资税$6,162
健康保险$7,519
工资软件$672
设备 & 笔记本$2,000
年度总成本$96,353
月度成本$8,029

在此情境下,全额成本为 $96,353,约为基本工资的 1.20×。这属于福利相对精简的方案。如果再加入 401(k) 匹配、更慷慨的带薪休假或家庭健康保险,成本很容易逼近行业平均的 1.42×,即约 $113,800

要点: 你的真实成本大概率落在 1.20×(精简)1.40×+(丰厚) 之间。自行计算以确认。


3) “我能负担吗?”——三项实用测试

已知月度成本约 $8,029,如何判断自己能否支撑?

  1. 毛利覆盖率: 该岗位能否自负盈亏?如果你的业务毛利率为 65%,新员工至少需要产生 $12,352 的新增月收入($8,029 ÷ 0.65)才能收支平衡。若岗位旨在节约成本,则需等价的、可持续的费用削减。

  2. 回报期与跑道: 该岗位何时开始产生正回报?目标是 6–12 个月的回报期,越短越安全。关键是,在上岗期结束后,你至少要有 3–6 个月的全额成本现金储备 作为缓冲。

  3. 上岗现实: 新员工不可能第一天就全效。预算 1–3 个月的培训期 与低产出。如果现金缓冲不足以同时覆盖工资和产出下降,你还未准备好。可以先雇佣 合同工或兼职 来验证需求。

美国特有提示: 若这是你在新州的首位雇员,请再次确认合规要求。FUTA 抵免、SUTA 税率以及工伤保险法规各州差异大,错误可能导致罚款。


4) 在 Beancount 中落地模型

最直接的方式是把雇佣成本直接写进账本。下面演示如何在 Beancount 中实现。

A. 用 Fava 设置工资预算

首先,用 Fava 的 custom "budget" 指令把预计的月度成本写入账本,这样可以在收入报表中直观看到新费用与收入的对比。

; 为一年全额成本约 \$96k 的员工设定预算
2025-09-01 custom "budget" Expenses:Payroll:Wages "monthly" 6666.67 USD
2025-09-01 custom "budget" Expenses:Payroll:Taxes:Employer "monthly" 513.50 USD
2025-09-01 custom "budget" Expenses:Benefits:HealthInsurance "monthly" 626.57 USD
2025-09-01 custom "budget" Expenses:Tools:PayrollSoftware "monthly" 55.00 USD

添加后,Fava 的损益表和变动报告会自动显示你相对于新费用的实际表现。

B. 记录实际工资发放

实际发放工资时,有两种常见记账方式。

  • 明细(含负债): 最精确的做法。将雇主税费与员工代扣税分开记,后者作为负债暂时保留,待向政府缴纳时再冲销。
2025-09-30 * "Payroll - Alice (September)" ; 示例代扣
Expenses:Payroll:Wages 6666.67 USD
; 雇主侧税费(直接成本)
Expenses:Payroll:Taxes:Employer:SocialSecurity 413.33 USD
Expenses:Payroll:Taxes:Employer:Medicare 96.67 USD
Expenses:Payroll:Taxes:Employer:FUTA 3.50 USD
; 员工代扣(负债)
Liabilities:Payroll:Withholding:Federal -1000.00 USD
Liabilities:Payroll:Withholding:State -300.00 USD
Liabilities:Payroll:FICA:Employee:SocialSecurity -413.33 USD
Liabilities:Payroll:FICA:Employee:Medicare -96.67 USD
; 实际打款到银行(净工资)
Assets:Bank:Checking -4853.54 USD

随后,当你的工资服务商代缴税款时,再记一笔冲销负债的交易(如 Liabilities:Payroll:Withholding:FederalAssets:Bank:Checking)。

  • 简化(一次性合计): 若你的工资服务商一次性从账户扣除全部费用且不需要追踪负债,可使用更简洁的记法。
2025-09-30 * "Gusto payroll run - Alice"
Expenses:Payroll:Wages 6666.67 USD
Expenses:Payroll:Taxes:Employer 513.50 USD
Expenses:Payroll:Fees:Provider 55.00 USD
Assets:Bank:Checking -7235.17 USD

C. 预测跑道

在会计科目表中将 Expenses:Payroll 设为顶层科目,并在交易上使用标签如 employee: "Alice",即可在 Fava 中按人过滤报告。预算设定好后,使用 Fava 的实际 vs 预算叠加图表,若持续超预算,则需要重新评估可负担性。


5) 雇佣是否合适(快速检查表)

可能合适的情况 ✅

  • 你因为 产能不足 而被迫 拒单 或推迟产品发布。
  • 你能明确设定 收入目标或成本节约指标,并将其归属到该岗位。
  • 你的现金 跑道足以覆盖 1–3 个月的上岗期,加上额外的 3–6 个月全额成本

可能需要等待的情况 🛑

  • 业务需求 波动大、不可预测。先雇 合同工或兼职 来应对弹性工作量。
  • 同样的目标可以通过 购买更好的工具或实现自动化,成本仅为雇员的一小部分。
  • 该岗位 无法关联到可量化的业务结果。仅凭 “我感觉很忙” 不能成为商业案例。

参考数据(美国,2025)

  • 社会保障工资基数: $176,100
  • 雇主税率: 社会保障 6.2%(上限基数内),医疗保险 1.45%(无上限)
  • FUTA 税率: 前 $7,000 征收 6.0%,但在抵免后实际约 0.6%
  • 福利占薪酬比例: 私营行业平均 29.7%,对应 1.42× 的全额成本倍率
  • 2024 年健康保险平均保费: 单人 $8,951 / 家庭 $25,572
  • 工伤保险: 几乎所有州均要求,费率和规则各不相同
  • 工资软件费用:$49-$50 基础费 + $6-$10/每位员工·月

合规提示

本指南侧重于财务成本建模。实际雇佣员工还涉及法律和行政合规。你需要:

  • 在联邦和州层面设立工资税账户
  • 核实雇佣资格(I‑9 表格)
  • 让员工填写税表(W‑4)
  • 遵守各州的新雇员报告和地方税务规定

请务必查阅 IRS、SSA 以及所在州劳动部门的官方指南,或咨询专业顾问。


结语

雇佣是一项投资,最好的投资者会做好功课。在撰写职位描述或在 LinkedIn 发布之前,先把这笔费用写进你的 Beancount 账本。将其设为预算并预测对现金的影响。如果数字在自己的账本里站得住脚,你就可以自信地迈出招聘这一步。


最新报道与背景

Amazon 卖家费用(2025):它们是什么——以及如何在 Beancount 中记账

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

在 Amazon 上销售是一种触达数百万客户的强大方式,但平台的费用结构常常像迷宫一样让人困惑。如果你是重视干净、可审计、双重记账的运营者,准确追踪这些成本是不可谈判的。本指南将拆解 Amazon 2025 年美国站点的费用,并展示如何使用纯文本会计工具 Beancount 进行记录。

TL;DR ⚡

2025-08-21-amazon-seller-fees-2025

  • 你会遇到一系列常见的 Amazon 费用:销售计划推荐费结算费(媒体类)、FBA 履约与存储入库安置费低库存费退货处理费退款管理费,以及针对超大目录的 高容量上市费
  • 保持一个单独的 Assets:Amazon:Clearing 账户。将销售和费用记在该账户;当 Amazon 打款时,将净额转入银行账户。这样对账轻而易举。
  • 将每个 SKU 视为独立商品(例如 SKU:WATER-BOTTLE),Beancount 能自动按批次计算你的销售成本(COGS)。
  • 通过导入结算或日期范围报告,并将 Amazon 的 “transaction types” 直接映射到 Beancount 的费用账户,即可快速对账。

Amazon 费用地图(美国站点)

以下是 2025 年最常见费用的拆解。

销售计划费

这是访问 Marketplace 的基础订阅费用。

  • 个人计划:无月费。每售出一件商品收取 $0.99
  • 专业计划:每月固定 $39.99,免除每件商品的收费。这是所有严肃卖家默认的选择。其余所有费用仍在此基础上累加。

推荐费

这是 Amazon 对每笔成交收取的佣金。

它是商品总售价(含运费和礼品包装)的百分比,费率完全取决于产品类别。大多数类别在 8–15% 区间,但有些采用分层费率(例如前 $500 收 15%,其余部分收 8%)。某些类别还有最低推荐费,常见为 $0.30。请务必查看当前费率表以确认具体类别。

结算费(媒体类)

如果你销售图书、音乐、视频或 DVD 等媒体商品,Amazon 会额外收取每件 $1.80 的固定结算费。

FBA 履约费

这是使用 Amazon 物流(FBA)时每件商品的拣选、包装和发货费用。费用随商品尺寸和重量而异,Amazon 会定期更新费率表。2025 年,非高峰期费率已于 1 月 15 日恢复至 2024 年的非高峰水平。请始终参考最新的 FBA 费率表,以获取对应尺寸层级的准确费用。

每月存储费 & 老化库存附加费(FBA)

Amazon 会对你在其履行中心占用的空间收取费用。

  • 每月存储费:按立方英尺计费。
  • 老化库存附加费:对在履行中心停留时间过长的库存收取额外月费,叠加在常规存储费之上。

入库安置服务费(FBA)

这是与将库存发送至 Amazon 相关的每件费用,旨在覆盖 Amazon 将商品分配至其物流网络的成本。某些项目(如 “New Selection”)可在设定限额内暂时免除此费用。

低库存费(FBA)

该费用适用于标准尺寸商品,当库存水平相对于客户需求持续偏低时触发。Amazon 使用 “historical days of supply” 指标衡量。如果热门商品的库存天数跌破阈值(通常为 28 天),则收取此费用。

退货处理费(FBA)

针对退货率高于行业平均的品类(如服装、鞋类),Amazon 可对每笔客户退货收取处理费。部分 “New Selection” 商品在一定上限内可免除此费用。

退款管理费

当你为订单向客户退款时,Amazon 会退回已支付的推荐费,但会保留一定比例作为处理费。该费用为 $5.00 或推荐费的 20%(取较低者)。

高容量上市费(超大目录)

此费用仅针对拥有庞大目录的卖家。如果活跃 SKU 超过 150 万,Amazon 将对超出阈值的每个合格 SKU 收取每月 $0.001 的费用。

注意: 费率和政策可能因国家、地区和品类而异。请务必在记账前查阅当地 Seller Central 帮助页面。


这些费用在报表中的呈现方式 🧾

所有数据均可在 Seller Central 获取。对会计最有价值的两类报告为:

  1. 日期范围报告Payments → Date Range Reports):提供特定期间的收入、费用、税金和净转账汇总,适合高层账本导入与对账。
  2. 结算文件(如 Flat File V2):逐笔列出每笔交易,显示费用类型、订单 ID、金额和日期。此细粒度数据用于精确映射。

Beancount‑First 记录 Amazon 活动的方式

下面展示如何将 Amazon 的复杂费用转化为简洁的 Beancount 条目。

1. 建立最小化科目表

首先,定义所需账户。此简易结构涵盖全部内容。

; --- ASSETS ---
Assets:Amazon:Clearing ; 你的 Amazon “钱包”
Assets:Bank:Checking ; 收款到账的银行账户
Assets:Inventory:SKU:<code> ; 每个 SKU 一个子账户

; --- INCOME & COGS ---
Income:Sales:Amazon
Expenses:COGS:Inventory

; --- EXPENSES ---
Expenses:Marketplace:Amazon:Referral
Expenses:Marketplace:Amazon:FBAFulfillment
Expenses:Marketplace:Amazon:Storage:Monthly
Expenses:Marketplace:Amazon:Storage:Aged
Expenses:Marketplace:Amazon:InboundPlacement
Expenses:Marketplace:Amazon:LowInventoryLevel
Expenses:Marketplace:Amazon:ReturnsProcessing
Expenses:Marketplace:Amazon:Other ; 其他杂费

Beancount 能追踪库存批次和成本基础,这是一大优势。你将在 Assets:Inventory:SKU:... 中 “买入” 库存并标记成本 {...}。销售时,Beancount 会自动计算销售成本。

2. 记录每笔销售及其费用

下面记录一次 $30 的 FBA 销售,SKU 为 SKU:WATER-BOTTLE。推荐费 $4.50,FBA 履约费 $4.24,低库存费 $0.15。该商品原始采购成本为 $5.00

2025-02-10 * "Amazon Order 113-2233445-6677889" "WATER-BOTTLE"
Assets:Amazon:Clearing 21.11 USD
Income:Sales:Amazon -30.00 USD
Expenses:Marketplace:Amazon:Referral 4.50 USD
Expenses:Marketplace:Amazon:FBAFulfillment 4.24 USD
Expenses:Marketplace:Amazon:LowInventoryLevel 0.15 USD
Assets:Inventory:SKU:WATER-BOTTLE -1 SKU:WATER-BOTTLE {5.00 USD}
Expenses:COGS:Inventory 5.00 USD

平衡原因: $30 销售记入 Income。费用($4.50 + $4.24 + $0.15)和 COGS($5.00)记入费用账户。净现金 $21.11 借记至 Assets:Amazon:Clearing。库存资产被冲减(减少一件),对应成本计入费用。

3. 记录打款

Amazon 向你付款时,只需将钱从 Amazon “钱包”转入真实银行账户。

2025-02-15 * "Amazon Payments" "Settlement disbursement"
Assets:Bank:Checking 2,500.00 USD
Assets:Amazon:Clearing -2,500.00 USD

每次打款后,Assets:Amazon:Clearing 的余额应趋近于零。使用日期范围报告的总额检查是否有差异。

4. 处理存储、老化库存和入库安置费用

这些费用通常在结算报告中单独列出,直接记为清算账户的借方。

2025-03-15 * "Amazon FBA Storage Fees" "Monthly + aged inventory"
Expenses:Marketplace:Amazon:Storage:Monthly 125.40 USD
Expenses:Marketplace:Amazon:Storage:Aged 35.20 USD
Assets:Amazon:Clearing -160.60 USD

2025-03-20 * "FBA Inbound Placement Service" "Shipment split optimization"
Expenses:Marketplace:Amazon:InboundPlacement 62.00 USD
Assets:Amazon:Clearing -62.00 USD

5. 退款与退货

客户退货时,需要冲销销售和 COGS,并计入不可退回的费用。假设该 $30 销售的退款行政费为 $0.30

2025-03-02 * "Refund 113-2233445-6677889" "Refunded WATER-BOTTLE"
Assets:Amazon:Clearing -29.70 USD ; 实际扣除
Income:Sales:Amazon 30.00 USD ; 冲销收入
Expenses:Marketplace:Amazon:Other 0.30 USD ; 退款管理费
Assets:Inventory:SKU:WATER-BOTTLE 1 SKU:WATER-BOTTLE {5.00 USD}
Expenses:COGS:Inventory -5.00 USD ; 冲销成本

这里,Income 借记冲销收入,Expenses:COGS 贷记冲销成本。库存单位重新计入资产。Assets:Amazon:Clearing 的净影响即为退款给客户的金额。


快速导入与对账

关键在于映射。导出 Date Range ReportFlat File V2 结算文件后,创建一个简单的映射表,将 Amazon 的 transaction-type 列映射到你的费用账户:

  • OrderIncome:Sales:Amazon
  • CommissionExpenses:Marketplace:Amazon:Referral
  • FBA-fulfillment-feeExpenses:Marketplace:Amazon:FBAFulfillment
  • StorageFeeExpenses:Marketplace:Amazon:Storage:Monthly
  • AgedInventorySurchargeExpenses:Marketplace:Amazon:Storage:Aged
  • InboundPlacementFeeExpenses:Marketplace:Amazon:InboundPlacement
  • LowInventoryLevelFeeExpenses:Marketplace:Amazon:LowInventoryLevel

想实现自动化?Beancount 的导入生态(如 beancount-import)非常强大。只需一次性定义规则,结算文件即可自动导入账本。


实用防护措施(省钱又省力) 💰

  • 规避低库存费:监控历史供给天数。保持足够缓冲库存满足需求,但避免过度积压导致老化库存附加费。
  • 利用新选品福利:新产品上线时,加入 “New Selection” 项目,可暂时免除退货处理费和入库安置费。
  • 定价前检查推荐费率:微小的价格变动可能让你跨越费率阈值,显著影响净利润。务必确认品类的推荐费率和最低费用。
  • 每月对账:每月拉取一次 Date Range Report。此习惯帮助你提前发现 Amazon 费用变动,保持账本可信。

可直接使用的 Beancount 模板

为帮助你快速上手,我已准备好一个入门账本文件,包含:

  • 合理的 Amazon 科目表。
  • 将库存配置为商品,以实现自动批次成本计算。
  • 销售、费用、存储、退款和打款的示例条目。

➡️ 下载模板
(在编辑器中打开文件,替换示例 SKU 与金额,即可开始导入结算行。)


参考与进一步阅读


最后小贴士

如果你进行跨境销售,请为不同站点创建专属子账户(例如 Expenses:Marketplace:Amazon:Referral:US...:Referral:CA)。同时,保持一个统一的 Assets:Amazon:Clearing 用于所有站点的收付款。记账时,确保使用当地的币种或统一转换为主币种,以便后续分析。

祝你在 Amazon 上销售顺利,账本保持干净、透明!

什么是应付账款?Beancount友好指南:以纯文本跟踪供应商账单

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

应付账款(AP)是指企业因已收到但尚未付款的商品或服务而欠供应商的款项。在会计体系中,AP 被归类为资产负债表上的流动负债——通常在一年内(常见为 30 到 60 天)到期。

该概念是权责发生制会计的核心,你在收到发票的瞬间就记录费用及相应负债,而不是等到实际付款时才记录。本指南将展示如何使用纯文本会计工具 Beancount,干净且高效地管理整个 AP 工作流。

2025-08-20-what-is-accounts-payable


快速概览

在深入细节之前,先了解关键要点:

  • 应付账款(AP) 代表你对供应商的短期债务。它位于资产负债表的 Liabilities(负债)栏目下。
  • 权责发生制 vs. 现金制:只有在采用 权责发生制 时才会出现 AP。Beancount 完全支持权责发生制工作流,其网页界面 Fava 会正确显示你的负债。
  • AP vs. AR:简单来说:应付账款是你 的,而应收账款(AR)是别人 你的。

AP 在 Beancount(以及 Fava)中的位置

要开始跟踪 AP,首先需要在账本中声明一个对应的账户。常用约定为:

Liabilities:AccountsPayable

你可以为主要供应商创建子账户,例如 Liabilities:AccountsPayable:ForestPaintSupply

在 Fava 中,此账户会出现在资产负债表的 Liabilities 下。点击即可展开,查看所有未结和已结项目,清晰了解你的负债情况。你也可以在 Fava 的 公开示例账本 中看到 Liabilities:AccountsPayable 账户的实际展示。


Beancount 构建块

一个完整的 AP 工作流依赖以下核心功能:

  1. 账户:主要使用 Liabilities:AccountsPayableAssets:Bank:Checking(现金账户)以及各种费用账户(如 Expenses:Supplies)。
  2. 元数据:可以为任意交易附加键值对。AP 常用的元数据包括 invoice:due:terms:document:。Fava 还能识别 document: 键,并在配置了文档文件夹后自动生成可点击的链接。
  3. 标签 & 链接:使用 #tags(如 #ap)便于过滤,使用 ^links(如 ^INV-10455)将账单与后续付款关联,形成清晰、可审计的链路。
  4. 查询(BQL):Beancount 类 SQL 查询语言(BQL)让你可以直接在命令行使用 bean-query,或在 Fava 的 “Query” 页面生成强大的报表,例如按到期日排序的未结应付账款列表。

核心 AP 工作流

管理 AP 包括两到三步:记录账单、付款,有时还需处理部分付款或折扣。

1) 记录供应商账单(创建负债)

当发票到达时,先记费用并生成应付账款。

; 可选:在主 Beancount 文件中设置文档文件夹
option "documents" "documents"

2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
terms: "2/10, n/30"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD

此条目完成两件关键事:

  1. 立即在 8 月份确认 500 美元费用。
  2. 同时产生 500 美元负债,表明你欠 Forest Paint Supply。

^INV-10455 链接是唯一标识符,稍后在付款时使用相同链接,可将账单与付款逻辑关联。

2) 付款(冲销负债)

付款时创建交易,将资金从银行账户转出并冲销负债。

a) 标准付款(无折扣)

2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD

此条目将 AP 减少 500 美元,同时支出 500 美元的银行余额,负债已清。

b) 提前付款折扣(如 “2/10, n/30”)

若在 10 天内付款,可享 2% 折扣。对 500 美元发票而言,折扣为 10 美元。以下两种记法均可,任选其一并保持一致即可。

; 方式 1:将折扣记为其他收入(冲减费用的效果)
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Income:Discounts:Payables -10.00 USD

; 方式 2:直接冲减原费用
2025-08-12 * "Forest Paint Supply" "Early payment discount INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -490.00 USD
Expenses:Supplies:Paint -10.00 USD

两种方式均冲销 500 美元负债,银行账户实际支出 490 美元,并记录 10 美元的优惠。

3) 部分付款处理

Beancount 的链接功能让部分付款的追踪简洁明了。

; 发票 1,200 美元
2025-08-10 * "Acme Parts" "INV-9001" ^INV-9001
invoice: "INV-9001"
due: "2025-09-09"
Expenses:Parts 1200.00 USD
Liabilities:AccountsPayable -1200.00 USD

; 第一次付款 400 美元
2025-08-20 * "Acme Parts" "Payment INV-9001 (1/3)" ^INV-9001
Liabilities:AccountsPayable 400.00 USD
Assets:Bank:Checking -400.00 USD

; 最终付款 800 美元
2025-09-05 * "Acme Parts" "Payment INV-9001 (final)" ^INV-9001
Liabilities:AccountsPayable 800.00 USD
Assets:Bank:Checking -800.00 USD

通过在三条交易上使用相同的 ^INV-9001 链接,你可以轻松过滤出该账单的完整历史。


实用查询(BQL)

可在 Fava 的 “Query” 选项卡或命令行 bean-query 中运行。

小贴士any_meta() 函数非常适合把 invoice:document: 等元数据字段拉进查询结果。

按供应商统计未结 AP(余额视图)

SELECT payee, COST(SUM(position)) AS amount
WHERE account "^Liabilities:AccountsPayable"
GROUP BY payee
ORDER BY payee;

按发票 + 到期日列出未结 AP

SELECT payee,
any_meta('invoice') AS invoice,
any_meta('due') AS due,
COST(SUM(position)) AS amount
WHERE account "^Liabilities:AccountsPayable"
GROUP BY payee, invoice, due
ORDER BY due, payee;

列出带 PDF 附件的账单

SELECT date, payee, any_meta('invoice') AS invoice, any_meta('document') AS file
WHERE account "^Liabilities:AccountsPayable"
ORDER BY date DESC;

在 Fava 中查看 AP

  • 资产负债表:进入 Balance SheetLiabilitiesAccountsPayable,即可看到总余额并进一步钻取交易明细。
  • 日记账:使用过滤 account:Liabilities:AccountsPayable 或特定链接 ^INV-xxxx,查看单笔账单的完整生命周期。
  • 文档侧栏:若使用 document: 元数据并配置 option "documents",侧栏会列出所有已关联的文档。

AP 老化、周转率与现金流感知

  • 老化表:将未结发票按逾期天数分组(如 1–30 天、31–60 天、60+ 天)。在 Beancount 中,可运行上面的 “按发票 + 到期日列出未结 AP” 查询,导出 CSV 后在电子表格或小型 Python 脚本中分桶统计。
  • AP 周转率:衡量付款速度的快速健康指标,公式为 供应商采购总额 ÷ 平均应付账款。相关指标 应付账款天数(DPO) 大约为 365 ÷ 周转率
  • 无法按时付款:AP 属于短期债务。如供应商同意更长期的分期付款,应将该债务从 AP 调整为 Notes Payable(票据负债)。
2025-10-01 * "Helix Industries" "Convert overdue AP to 12-month note" ^INV-1110
Liabilities:AccountsPayable 2000.00 USD
Liabilities:NotesPayable -2000.00 USD

纯文本账本中的 AP 最佳实践

  • 无纸化:将发票 PDF 存入 documents 文件夹,并使用 document: 元数据关联。
  • 一致使用链接:在账单和所有关联付款上使用唯一的发票号 ^link,保持逻辑连贯。
  • 保持元数据整洁:统一使用 invoice:due:terms:,提升搜索、查询和财务审查效率。
  • 全程权责发生制:若想获得有价值的 AP 报表,请坚持使用权责发生制。Beancount 与 Fava 能完美支持。

复制粘贴示例:供应商账单 + 付款

; ---- Bill ----
2025-08-05 * "Forest Paint Supply" "Paint order INV-10455" ^INV-10455 #ap
invoice: "INV-10455"
due: "2025-09-04"
document: "invoices/2025-08-05-forest-paint-INV-10455.pdf"
Expenses:Supplies:Paint 500.00 USD
Liabilities:AccountsPayable -500.00 USD

; ---- Payment (no discount) ----
2025-09-01 * "Forest Paint Supply" "Payment INV-10455" ^INV-10455
Liabilities:AccountsPayable 500.00 USD
Assets:Bank:Checking -500.00 USD

本指南仅供学习使用,不构成税务、法律或财务建议。

参考与进一步阅读