跳到主要内容

72 篇博文 含有标签「accounting」

查看所有标签

累计折旧(适用于 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 中实现对固定资产的精确折旧管理,并利用自动化工具提升记账效率。祝你财务管理顺利!

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

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

参考与进一步阅读

会计外包:如何交付你的财务任务(针对 Beancount 用户)

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

如果你的账本以纯文本形式保存,你已经在乎清晰、可控和可复现性。外包会计工作并不一定会牺牲这些。相反,若执行得当,它会把你的 Beancount 设置转变为由专业人士运行的可靠、可文档化的工作流——同时你仍然完全拥有数据、仓库以及规则的所有权。

这是一份面向 Beancount 用户的实用指南,内容涵盖哪些工作可以外包、哪些工作应自行保留、如何结构化交付物以及如何评估供应商。目标是将机械性的工作委派出去,却永不放弃控制权。

2025-08-19-会计外包-如何交付你的财务任务


适用人群

如果你符合以下任意一种情况,本指南适合你:

  • 独立创始人、独立开发者和顾问,使用 Beancount 并希望把会计的机械性工作交给他人,以便专注于产品研发或客户服务。
  • 具备财务知识的工程师,需要严格的控制、版本化历史和完整的可审计性,但不想在周末自己导入银行对账单并进行核对。
  • 从一体化供应商迁移的组织,现在更重视数据托管和可复现性。近期诸如 Bench 等会计平台的突发关闭再次提醒我们:退出计划和开放格式不是可选项。(TechCrunchKSV Advisory Report)

Beancount 简介

对于新手来说,Beancount 生态系统由以下核心组件构成,使其在此类工作流中表现强大:

  • Beancount:本质上是一种以纯文本编写的复式记账语言。你编写可读的账本文件,将其提交到 Git 仓库,并使用编译器进行校验和生成财务报表。(GitHub)
  • Fava:Beancount 的优雅网页界面。Fava 读取账本文件,提供交互式资产负债表、损益表、趋势图、过滤器以及类 SQL 查询语言,以便检查数据。(Fava Demo)
  • beangulp:用于自动化数据导入的现代框架。由 Beancount 最初的 importer 演进而来,beangulp 提供编写稳健导入器的工具,能够解析 CSV、OFX、QFX 甚至 PDF 对账单,将原始银行数据转化为结构化的 Beancount 条目。(GitHub)

成功的外包关系应当保留并强化这些优势:版本控制、可读的历史、严格的校验以及工具的可组合性。


外包内容 vs. 自行保留

有效委派的关键在于明确的职责划分。下面阐述战术执行与战略所有权的分界线。

适合外包的任务

这些任务通常重复、基于规则且耗时——非常适合专业人士处理。

  • 对账单收集与导入:下载月度对账单、统一不同文件格式(CSV、OFX、PDF),并运行 beangulp 导入器。包括在金融机构更改对账单格式时维护导入规则。
  • 分类辅助:构建启发式和声明式规则对交易进行分类。可选使用 smart_importer 根据历史数据预测分录,但最终审查始终由人工完成。
  • 核对与完整性检查:使用 balance 断言匹配对账单,调查差异,确保账本无误。
  • 附件与文档整理:获取发票和收据,将其与交易关联并添加元数据,随后在整洁、可复现的目录树中归档源文件。
  • 月末结账与报表:准备标准报表(损益表、资产负债表、现金流量表),并提供 Fava 视图或导出文件供管理层更新使用。
  • 应收/应付及工资准备:准备付款账单、生成发票、催收款项,并为工资文件做预处理,待你最终审阅批准。
  • 税务包准备:年终时生成干净的试算表、支持性明细以及所有 CPA 或税务顾问所需的文件。

自行保留(你拥有意图与风险)

这些职责属于战略层面,定义了业务的财务骨架,必须由你掌控。

  • 科目表设计:账户的结构和命名约定反映了你对业务的认知,这是你的财务地图。
  • 核心会计政策:实体结构、收入确认、资本化政策等决策具有长期的财务和法律影响。
  • 最终批准:所有现金流动(付款、工资发放、重要分录)必须由你最终确认。
  • 战略财务:预测、预算以及定义业务“良好”状态的标准是所有者的根本职责。

Beancount 原生外包工作流

下面展示基于 Git 的结构化协作在实践中的样子。

1) 仓库布局(示例)

仓库是唯一的事实来源。良好的组织结构让流程透明且易于维护。

/ledger
main.beancount # 主账本文件,包含其他文件
accounts/ # 科目表定义
includes/ # 月度或年度交易文件
prices/ # 商品/股票的价格指令
metadata/ # 自定义元数据声明
plugins/ # 自定义 Beancount 插件
documents/ # 银行对账单、收据、发票
/importers # beangulp 导入器 + 规则
config.yaml
bank_x.py
card_y.py
/scripts
import.sh # 导入器编排脚本
close_month.py # 月末校验与报表脚本
/reports
monthly/
year_end/
/ops
runbook.md # 系统运行手册
checklist.md # 程序性检查清单(如月末)
controls.md # 财务控制文档

2) 周循环

常规工作应遵循可预测的节奏,最终交付一个清晰的审阅件。

  1. 导入:供应商拉取对账单并运行 beangulp 导入器,将新交易暂存。
  2. 分类:应用分类规则并使用 smart_importer 建议(如适用),随后进行 人工审查 以纠正歧义。
  3. 核对:添加 balance 断言匹配对账单总额并调查差异。pad 指令应极少使用且必须提供明确解释。
  4. 文档:将相关文档(收据、发票)附加到交易上。
  5. 提交 & 提议:使用描述性提交信息将更改提交,并打开 Pull Request 供你审阅,你可以看到账本中具体的 diff

3) 月末结账(最小可行)

结账是确保准确性并生成可靠报表的关键检查点。

  • 为外币或基于市场的证券更新 price 指令。
  • 检查未结项目:应收、应付、计提、预付费用和贷款。
  • 确认所有 balance 断言通过,且无其他检查失败。
  • 使用标签标记提交(如 2025-08-close),并导出标准报表。
  • 发布 Fava 快照或提供安全的期间 URL。

4) 年终包

全年工作的最终成果是一个整洁、可审计的税务包,供税务顾问使用。内容包括最终试算表、关键科目(如固定资产或存货)的支持明细,以及可直接从 Git 仓库重新生成所有产物的脚本。


安全与访问(不可妥协)

专业工作流必须把安全和数据所有权放在首位。

  • 数据托管优先:你拥有私有 Git 仓库。供应商应从 fork 工作并提交 Pull Request,绝不能只保留唯一的账本副本。
  • 银行访问:尽可能提供只读权限。如需使用聚合服务,请创建隔离凭证并制定明确的撤销流程。
  • 机密与加密:使用 GPG 或 age 对敏感文档进行静态加密。所有服务强制多因素认证,遵循最小权限原则。
  • Fava 访问:你应自行托管 Fava 或本地运行 (fava ledger.beancount),并通过安全隧道或 VPN 共享审阅会话。避免直接暴露至公网。
  • 退出计划:坚持“拔线”手册,包含脚本、配置和文档的托管或托管保证。正如近期事件所示,供应商可能一夜消失,你的财务记录绝不能被锁定。

“好”交付物的样子(每月)

每月结束时,你应收到两类成果:技术制品和业务摘要。

1. 干净的 Pull Request,包含:

  • 本期所有已导入并审查的交易。
  • 任何新建或修改的导入规则的 diff
  • 总结关键假设或手动调整的提交信息。
  • 所有 balance 断言 100% 通过,并附带每个账户已核对的日志。
  • Beancount 文件中指向所有附件的链接,以及缺失文档的报告。
  • 为投资或外币更新的 price 指令。

2. 管理报告包,包含:

  • 标准报表:损益表、资产负债表、现金流量表。
  • 关键指标,如现金流动性、预算与实际差异亮点。
  • 指向预过滤 Fava 视图的直接链接,便于深入交互式分析。

供应商类型(何时适用)

不同供应商适配不同阶段和复杂度。

  • 熟悉 Beancount 的记账员:适合处理核心工作流——持续导入、分类、核对以及月末报告包准备。
  • 精品会计事务所:如果你需要额外的应收/应付、工资协调、多实体合并或税务支持,可考虑此类供应商。
  • 兼职财务总监 / CFO:当你需要战略层面的监督时,他们可帮助设计会计政策、构建财务预测、准备董事会报告并设计内部控制。

合作模式通常为月度固定费用加上根据交付物计费。


评估供应商的技巧

  1. 技术匹配度:确认其熟悉 Beancount、Fava、beangulp 以及相关导入器的实现细节。
  2. 审计痕迹:要求提供完整的变更历史、提交信息和审阅记录。
  3. 安全合规:检查其对机密信息的加密、凭证管理和多因素认证的实践。
  4. 响应速度:在出现差错或紧急需求时,供应商的响应时效至关重要。
  5. 退出机制:确保在合同结束或突发情况下,你能够快速接管全部数据和工作流。

外包流程示例

以下示例展示了从需求定义到交付的完整路径。

  1. 需求定义

    • 列出需要外包的具体任务(如“每月对账单导入”)。
    • 明确交付频率(周/双周/月)。
    • 确定交付格式(Pull Request、附件路径、报表导出位置)。
  2. 供应商筛选

    • 根据关键词搜索或社区推荐,获取候选名单。
    • 要求提供过去使用 Beancount 的案例或代码示例。
    • 进行技术面试,确认其对 balancepadsmart_importer 等概念的理解。
  3. 合同与安全

    • 在合同中写明数据所有权、机密信息加密、只读银行访问以及退出计划。
    • 确认供应商使用的加密工具与你现有的安全体系兼容。
  4. 试点阶段

    • 先外包单月或单科目,评估交付质量、审阅效率和沟通成本。
    • 根据试点结果决定是否扩大外包范围。
  5. 正式上线

    • 将供应商的 fork 合并到主仓库,设定自动化 CI 检查(如 bean-check)。
    • 在每次提交后通过 CI 确认 bean-checkbean-format 等工具通过。
    • 通过 Pull Request 审阅完成后合并,确保所有 balance 断言通过。

常见问题解答

Q1:外包后我还能使用 Fava 吗?
A1:可以。外包仅涉及后端数据处理,你仍然可以随时在本地或自托管的服务器上运行 Fava 查看最新账本。

Q2:如果供应商的仓库出现冲突,我该怎么办?
A2:在 Pull Request 中会显示冲突文件。你可以手动解决冲突后合并,或要求供应商在其 fork 中先完成冲突解决。

Q3:外包会不会导致记账规则不一致?
A3:通过 beangulp 的统一配置文件和声明式科目规则可以确保规则的一致性。所有规则的更改都必须通过 Pull Request 记录。

Q4:如何确保外包后的账本仍然可审计?
A4:保持完整的 Git 提交历史、balance 断言以及所有附件的链接。审计时只需检查对应的提交和附件即可。


开始外包的第一步

  1. 审视当前工作流:列出你每天/每周执行的会计任务。
  2. 划分任务:将可外包的任务标记为 “外包”,其余保持 “自行”。
  3. 准备仓库:确保所有账本、配置和导入规则已提交到私有 Git 仓库,并设置好访问权限。
  4. 寻找供应商:在 Beancount 社区、GitHub 或专业会计平台发布需求,注明你需要熟悉 Beancount 的记账员。
  5. 签订安全协议:在合同中明确数据所有权、加密要求和退出计划。
  6. 启动试点:先外包单月的导入和核对工作,评估交付质量后再逐步扩大范围。

通过上述步骤,你可以在不牺牲透明度、可控性和可复现性的前提下,释放工程资源,专注于业务增长。祝你外包顺利!

会计解决方案:完成会计工作的七大最佳方式

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

无论你是用笔记本电脑经营副业,还是在快速增长的初创公司中扩张,你都有几条可靠的路径来保持账目清晰、准确。但哪条路最适合你?最佳方案取决于你的预算、技术舒适度以及你希望对财务数据拥有多少控制权。

下面是一份清晰的指南,列出七种最常见的会计选项——它们擅长什么、在哪些方面受限,以及何时像 Beancount.io 这样的现代方案是完美契合。

2025-08-16-accounting-solutions-the-top-7-ways-to-get-your-accounting-done


1) Excel

这通常是会计旅程的第一站,因为它极其简便且随处可得。

  • 适合对象: 喜欢完全掌控并且已经熟悉电子表格的创始人和 DIY 建设者。
  • 优点: 入门门槛几乎为零,网上有成千上万的免费模板。其灵活性让你可以构建自定义财务模型,跟踪现成软件无法处理的独特工作流。
  • 缺点: 最大的弊端是巨大的手工工作量。每笔交易都必须手动录入和对账,耗时巨大。更糟的是,极易因公式错误或输入错误而产生“沉默”错误,且没有防护机制捕捉。协作和保持清晰审计轨迹在没有严格纪律的情况下非常笨拙。
  • 最佳场景: 你想要一个快速、无花哨的启动方式,业务非常简单且你极其细致。

2) Google Sheets

Excel 的云原生表亲,Google Sheets 在提供相同核心功能的同时加入了协作特性。

  • 适合对象: 需要简单共享电子表格来跟踪收入和支出的团队。
  • 优点: 内置云备份和极简共享是主要优势。只要有浏览器就能在任何设备上工作,适合随时随地的团队。
  • 缺点: 与 Excel 面临同样的根本缺陷:大量手工工作和高错误风险。某些为 Microsoft 生态系统设计的模板和插件在兼容性上也会出现怪异。
  • 最佳场景: 你的团队已经在使用 Google Workspace,并且愿意接受手工系统的权衡。

3) QuickBooks Online

数十年来,QuickBooks 一直是小企业寻找专用会计软件的默认选择。

  • 适合对象: 想要获得“经典” SMB 软件体验并拥有庞大集成生态系统的小企业。
  • 优点: 其标志性功能是 银行流水,可自动从银行和信用卡账户拉取交易,极大减少手工录入。提供丰富的财务报表,且拥有庞大的会计师和开发者社区支持。
  • 缺点: 虽然交易自动导入,但系统仍需你每周对费用进行分类并对账。界面学习曲线陡峭,功能附加会导致成本上升。最重要的是,它会产生 供应商锁定,若日后想迁出,导出完整财务历史会很困难。
  • 备注与来源: 正如 QuickBooks 所宣传的,自动银行流水是核心功能,但仍需你负责审查和分类以保持账目准确。

4) Xero

作为 QuickBooks 的流行现代替代方案,Xero 提供相似功能,并注重简洁设计和用户体验。

  • 适合对象: 喜欢更现代 UI、但仍需 QuickBooks Online 同等核心能力的企业主。
  • 优点: Xero 同样拥有强大的银行流水和高效的对账工具,使匹配交易变得直观。其简洁的界面常获用户好评,且大量会计师熟悉该平台。
  • 缺点: 低价套餐可能在发票或账单数量上有限制,迫使你升级到更贵的计划,附加功能也会提升总体成本。与 QBO 类似,最终的分类和审查仍需人工完成。
  • 备注与来源: 根据 Xero,其自动银行流水连接全球数千家金融机构,以驱动核心对账工作流。

5) 会计师(CPA)

注册会计师是受过高度专业训练的财务专家,提供战略建议、税务规划和合规服务。

  • 适合对象: 税务策略、处理复杂财务情形、审计以及一次性咨询。
  • 优点: 优秀的 CPA 能在实体结构、税收优化和复杂会计处理等关键决策上提供专业指导。他们的监督显著降低高风险财务事项的风险。
  • 缺点: 对大多数小企业而言,聘请 CPA 事务所进行日常簿记成本过高。要发挥其效用,仍需你提供及时、组织良好的财务记录。
  • 与簿记员的区别? 简而言之,簿记员 记录并整理 历史交易,而会计师和 CPA 则 解释、报告并提供建议,基于这些数据。(Investopedia, Intuit)

6) 传统簿记员

簿记员是一位专业人员,负责每周或每月记录并对账你的财务交易。

  • 适合对象: 想要专人处理每周簿记工作的企业主。
  • 优点: 人工监督大幅降低软件单独难以捕捉的分类错误。每月末,他们会为你生成一套整洁的财务报表供审阅。
  • 缺点: 相较于 DIY 软件,这种方式成本更高,月度保留费常在数百美元起。报告和答复的周转时间取决于簿记员的可用性和工作流程。
  • 现实检视: 对许多小企业而言,结合优秀的簿记员进行每周任务和周期性 CPA 支持税务与策略,是一种持久且有效的组合。(Pioneer Accounting Group)

7) Beancount.io(纯文本会计,超强动力)

这种现代方法将电子表格的控制力、软件的自动化以及复式记账的精准度相结合。

  • 适合对象: 开发者、金融专业人士以及注重细节的创始人,他们要求精准、透明且无需黑箱的自动化。
  • 它是什么: Beancount.io 基于开源 Beancount 方法论构建。你的整个财务账本以人类可读的纯文本形式存在,平台将其转化为实时分析、托管的 Fava 仪表盘,以及 AI 辅助工作流。
  • 团队为何选择它:
    • 可脚本化 & 可审计: 用 Git 对账本进行版本控制。每一次更改都可以在 diff 中审阅,宛如代码。
    • 托管 Fava UI: 直接从基于文本的账本生成损益表、资产负债表和交互式图表,无需手动报表构建。
    • AI 辅助: 加速交易分类和异常检测,同时保留人工最终批准环节。
    • 真正的可移植性: 核心数据仅是一个简单的文本文件,随时可导出,零供应商锁定。
  • 权衡: 若从未使用过纯文本格式的复式记账,会有学习曲线。它最适合那些重视绝对准确性和控制权,而非“按钮即完成”便利感的用户。

更倾向于纯开源和自托管?

你可以随时在本机运行 Beancount 开源引擎,并使用 Fava 作为网页 UI。它功能强大且免费,但你需要自行管理部署、备份和数据集成。Beancount.io 为你处理所有这些事务。


快速对比(一目了然)

方案时间投入自动化程度人工帮助数据控制
Excel
Google Sheets
QuickBooks Online中-高可选
Xero中-高可选
会计师(CPA)N/A高(咨询)
传统簿记员N/A高(每周)
Beancount.io低-中可选

如何选择

  • 想要最大控制、可审计性以及开发者级工作流? 请选择 Beancount.io。你将获得托管的 Fava 仪表盘、AI 辅助以及纯文本可移植性的自由。
  • 想要有人“直接搞定”? 雇佣 簿记员,并保留 CPA 以备税务和战略问题。
  • 习惯传统 SMB 软件生态? QuickBooksXero 都是不错的选择——只需每周预留时间审查并对账。
  • 预算紧张、想先试水? 电子表格 可以短期使用,视其为通往真实系统的垫脚石,而非最终目的地。

为什么纯文本会计正走红

纯文本会计(PTA)工具如 Beancount 正在获得关注,因为它们强调 可复现性、版本控制和透明度。这些价值观深得工程师、数据科学家和金融专业人士的共鸣。如果你认为公司的账本应当像代码一样清晰、可审查,那么你来对地方了。(plaintextaccounting.org)

准备让你的账本活起来了吗?

免费启动一个 Beancount.io 工作区,导入上个月的一小部分交易样本,打开托管的 Fava 仪表盘。你将立即看到损益表和资产负债表出现——随后可使用 AI 辅助细化分类。

会计循环,Beancount 风格

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

财务报表并非凭空出现。它们是称为 会计循环 的结构化、可重复过程的最终产物。虽然原则是通用的,但你使用的工具可以极大改变体验。本指南将以 Beancount——这款强大的纯文本会计工具——为中心,带你走完整个会计循环。

我们将看到 Beancount 的文本优先方法如何消除繁琐步骤、哪些环节应当自动化,以及哪些报告能为你的财务健康提供最清晰的视图。 🧑‍💻

2025-08-13-the-accounting-cycle-beancount-style


TL;DR: Beancount 工作流

  • 捕获 & 记账:.beancount 文本文件中以干净的双重分录记录每笔交易。
  • 验证 & 对账: 使用 balance 断言确认账本与银行对账单匹配,并运行 bean-check 捕获错误。
  • 审查: 生成未调整试算表进行快速检查。
  • 调整: 为应计、递延、折旧及其他期末项目做分录。
  • 复审: 检查调整后的试算表确保一切正确。
  • 发布 & 结账: 生成损益表、资产负债表和现金流量表。Beancount 中的结账是可选的,因为报告具备日期感知能力。

此流程可视化如下:


步骤 1:捕获并记录交易

这是基础步骤。每个财务事件——销售、采购、银行费用——都必须记录。在 Beancount 中,你通过在一个简单的文本文件(通常命名为 main.beancount,或按年份拆分为多个文件)中创建交易来完成此操作。

每笔交易必须遵循双重记账规则,即所有分录的合计必须为零。Beancount 会为你强制执行此规则。

2025-08-10 * "Walmart" "Purchase of office supplies"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
  • 技巧: 使用 #project-phoenix#client-acme 等标签为数据添加维度。这样在后期查询和报告时会极其灵活。

对账卫生 ✅

确保准确性的最强大功能是 balance 断言。在账单周期结束时(例如月末),声明账户的 应有 余额。

2025-08-31 balance Assets:Bank:Checking  12345.67 USD

如果截至该日期影响 Assets:Bank:Checking 的所有交易合计不等于 12345.67 USD,Beancount 将抛出错误。这个简单指令让你的账本成为自审文件。

对于回填历史数据,pad 指令可以自动创建平衡交易,使你的期初余额匹配首个断言。


步骤 2: “记入账本” (免费赠送!)

在传统会计系统中,你先在 “日记账” 中写分录,然后在单独的 “过账” 步骤中将这些数值复制到 “总账”。

使用 Beancount,你的 .beancount 文件即是日记账也是总账。 当你写入并保存交易时,已经完成了过账。没有单独的步骤。这种直接性是纯文本会计的核心优势——所见即所得。


步骤 3:准备未调整试算表

在进行调整之前,需要快速进行 “这是否相加?” 检查。试算表 是列出每个账户及其总余额的简易报告。所有借方余额的总计必须等于所有贷方余额的总计。

你可以使用简单查询生成它:

bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"

或者,使用更直观的方式,在 Fava(Beancount 的网页界面)中打开账本并导航至 “Trial Balance” 报告。留意异常——资产账户出现贷方余额,或费用账户出现奇怪数值。


步骤 4:记调整分录

调整分录对基于 权责发生制 的准确报告至关重要。它们确保收入在赚取时确认,费用在发生时确认,而不论现金何时流动。

常见调整包括:

  • 应计: 记录已赚但未开票的收入,或已发生但未付款的费用。
  • 递延: 处理预付款。如果客户提前为一年服务付款,你将其记为负债 (Liabilities:UnearnedRevenue) 并在每月确认 1/12 的收入。
  • 非现金项目: 记录资产折旧等。
  • 更正: 修正错误或补记银行流水中遗漏的项目,如小额利息收入。

示例:应计收入

你在 8 月 31 日完成项目,但发票要到 9 月才寄出。为在正确期间(8 月)确认收入,做如下调整分录:

2025-08-31 * "Accrue revenue for client project #1042"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD

示例:记录折旧

公司对资产有折旧计划。期末时记入费用:

2025-12-31 * "Annual depreciation on computer equipment"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD

步骤 5:运行调整后试算表并验证

加入调整分录后,再次运行试算表。这就是 调整后试算表,它提供了用于编制财务报表的最终数字。

此时也是运行 Beancount 内置检查的最佳时机:

bean-check main.beancount

该命令会验证所有语法、平衡规则和断言。若无任何输出,说明账本在机械层面上是健全的。


步骤 6:发布财务报表 📊

这就是回报。使用调整后试算表的数字,你可以生成关键财务报告。Fava 是最简便的方式,它提供交互式、可下钻的报告。

  • 损益表(Profit & Loss): 展示一定期间的收入与费用,得出净利润或净亏损。
  • 资产负债表: 在特定日期展示拥有的资产、负债以及净资产(权益)。
  • 现金流量表: 通过展示资金来源和去向,将期初现金与期末现金对账。

如需自定义报告,可使用 Beancount 查询语言(BQL)。以下是月度损益表查询示例:

-- 2025 年 8 月的损益表
SELECT account, sum(position)
WHERE account '^(Income|Expenses)'
AND date >= 2025-08-01 AND date <= 2025-08-31
GROUP BY account ORDER BY account;

步骤 7:结账(可选)

在传统会计中,“结账”过程涉及创建分录将所有临时账户(收入和费用)清零,并将净利润转入名为 留存收益 的权益账户。这正式为下一年重置临时账户。

在 Beancount 中,这一步通常不必进行。 Fava 的报告具备日期感知能力;如果你请求 2025 年的损益表,它只会使用 2025 年的数据。余额不会“溢出”。大多数用户直接保留现有余额。

然而,如果出于合规或股东报告需要进行正式结账,可使用简单的年终交易将收入与费用总额转入 Equity:Retained-Earnings


实用的月度结账检查清单

以下是使用 Beancount 每月结账的可重复检查清单。

  • 捕获: 导入所有银行和信用卡交易。手动录入现金费用或其他渠道项目。
  • 对账: 为所有银行账户、信用卡和贷款账户添加 balance 断言,使其与对账单匹配。
  • 审查: 在 Fava 中查看未调整试算表。调查任何异常或意外余额。检查未付款发票 (Assets:AccountsReceivable) 或未付款账单 (Liabilities:AccountsPayable)。
  • 调整: 记入应计收入/费用、递延收入以及必要的更正分录。
  • 验证: 运行 bean-check。审阅最终的调整后试算表。
  • 发布: 生成损益表和资产负债表。发送给利益相关者或保存备案。
  • 收尾: 如业务需要,可执行结账分录。归档该期间的 .beancount 文件副本。

为什么 Beancount 在会计循环中大放异彩

  • 透明与可审计性: 你的账本是文本文件。可使用 git 对财务历史进行版本控制,使用 diff 审阅变更,并与会计师以清晰、无歧义的格式协作。
  • 完全掌控: 你自行定义科目表,不受软件供应商结构限制。你的数据永远属于你,采用开放格式保存。
  • 无与伦比的强大功能: SQL 类查询(BQL)结合功能丰富的网页界面(Fava),让你对财务数据进行前所未有的切片、切块和洞察。

快速上手的代码片段

简易科目表:

option "title" "My Personal Ledger"
option "operating_currency" "USD"

;; --- Accounts ---
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:CreditCard
1970-01-01 open Liabilities:UnearnedRevenue
1970-01-01 open Equity:Owner:Capital
1970-01-01 open Equity:Retained-Earnings
1970-01-01 open Income:Consulting
1970-01-01 open Expenses:Office:Supplies
1970-01-01 open Expenses:Software
1970-01-01 open Expenses:Depreciation

实用 BQL 查询:

-- 查找所有有未清余额的客户
SELECT payee, sum(position)
WHERE account = 'Assets:AccountsReceivable'
GROUP BY payee
HAVING sum(position) > 0
ORDER BY sum(position) DESC;

通过将永恒的会计循环映射到 Beancount 的现代文本化工具,你获得了一个坚固、透明且经久不衰的系统。祝你记账愉快!

了解应收账款(Beancount 指南)

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

如果你的企业向客户开具账单,你需要一种坚如磐石的方式来追踪谁欠你钱。这正是应收账款(AR)发挥作用的地方。它不仅仅是报告上的一个数字;它是你现金流的命脉。

本指南将带你了解应收账款是什么、为何重要,以及如何使用 Beancount 这套纯文本会计系统,以精准、清晰的方式进行管理。

2025-08-12-understanding-accounts-receivable


TL;DR

应收账款 (AR) 是客户因已交付的商品或服务而欠你的钱。它是资产负债表上的流动资产,是权责发生制会计的核心,也是企业现金流的关键驱动因素。你可以在 Beancount 中通过使用客户子账户、使用 ^links 将发票与付款关联,并运行几个简单查询来干净地追踪 AR。要衡量收款速度,可计算 AR 周转率应收账款天数 (DSO)。为控制风险,可使用 坏账准备


什么是应收账款?

定义
应收账款代表因已交付或已使用但尚未收到付款的商品或服务而应收的款项余额。根据 权责发生制会计,你在赚取收入时确认它,而不是在收到现金时。于是,AR 作为 流动资产 出现在公司资产负债表上。

为何重要
有效管理 AR 对保持健康的流动性至关重要。你收回发票的速度越快,现金转换周期 就越短——即将库存和其他资源的投资转化为现金所需的时间。通过监控 AR 周转率和应收账款天数 (DSO) 等指标,你可以清晰了解收款效率,并采取行动加以改进。

应收账款 vs. 应付账款(单行速记)

  • AR = 欠 的钱(资产)。
  • AP = 欠别人的钱(负债)。

双重记账中的应收账款流程

概念上,应收账款的生命周期包括以下步骤:

  1. 开具发票(赊销):当你发送发票时,资产(具体为应收账款)增加,同时确认已赚取的 Income
  2. 收款:客户付款时,你增加一个资产(Assets:Bank 账户),并减少另一个资产(Assets:AR)。总资产不变,但现金位置改善。
  3. 折扣或贷项:若提供提前付款折扣或开具贷项通知单,你会减少客户的 AR 余额,并以折扣费用或收入冲减(contra‑revenue)的方式抵消。
  4. 坏账:并非所有发票都能收回。为此,你可以确认坏账准备(contra‑asset,降低 AR 账面价值)并计入相应的坏账费用。随后,可针对特定不可收回的发票冲减该准备。

在 Beancount 中建模 AR

Beancount 是一套纯文本、双重记账系统,极其适合追踪 AR。它使用以 # 开头的 tags、以 ^ 开头的 links,以及类似 SQL 的查询语言 (bean-query),让整个 AR 流程透明、可审计且可脚本化。

建议的账户结构

一个清晰的科目表是基础。以下是推荐结构:

Assets:AR
Assets:AR:Clients:<Name>
Assets:AR:Allowance ; 坏账准备(contra‑asset)

Income:Sales
Income:Contra:SalesDiscounts ; 与费用账户的替代方案

Expenses:SalesDiscounts
Expenses:BadDebt

1. 记录赊销(开具发票)

向客户发送发票时,将其记入账本。

2025-07-01 * "Acme Co." "Invoice 2025-045 · Web design" ^INV-2025-045 #ar #client:acme
invoice: "2025-045"
due: "2025-07-31"
document: "/invoices/2025/INV-2025-045.pdf"
Assets:AR:Clients:Acme-Co 1200.00 USD
Income:Sales -1200.00 USD
  • ^INV-2025-045 link 是唯一标识符,用于将此发票与后续付款关联。
  • document: metadata 让 Fava(Beancount 的网页界面)能够直接点击链接打开发票 PDF。

2. 记录全额付款

Acme Co. 全额付款后,清除其应收账款余额。

2025-07-25 * "Acme Co." "Payment for INV-2025-045" ^INV-2025-045 #ar
Assets:Bank:Checking 1200.00 USD
Assets:AR:Clients:Acme-Co -1200.00 USD

使用相同的 ^INV-2025-045 link,可在审计线上清晰连接发票与付款。

3. 处理部分付款

若客户只付款部分,流程相同。link 仍保持关联。

2025-07-20 * "Acme Co." "Partial payment INV-2025-045" ^INV-2025-045 #ar
Assets:Bank:Checking 400.00 USD
Assets:AR:Clients:Acme-Co -400.00 USD

查询 ^INV-2025-045 将显示原始 1200 美元发票、这笔 400 美元付款,剩余 800 美元未收。

4. 处理提前付款折扣

假设对 1000 美元发票提供 2% 的提前付款折扣。

2025-07-10 * "Acme Co." "2% early-payment discount on INV-2025-046" ^INV-2025-046 #ar
Assets:Bank:Checking 980.00 USD
Expenses:SalesDiscounts 20.00 USD
Assets:AR:Clients:Acme-Co -1000.00 USD

这里,你冲销了全部 1000 美元的应收账款,记录了 980 美元现金收入,并将 20 美元折扣计作费用。注意:许多账本将销售折扣视为 contra‑revenue 而非费用。对小型账本而言,使用费用账户更为简便。关键是选定一种方法并保持一致。

5. 在发票中计入销售税

若收取销售税,应在开票时将其记为负债。

2025-07-01 * "Acme Co." "INV-2025-047 · Hardware + tax" ^INV-2025-047 #ar
invoice: "2025-047"
due: "2025-07-31"
Assets:AR:Clients:Acme-Co 1100.00 USD
Income:Sales -1000.00 USD
Liabilities:Tax:Sales -100.00 USD

你为 1100 美元开票,确认 1000 美元收入,同时对税务机关负有 100 美元的税金义务。

6. 处理坏账(坏账准备法)

在美国公认会计原则(GAAP)下,推荐使用坏账准备法,因为它能更好地匹配费用与收入。

步骤 1:在年末估计并建立准备
依据历史数据,估计一定比例的应收账款可能无法收回。

2025-12-31 * "Allowance for doubtful accounts (2% of AR)"
Expenses:BadDebt 300.00 USD
Assets:AR:Allowance -300.00 USD

这会创建一个 contra‑asset 账户(Assets:AR:Allowance),降低总应收账款的账面价值。

步骤 2:冲销具体的坏账
当确认某张发票肯定无法收回时,直接冲减准备。

2026-03-05 * "Write-off INV-2025-049 for Insolvent Client" ^INV-2025-049 #ar
Assets:AR:Allowance 1200.00 USD
Assets:AR:Clients:Insolvent-Client -1200.00 USD

此交易不影响费用,因为费用已在建立准备时确认。


简易报表与查询

使用 Fava 或 bean-query 可快速获取 AR 快照。

按客户列出未收款项

SELECT account, SUM(position)
WHERE account '^Assets:AR'
GROUP BY account
ORDER BY account;

某期间的 AR 活动日志

JOURNAL
WHERE account '^Assets:AR'
AND date >= 2025-07-01 AND date < 2025-08-01;

核心 AR 指标(快速公式)

这些比率的计算可通过 bean-query 导出所需数值(期间销售额、期初/期末 AR 余额),随后在电子表格或脚本中完成。这样既保持账本简洁,又让计算过程透明。

AR 周转率

衡量企业在一定期间内收回平均应收账款的次数。数值越高越好。

ARTurnover=fracNetCreditSalesAverageARAR\\ Turnover = \\frac{Net\\ Credit\\ Sales}{Average\\ AR}

应收账款天数 (DSO)

衡量从销售实现到收款完成的平均天数。数值越低越好。

DSO=(fracAccountsReceivableTotalCreditSales)timesNumberofDaysDSO = (\\frac{Accounts\\ Receivable}{Total\\ Credit\\ Sales}) \\times Number\\ of\\ Days

这两个指标共同反映了将发票转化为现金的效率。


简单的 Beancount 入门文件(复制/粘贴)

; --- Accounts ---------------------------------------------------------------
1970-01-01 open Assets:Bank:Checking USD
1970-01-01 open Assets:AR
1970-01-01 open Assets:AR:Clients:Acme-Co
1970-01-01 open Assets:AR:Allowance
1970-01-01 open Income:Sales
1970-01-01 open Expenses:SalesDiscounts
1970-01-01 open Expenses:BadDebt
1970-01-01 open Liabilities:Tax:Sales USD
; ---------------------------------------------------------------------------

; Example invoice
2025-07-01 * "Acme Co." "Invoice 2025-045 · Web design" ^INV-2025-045 #ar
invoice: "2025-045"
due: "2025-07-31"
document: "/invoices/2025/INV-2025-045.pdf"
Assets:AR:Clients:Acme-Co 1200.00 USD
Income:Sales -1200.00 USD

; Payment received
2025-07-25 * "Acme Co." "Payment INV-2025-045" ^INV-2025-045 #ar
Assets:Bank:Checking 1200.00 USD
Assets:AR:Clients:Acme-Co -1200.00 USD

保持 AR 健康的运营技巧

  • 设定明确条款:在每张发票上注明到期日、逾期费用政策以及提前付款折扣条款。
  • 全链路关联:使用统一的 ^INV-... link 将发票、付款、贷项等全部关联,形成清晰审计链。
  • 附加文档:利用 document: 元数据链接发票 PDF、采购订单、合同等文件。
  • 每月复盘:至少每月检查一次未收款报告,并跟进逾期发票。关注 AR 周转率和 DSO 趋势,及早发现问题。

延伸阅读(参考来源)

S 型公司 vs. C 型公司:Beancount.io 用户的优缺点

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

选择正确的企业实体是创始人做出的最关键的决策之一。它会影响你的税收、融资能力和管理工作量。两种最常见的公司企业结构是 C 型公司和 S 型公司。它们之间有什么区别,哪一种适合你?

简而言之

2025-08-11-s-corp-vs-c-corp-advantages-and-disadvantages

C 型公司在公司层面征税,股东在收到股息时再次征税——这种制度被称为双重征税。S 型公司是“传递”实体,这意味着利润仅在所有者的个人纳税申报表上征税一次,但它们有严格的所有权限制。如果你计划大量再投资并筹集风险投资,C 型公司通常是更清晰、更具扩展性的选择。如果你是一家盈利、业主经营的企业,并且希望在支付自己合理薪水的同时分配现金,那么 S 型公司 可以显着降低你的税单。

无论哪种方式,Beancount.io 都旨在通过纯文本、可审计的条目和可导出财务报表来保持你的账簿清晰,使税务时间变得轻而易举。


快速比较

主题C 型公司S 型公司
如何创建向州政府提交 公司章程(这是默认状态)。首先注册成立公司,然后提交 IRS 表格 2553 以选择 S 型公司身份。
税收双重征税:利润在公司层面征税,然后股东对股息征税。传递:收入在所有者的个人申报表上征税(无公司所得税)。
所有权规则对股东的数量或类型没有限制;允许多种股票类别。≤100 名股东,必须是 仅限美国人,并且只允许 一种经济类别 的股票。
投资者看法受风险投资欢迎,尤其是 特拉华州 C 型公司,这是行业标准。由于传递税收和股票类别限制,对风险投资的吸引力较小。
最适合专注于再投资和筹集外部资金的高增长初创企业。希望通过工资和分配的组合从企业中提取现金的业主经营者。
核心 IRS 表格1120、1120-W、941、1099-DIV(如果支付股息)。1120-S、1120-W(如果适用)、941,向每个所有者签发 附表 K-1

注意: 联邦公司所得税是统一的 21%。但是,C 型公司和 S 型公司的州规则差异很大。始终验证你注册成立和经营所在州的税务处理方式。


什么是 C 型公司?

C 型公司 是美国的标准、默认公司结构。当你向州政府提交公司章程时,除非你另行选择,否则你创建的是 C 型公司。这种结构为其所有者(股东)提供 有限责任保护,需要正式治理(董事会、高级职员、章程),并创建一个投资者和银行认可和理解的法律实体。

C 型公司的征税方式

C 型公司具有独特的税务身份。他们提交自己的公司纳税申报表,即 IRS 表格 1120,并按公司层面的净收入缴纳税款。如果公司随后以 股息 的形式将其税后利润分配给股东,则这些股东必须在其个人纳税申报表上报告该股息收入并再次对其缴纳税款。这就是 C 型公司所熟知的“双重征税”。

为什么选择 C 型公司?

  • 融资和股权: 这是初创企业最大的吸引力。C 型公司可以发行多种股票类别(例如,普通股和优先股),这对于风险投资交易至关重要。构建期权池、SAFE 和可转换票据很简单。
  • 再投资: 如果你计划将所有利润重新投入到业务增长中,你可以通过不支付股息来避免第二层税收。利润按公司税率征税一次,并保留在公司内。
  • 信号: 无论好坏,注册成立为特拉华州 C 型公司都向投资者表明你打算建立一家风险投资规模的公司。

C 型公司的缺点

  • 双重征税: 主要缺点。如果你计划定期分配利润,你将为同一美元支付两次税。
  • 管理负担: C 型公司有更多的合规要求,包括召开董事会会议、维护公司会议记录以及处理更复杂的州和联邦文件。
  • 有限的扣除额: 个人或传递实体可享受的某些税收抵免和扣除额在公司层面不可用。

什么是 S 型公司?

S 型公司 不是一种不同类型的法律实体,而是一种向 IRS 作出的特殊 税务选择。国内公司(或选择作为公司纳税的 LLC)可以提交申请成为 S 型公司,这使其能够在联邦税收方面被视为 传递实体

资格快照

要获得和维持 S 型公司身份,公司必须满足严格的标准:

  • 股东 不超过 100 名
  • 所有股东必须是 美国个人、某些信托或遗产。公司、合伙企业或非居民外国人不能成为股东。
  • 经济上 只有一类股票。(允许投票权的差异,但所有股票必须具有相同的利润和资产权利)。
  • 不是不合格的公司,例如银行或保险公司。
  • 你必须按时提交 表格 2553。对于现有企业,这通常是在纳税年度第三个月的第 15 天(对于日历年企业,则为 3 月 15 日)。

为什么选择 S 型公司?

  • 单层税收: 利润和损失“传递”给企业,直接计入所有者的个人纳税申报表,通过 附表 K-1 报告。公司本身不缴纳联邦所得税。
  • 自雇税节省: 这是一个关键优势。业主-雇员必须支付自己“合理的薪水”,这需缴纳 FICA 税(社会保障和医疗保险)。但是,任何额外利润都可以作为 分配 支付,这无需缴纳自雇税。

S 型公司的缺点

  • 严格的规则: 所有权限制非常严格。意外违反其中一项(例如,将股票出售给不合格的股东)可能导致 S 型公司身份“意外终止”,这可能会产生混乱的税务后果。
  • “合理薪酬”审查: IRS 密切关注支付给业主-雇员的薪水是否合理。为了最大限度地提高免税分配而支付自己人为的低薪水是审计的一个主要危险信号。
  • 州的差异性: 并非所有州都承认 S 型公司选举。有些州对 S 型公司征税,就像它们是 C 型公司一样,或者它们可能会征收单独的实体级税,部分抵消了联邦税收优惠。

你应该选择哪一个?

这个决定归结于你对所有权、资金和现金流的目标。

如果你预计会这样做,请考虑 C 型公司

  • 寻求风险资本家的机构投资。
  • 为创始人和投资者创建不同的股票类别(例如,优先股)。
  • 使用复杂的股权工具,如 SAFE 或可转换票据。
  • 现在或将来拥有非美国所有者。
  • 在从企业中提取大量现金之前,将利润再投资数年。

如果你符合以下情况,请考虑 S 型公司

  • 100% 由符合标准的美国个人所有。
  • 已经盈利,并希望有效地将现金分配给所有者。
  • 可以自信地管理工资单并向业主经营者支付可辩护的市场价格薪水。
  • 不需要为不同类型的业主设置复杂的股权类别。

如果你不确定,许多企业最初都是作为 特拉华州 C 型公司 来保持最大的灵活性。如果你的盈利能力和所有权结构使其有利,你可以稍后评估进行 S 型公司选举。


Beancount.io:你的账簿有何不同(附示例)

无论你选择 C 型公司还是 S 型公司,Beancount.io 的纯文本分类账都使税收和股权的资金流动清晰且可审计。以下是一些示例,说明了你的日记账分录中的主要区别。

1)C 型公司:应计和支付公司所得税

C 型公司负责自己的所得税。你将累积此负债,然后支付。

2025-03-31 * "第一季度应计联邦公司所得税"
Expenses:Taxes:Income 12500.00 USD
Liabilities:Taxes:Federal -12500.00 USD

2025-04-15 * "支付 2025 年第一季度联邦预估税"
Liabilities:Taxes:Federal 12500.00 USD
Assets:Bank:Checking -12500.00 USD

2)C 型公司:支付股息 vs. 保留收益

当 C 型公司分配利润时,它是股息。这是股权的减少,而不是费用。

2025-06-30 * "董事会宣布并支付现金股息"
Equity:Dividends 50000.00 USD
Assets:Bank:Checking -50000.00 USD

如果你保留收益,则只需不发布此交易。利润保留在你的 Equity:RetainedEarnings 账户中。

3)S 型公司:合理薪水和工资税

S 型公司所有者必须获得薪水。这是一项标准的工资支出,包括雇主方税款。

2025-01-31 * "所有者工资单(工资总额和雇主税)"
Expenses:Payroll:Wages 8000.00 USD ; 工资总额
Expenses:Payroll:EmployerFICA 612.00 USD ; 雇主部分税款
Liabilities:Payroll:Federal -2000.00 USD ; 预扣税 + FICA
Liabilities:Payroll:State -400.00 USD ; 州预扣税
Assets:Bank:Checking -6212.00 USD ; 支付给所有者的净工资

2025-02-15 * "将工资税汇给代理机构"
Liabilities:Payroll:Federal 2000.00 USD
Liabilities:Payroll:State 400.00 USD
Assets:Bank:Checking -2400.00 USD

4)S 型公司:所有者分配

这是 S 型公司中 超出 薪水的利润支付方式。请注意,它 不是 费用。它是直接从股权中提取的,类似于股息,但对所有者的税务影响不同。

2025-03-15 * "所有者分配(利润传递)"
Equity:Distributions:OwnerA 20000.00 USD
Assets:Bank:Checking -20000.00 USD

所有者会收到一份附表 K-1,详细说明其在公司利润中的份额,并在其个人申报表上处理税款。

科目表提示

  • 税收:
    • C 型公司: 你将需要 Expenses:Taxes:IncomeLiabilities:Taxes:Federal
    • S 型公司: 此所得税账户通常在联邦层面未使用,但 工资税 账户(Expenses:Payroll:TaxesLiabilities:Payroll:*)是必不可少的。
  • 股权:
    • C 型公司: 标准设置包括 Equity:CommonStockEquity:AdditionalPaidInCapitalEquity:RetainedEarningsEquity:Dividends
    • S 型公司: 你的图表看起来类似,但通常使用 Equity:Distributions 而不是股息。有些跟踪 Equity:AAA(累计调整账户)来管理分配基础。
  • 工资单:
    • 如果两种结构都有雇员(包括业主-雇员),则都需要强大的 Expenses:Payroll:*Liabilities:Payroll:* 账户。

需要的 IRS 表格(常见案例)

  • C 型公司: 表格 1120(年度所得税申报表)、表格 1120-W(预估税)、表格 941(季度工资单)、表格 940(年度失业/FUTA)、表格 1099-DIV(对于每个收到股息的股东)、W-2/W-3。
  • S 型公司: 表格 1120-S(年度所得税申报表)、附表 K-1(对于每个股东)、表格 941/940、W-2/W-3。
  • 州: 请记住,单独的州所得税、特许经营税和工资税申报表可能适用于两者。

常见问题解答快速解答

  • LLC 可以是 S 型公司吗? 是的。LLC 可以提交表格 8832 以选择作为公司纳税,然后提交表格 2553 以选择 S 型公司身份(假设它符合所有资格规则)。

  • S 型公司在税收方面“总是更便宜”吗? 不一定。收益完全取决于你的利润水平、所有者的合理薪水、州税法和个人所有者的税级。

  • S 型公司可以拥有优先股吗? 不,在经济意义上不行。S 型公司只能拥有 一类股票。你可以拥有不同的 投票 权(例如,有投票权和无投票权的普通股),但所有股票必须具有相同的分配权和清算资产权。

  • 我以后可以从一种类型切换到另一种类型吗? 可以,但这可能很复杂。从 C 型公司转换为 S 型公司很常见,但你必须注意时间安排和潜在的内在收益 (BIG) 税收规则。从 S 型公司转换为 C 型公司也是可能的,并且通常在风险投资融资轮之前是必需的。


Beancount.io 如何提供帮助

无论你选择哪种实体,Beancount.io 都能提供你所需的清晰度和控制力。

  • 纯文本、版本控制的账簿,可从单一所有者 S 型公司扩展到风险投资支持的 C 型公司。
  • 清晰的工资单和股权工作流程,可以轻松区分分配和股息、跟踪股票期权费用以及管理留存收益。
  • 为你的注册会计师提供清晰的导出,包括试算表、损益表和资产负债表,以及每个数字的完全可审计的跟踪记录。
  • 用于银行馈送和文档捕获的强大自动化,而不会牺牲人工可读分类账的透明度。

想要抢先一步吗?索取我们的 C 型公司和 S 型公司 Beancount 科目表样本和示例日记账包。


*免责声明: 本指南仅供参考,不构成法律或税务建议。税法和实体法规因州而异,并且可能会发生变化。在选择或更改你的企业实体类型之前,你应咨询合格的注册会计师或律师。*

Beancount.io 与传统会计软件:哪一款最适合你?

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

几十年来,商业会计领域一直由 QuickBooks、Xero 和 FreshBooks 等一系列常见的封闭式、基于 GUI 的系统主导。它们设定了标准,提供易于使用的可视化工作流程,以满足非技术用户的需求。但对于开发人员、高级用户以及任何重视绝对透明度和控制力的人来说,一种截然不同的方法已经出现:Beancount.io。

本文将 Beancount.io 与传统会计软件进行了直接比较。我们将详细分析它们在理念、灵活性、成本和长期可维护性方面的核心差异,以帮助你确定哪个系统真正符合你的需求。

2025-08-08-beancount-io-vs-traditional-accounting-software

1. 理念和工作流程

这两种方法最根本的区别在于其核心理念。

Beancount.io Beancount.io 建立在纯文本会计的理念之上。其核心是,每一笔财务交易都是一个简单文本文件中的条目。这种“会计即代码”的模型优先考虑人类可读、版本可控的记录。你的财务数据以一种永恒的、开放的格式存在,你完全拥有它——它永远不会被供应商锁定。此工作流程专为熟悉代码编辑器、Git 等版本控制系统和命令行工具的用户而设计。

传统软件 传统的会计平台是基于 GUI 和表单驱动的。你可以使用向导、下拉菜单和可视化表单输入数据。这种方法优先考虑即时性和可访问性,使非技术用户可以轻松上手,而无需陡峭的学习曲线。但是,你的数据存储在专有格式或云数据库中,如果你决定迁移到其他服务,通常需要复杂的导出和导入程序。

结论: 如果你优先考虑完全控制、数据所有权、透明度和自动化,那么 Beancount.io 无疑是赢家。如果你需要一个“点击即用”的界面和最小的学习曲线,那么传统软件会感觉更自然。

2. 灵活性与定制化

软件如何适应你的特定需求?

Beancount.io 100% 可编写脚本是 Beancount.io 的超级能力。它与 Python 无缝集成,允许你连接到任何 API,自动从银行馈送中获取数据,根据复杂规则以编程方式标记交易,并生成根据你的确切规范定制的报告。你的扩展和定制能力几乎是无限的,不受任何供应商强加的限制。

传统软件 这些平台提供与 PayPal、Stripe 和各种工资单服务等常用工具的精选集成。虽然方便,但你是在供应商的围墙花园内操作。定制仅限于平台允许的内容,高级报告或自动化通常需要升级到更高级别的计划或购买第三方附加组件。你可以使用他们的 API,但你将始终受其生态系统规则和速率限制的约束。

结论: Beancount.io 为开发人员和技术用户提供了无与伦比的灵活性。传统工具更适合与流行商业应用程序的标准即插即用工作流程。

3. 协作与透明度

你与他人合作和审核记录的方式大相径庭。

Beancount.io Beancount.io 上的协作是通过 Git 管理的。这使得对财务分类账的每次更改都完全透明且可审核。你可以看到谁在何时、为何以及如何进行了更改——就像代码审查工作流程一样。这非常适合已经采用 GitHub 或 GitLab 等工具的分布式团队。此外,没有隐藏的计算;报告中的每个数字都可以追溯到分类帐文件中确切的项目条目,从而确保完全可审核性。

传统软件 协作是通过内置的用户角色和权限来处理的。你可以邀请你的会计师、簿记员或业务合作伙伴通过 Web 界面直接访问账簿。这对于遵循传统财务监督模式的企业非常有效。缺点是某些内部操作,例如税务计算或自动余额调整,可能是难以独立验证逻辑的不透明“黑匣子”。

结论: Beancount.io 非常适合重视粒度可审核性和代码风格协作的团队。传统系统对于实时共享 GUI 访问的会计师来说更友好。

4. 成本和所有权

财务模型和数据所有权的概念截然不同。

Beancount.io 核心 Beancount 软件是开源且免费的。你只需为 Beancount.io 的增值服务付费,其中包括托管、智能自动化和高级功能。没有按席位许可费用,因此你可以扩展团队而不会产生额外费用。最重要的是,零供应商锁定。你的数据是你可以随时随地移动、编辑或存储的文本文件集合。

传统软件 这些服务采用订阅模式,通常按月或按年计费。定价通常根据功能分层,你可能会面临根据组织规模而定的每用户或每公司费用。这会产生依赖性;如果你停止付款,则可能会失去对数据和软件功能的访问权限。这种供应商锁定是一项重大的长期风险。

结论: 从长远来看,Beancount.io 的成本效益要高得多,尤其是对于重视数据主权的技术团队而言。传统软件提供可预测的订阅成本,但会造成长期依赖性。

5. 学习曲线和采用

你能多快上手并运行?

Beancount.io 学习曲线无疑更陡峭。采用此系统需要熟悉基于文本的编辑、理解基本语法以及熟悉 Git 等工具。但是,最初的投资会有回报。一旦掌握,Beancount 就能实现令人难以置信的快速、可重复的工作流程,并提供对你的财务状况更深入、更基础的了解。

传统软件 这些平台专为非技术企业主设计,并提供最小的入门障碍。你可以在几分钟内启动并运行、发送发票和对费用进行分类。也就是说,学习更高级的功能,例如自定义报告构建或设置多实体会计,仍然需要大量时间投入。

结论: 如果你愿意花时间学习一个强大的系统,那么 Beancount.io 是正确的选择。对于需要立竿见影的非技术用户来说,传统软件更容易上手。

并排比较

功能Beancount.io传统会计软件
核心理念会计即代码;纯文本分类账基于 GUI;表单驱动
数据格式开放(纯文本)专有(数据库)
数据所有权100% 用户拥有和可移植供应商控制;潜在的锁定
灵活性无限;使用 Python 完全可编写脚本受限于供应商的生态系统和 API
协作基于 Git;透明的更改历史记录基于角色的用户权限
透明度完全可审核;无隐藏计算某些计算可能不透明
成本模型开源核心;为托管/自动化付费每月/每年订阅(SaaS)
学习曲线对于非技术用户来说更陡峭低;专为快速入门而设计
理想用户开发人员、高级用户、数据分析师中小企业所有者、非技术团队

何时选择 each

最终的决定取决于你团队的技能、优先级和工作流程。

如果你符合以下条件,请选择 Beancount.io:

  • 是开发人员、数据分析师或技术倾向的高级用户。
  • 最重视绝对透明度、控制力和长期数据可移植性。
  • 想要完全自动化你的会计并将其深度集成到你的自定义工作流程中。
  • 习惯于以与源代码相同的严谨性处理你的财务记录。

如果你符合以下条件,请选择传统会计软件:

  • 想要一个快速入门、可视化的界面,无需任何技术设置。
  • 需要提供即时的、会计师友好的访问,只需最少的培训。
  • 更喜欢由供应商处理所有更新和合规性的托管解决方案。
  • 你的集成需求可以通过流行的现成应用程序来满足。

最后的想法

Beancount.io 并不是想成为一个更好的 QuickBooks——它是一种根本不同的思维方式。它代表会计即代码。对于技术专业人员来说,这种转变提供了与 Git 版本控制为软件开发带来的同样的飞跃:完全透明、完美再现性和最终控制。

同时,传统会计软件继续在开箱即用的易用性和为非技术团队提供的现成集成方面胜出。正确的选择不在于哪个总体上“更好”,而在于哪个完美适合你的工作流程、你的优先级以及你对财务数据要求的控制程度。

S-Corp 选举:Beancount 用户指南

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

它是什么,何时值得,以及如何在你的账本中清晰地建模(附示例)。

⚠️ 本指南仅适用于美国,仅供教育之用。请咨询税务专业人士以了解你的具体情况。

简要概述

  • S-corp 是你通过向美国国税局(IRS)提交 2553 表格 选择的一种 税务状态,以便企业利润直接转到所有者的个人纳税申报表。一个关键要求是你必须向所有者经营者支付 合理的 W-2 工资,然后才能以股息或分配的形式获取任何利润。
  • 截止日期很重要:对于现有企业,你必须在你想让 S-corp 状态生效的纳税年度的 第 3 个月的第 15 天 或之前提交申请。对于 2025 年的日历年选举,2025 年 3 月 15 日是星期六,因此实际截止日期是下一个工作日,即 2025 年 3 月 17 日,星期一
  • 为什么要这样做?主要吸引力在于潜在的 自雇税节省。虽然你的 W-2 工资需要缴纳 FICA 税,但分配则不需要。但是,这种好处伴随着额外的工资、合规性以及某些州的额外实体级税的成本。
  • 在 Beancount 中,将工资与分配分开 至关重要。你需要跟踪工资负债,处理持有公司 2% 以上股份的股东的健康保险的特殊会计处理,并通过权益账户明确记录分配。

2025-08-08-s-corp-election

什么是 S-corp 选举?

从本质上讲,S-corp 选举是你向 IRS 提出更改企业纳税方式的请求。通过提交 2553 表格,你请求 IRS 根据《国内税收法典》的 S 子章 对你的公司或 LLC 征税。这使你的企业成为“传递”实体,这意味着其收入、亏损、扣除额和抵免额直接传递给股东的个人纳税申报表。这纯粹是一种税务分类,而不是一种不同类型的合法商业实体。

对所有者经营者的主要影响

一旦选举生效,你的角色基本上分为两部分:你现在既是公司的 股东,又是公司的 雇员

这种区别至关重要。你因劳动获得的报酬必须以 W-2 工资 的形式支付,这需要缴纳标准的工资税(社会保障和医疗保险)。任何剩余利润都可以作为 分配 支付,这通常不需要缴纳自雇税。IRS 坚持要求你在获得任何分配之前,为自己支付 合理的工资

你应该选择 S-corp 状态吗?

一旦你的企业产生稳定且有意义的利润,通常值得评估 S-corp 选举。一个常见的经验法则是,当你的 持续业务利润 可以轻松地支持你所在职位的 市场工资,并且在支付所有新的管理成本后还有足够的剩余利润进行分配时,就应该考虑 S-corp 选举。

确切的盈亏平衡点取决于你的具体情况,并取决于几个因素:

  • 你的“合理工资”:在你的行业中,企业会为具有你的技能和职责的人支付多少工资?这个数字是你的 W-2 工资的基准,并且会受到 IRS 的审查。
  • 州税和费用:一些州有自己的规定。例如,加州对 S-corp 的净收入征收 1.5% 的税,外加每年至少 800 美元的特许经营税。
  • 额外成本:你需要一个工资服务,并且你将支付失业保险。由于增加了复杂性,你的簿记和税务准备费用也可能会增加。
  • 合格商业收入扣除额(199A 条款):S-corp 选举会影响你的合格商业收入扣除额。你支付给自己的 W-2 工资可以帮助你获得全额扣除额,或者在收入较高的情况下成为限制因素。

资格和时间安排

并非所有企业都可以成为 S-corp。以下是高级要求:

  • 它必须是国内公司或符合条件的 LLC。
  • 它不能拥有超过 100 名股东。
  • 它只能拥有一种类型的股票。
  • 股东必须是个人、某些信托或遗产(即,不能是合伙企业、公司或非居民外国人股东)。

何时提交 2553 表格

时间安排至关重要,新企业和现有企业的规则略有不同。

  • 对于新企业:你必须在你的第一个纳税年度的第一天后的 2 个月零 15 天 内提交申请。例如,如果你的企业的纳税年度从 1 月 7 日开始,你的截止日期是 3 月 21 日。
  • 对于现有的 C-corp(或作为 C-corp 征税的 LLC):你可以在上一个纳税年度的任何时间或你想让选举生效的年度的 第 3 个月的第 15 天 或之前提交申请。如果该日期是周末或节假日,截止日期将延至下一个工作日,这是根据 IRC 第 7503 条的规定。

如果你错过了截止日期怎么办? 不要惊慌。IRS 根据 2013-30 号税收程序 提供了延迟选举救济的途径。如果你有合理的延迟提交申请的理由,你通常可以在预定生效日期后的 3 年零 75 天 内申请此救济。

合理工资:让人犯错的部分

这是 S-corp 结构中最受审查的方面。IRS 非常明确:股东-雇员必须在 任何利润作为分配之前 获得 合理的报酬

“合理”是什么意思?没有单一的金额。IRS 和法院会考虑各种因素来确定你的工资是否合适,包括你的职责、你花费的工作时间、你的经验水平以及类似企业会为类似服务支付的费用。如果你支付给自己的 W-2 工资非常低,同时获得大量分配,IRS 可能会仔细审查。这通常被视为试图逃避工资税的危险信号。

2% 以上股东的健康保险和附加福利

对于持有公司 2% 以上股份的股东的健康保险,S-corp 有一个特殊规则。如果 S-corp 支付或报销这些健康保险费,则该费用可由 S-corp 扣除

但是,这些保费的价值也必须 包含在股东-雇员的 W-2 工资中。虽然这笔金额需要缴纳联邦所得税,但只要处理得当,它就可以免缴社会保障和医疗保险(FICA)税。你必须与你的工资提供商协调,以确保这些金额在你的 W-2 上正确报告。

州级陷阱(示例)

联邦 S-corp 状态并不总是在州一级直接适用。请务必查看你所在州的具体规定。

  • 加州:S-corp 需要对其加州来源的净收入缴纳 1.5% 的税。此外,大多数公司必须每年支付 800 美元的最低特许经营税(尽管第一年有一些例外)。
  • 纽约:仅仅进行联邦 S-corp 选举是不够的。你还必须提交单独的州级选举,即 CT-6 表格,才能被视为纽约 S-corp。如果不这样做,你将在州一级被作为标准 C-corp 征税。

如何在 Beancount 中清晰地建模 S-corp

纯文本会计非常适合管理 S-corp 增加的复杂性。以下是构建账本的方法。

建议的会计科目表(入门)

此基本结构将你的工资支出与分配分开,并创建负债账户来跟踪你欠的税款。

; 核心银行和收入
1970-01-01 open Assets:Bank:Checking USD
1970-01-01 open Income:Sales USD
1970-01-01 open Income:Other USD

; 工资支出和负债
1970-01-01 open Expenses:Payroll:Wages USD
1970-01-01 open Expenses:Payroll:EmployerTaxes USD
1970-01-01 open Expenses:Benefits:HealthInsurance USD
1970-01-01 open Liabilities:Payroll:Federal:FIT USD
1970-01-01 open Liabilities:Payroll:FICA USD
1970-01-01 open Liabilities:Payroll:Medicare USD
1970-01-01 open Liabilities:Payroll:State:Withholding USD

; 权益
1970-01-01 open Equity:ContributedCapital USD
1970-01-01 open Equity:Distributions USD
1970-01-01 open Equity:RetainedEarnings USD

典型的工资单运行(简化)

你的工资提供商(例如,Gusto、ADP)将从你的银行账户中扣除你的净工资和总税负。你的 Beancount 交易应将其细分为工资总额、雇主税和相应的负债。

; 此交易记录了 10 万美元的年薪,按月支付。
2025-01-31 * "Gusto" "一月工资单 — 股东-雇员"
Expenses:Payroll:Wages 8,333.33 USD ; 工资总额
Expenses:Payroll:EmployerTaxes 637.50 USD ; 雇主方 FICA/Medicare
Liabilities:Payroll:Federal:FIT -1,200.00 USD ; 雇员预扣税
Liabilities:Payroll:FICA -516.67 USD ; 雇员预扣税
Liabilities:Payroll:Medicare -120.83 USD ; 雇员预扣税
Assets:Bank:Checking -7,133.33 USD ; 从银行扣除的净工资

当你的工资提供商代表你将这些税款汇给政府时,你将记录另一笔交易以清除负债。

; 这表示你的工资提供商支付的税款。
2025-02-15 * "EFTPS" "联邦工资税存款"
Liabilities:Payroll:Federal:FIT 1,200.00 USD
Liabilities:Payroll:FICA 516.67 USD
Liabilities:Payroll:Medicare 120.83 USD
Assets:Bank:Checking -1,837.50 USD ; 此金额与 Gusto 扣除的税款部分相符。

2% 以上股东的健康保险

将保费支付记录为业务支出。你可以使用元数据来提醒自己,这需要在 W-2 上报告。

2025-02-01 * "BlueCross" "股东健康保险(在 W-2 上报告)"
Expenses:Benefits:HealthInsurance 600.00 USD ; w2: "true"
Assets:Bank:Checking -600.00 USD

所有者分配(非工资)

分配是权益的减少,而不是业务支出。将它们与工资单分开记录。

2025-03-31 * "所有者分配" "第一季度分配"
Equity:Distributions 20,000.00 USD
Assets:Bank:Checking -20,000.00 USD

跟踪股东基数(可选,但建议)

你的股东基数决定了分配是否免税,以及你是否可以在个人申报表上扣除业务亏损。虽然官方计算是在你的纳税申报表上完成的,但你可以在 Beancount 中使用专用的权益子账户或元数据来跟踪估算值。你将每年将其与你从 S-corp 收到的附表 K-1 进行核对。

关于合格商业收入扣除额(199A 条款)的说明

包括 S-corp 在内的传递企业的业主可能有资格获得 最高 20% 的合格商业收入 (QBI) 扣除额。但是,对于收入超过一定门槛的纳税人,此扣除额可能会受到企业支付的 W-2 工资 金额的限制。这造成了一种复杂的相互作用:S-corp 要求支付合理的工资,而这些工资会影响你的 QBI 扣除额——有时会有帮助,有时会有限制。这是与你的税务专业人士一起建模的关键领域。

选举后运营上的变化

切换到 S-corp 会增加一些管理层:

  • 运行工资单:你必须正式运行工资单,包括预扣税款、雇主税款、季度申报和年终 W-2。
  • 提交 1120-S 表格:这是 S-corp 的年度纳税申报表。你还将向每位股东签发 附表 K-1,详细说明他们所占公司财务业绩的份额。
  • 正确处理股东健康保险:确保 2% 以上所有者的保费包含在其 W-2 工资中。
  • 注意州级规定:随时了解任何所需的州级 S-corp 选举或实体税(如在加州和纽约)。

要避免的常见陷阱

  • 延迟或无效选举:仔细检查截止日期,并确保所有需要的股东都签署了 2553 表格。如果你错过了,请根据税收程序 2013-30 调查救济措施。
  • 不合理的工资:不要试图支付给自己人为的低工资。根据你的职位和市场数据,记录你的薪酬为何合理。
  • 混淆工资和分配:在你的账簿中保持这些交易的清晰和分开。分配不是工资。
  • 忽略州级要求:忘记州级选举或未支付实体级税款可能会导致罚款和合规性问题。

快速核对清单

  • 确认你符合条件,并且潜在的税收节省大于新的成本。
  • 2553 表格 的提交截止日期添加到日历中(并记住周末/节假日规则)。
  • 设置工资单服务,并确定有充分记录的合理工资。
  • 计划仅在支付工资和业务支出 之后 才进行分配。
  • 调查并遵守你所在州的特定 S-corp 申报要求和税收。
  • 使用必要的工资单、负债和股东权益账户更新你的 Beancount 账本。

Beancount S‑Corp 入门(中性模板)

;
; Beancount S‑Corp 入门(中性模板)
; 生成日期:2025-08-09
; ---
; 如何使用:
; 1) 搜索“TODO”并填写你的州、工资单提供商、EIN 和银行名称。
; 2) 将工资和所有者分配分开。
; 3) 与你的工资单提供商协调,在 W‑2(第 1 格)上报告 >2% 股东健康保险。
; 4) 如果你不在加州/纽约州,请删除或修改加州/纽约州示例。
;
; 注意:
; - 这是一个簿记模板,不是税务建议。
; - 假设运营货币为美元。根据需要更改。
;

option "title" "S‑Corp 账本"
option "operating_currency" "USD"
commodity USD

; === 账户(自 2025-01-01 起开放;根据需要调整日期) ==================
2025-01-01 open Assets:Bank:Checking USD ; TODO:重命名为你的银行(例如,Assets:Bank:Chase:Operating)
2025-01-01 open Assets:Bank:Savings USD
2025-01-01 open Assets:AccountsReceivable USD
2025-01-01 open Assets:PrepaidExpenses USD

2025-01-01 open Liabilities:CreditCard:Corporate USD
2025-01-01 open Liabilities:Payroll:Federal:FIT USD
2025-01-01 open Liabilities:Payroll:Federal:FICA USD
2025-01-01 open Liabilities:Payroll:Federal:Medicare USD
2025-01-01 open Liabilities:Payroll:Federal:FUTA USD
2025-01-01 open Liabilities:Payroll:State:Withholding USD ; TODO:重命名州(例如,CA、NY)
2025-01-01 open Liabilities:Payroll:State:Unemployment USD
2025-01-01 open Liabilities:Payroll:Local USD

2025-01-01 open Equity:ContributedCapital USD
2025-01-01 open Equity:Distributions USD
2025-01-01 open Equity:RetainedEarnings USD
2025-01-01 open Equity:OpeningBalances USD

2025-01-01 open Income:Sales USD
2025-01-01 open Income:Other USD

2025-01-01 open Expenses:COGS USD
2025-01-01 open Expenses:Payroll:Wages USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:FICA USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:Medicare USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:FUTA USD
2025-01-01 open Expenses:Payroll:EmployerTaxes:State USD
2025-01-01 open Expenses:Benefits:HealthInsurance USD
2025-01-01 open Expenses:Benefits:HSA USD
2025-01-01 open Expenses:Benefits:Retirement:Match USD
2025-01-01 open Expenses:Taxes:State:S‑Corp USD ; 例如,加州 1.5% 的实体级税
2025-01-01 open Expenses:Taxes:State:Franchise USD ; 例如,加州 800 美元的最低特许经营税
2025-01-01 open Expenses:Professional:Payroll USD
2025-01-01 open Expenses:Professional:Accounting USD
2025-01-01 open Expenses:Professional:Legal USD
2025-01-01 open Expenses:BankFees USD
2025-01-01 open Expenses:Software USD
2025-01-01 open Expenses:Office USD
2025-01-01 open Expenses:Meals USD
2025-01-01 open Expenses:Travel USD
2025-01-01 open Expenses:Insurance:GeneralLiability USD


; === 示例:所有者注资 =================================================
2025-01-02 * "所有者" "初始资本投入"
Assets:Bank:Checking 25,000.00 USD
Equity:ContributedCapital -25,000.00 USD

; === 示例:客户付款 =====================================================
2025-01-15 * "Stripe" "一月订阅收入"
Assets:Bank:Checking 12,000.00 USD
Income:Sales -12,000.00 USD

; === 示例:月工资单(单一股东-雇员) ========================
; 选择的数字可以完美平衡。根据你的实际情况调整 FIT/州数字。
; 工资总额:8,333.33 | 雇员 FIT:1,200.00 | 州预扣税:300.00
; 雇员 FICA (6.2%):516.67 | 雇员 Medicare (1.45%):120.83
; 雇主 FICA:516.67 | 雇主 Medicare:120.83
; 净工资:6,195.83
2025-01-31 * "Gusto" "一月工资单 — 股东-雇员"
Expenses:Payroll:Wages 8,333.33 USD
Expenses:Payroll:EmployerTaxes:FICA 516.67 USD
Expenses:Payroll:EmployerTaxes:Medicare 120.83 USD
Liabilities:Payroll:Federal:FIT -1,200.00 USD
Liabilities:Payroll:Federal:FICA -1,033.34 USD ; 雇员 + 雇主
Liabilities:Payroll:Federal:Medicare -241.66 USD ; 雇员 + 雇主
Liabilities:Payroll:State:Withholding -300.00 USD
Assets:Bank:Checking -6,195.83 USD

; === 示例:工资税存款(EFTPS 和州) =================================
2025-02-15 * "EFTPS" "联邦工资存款(FIT、FICA、Medicare)"
Liabilities:Payroll:Federal:FIT 1,200.00 USD
Liabilities:Payroll:Federal:FICA 1,033.34 USD
Liabilities:Payroll:Federal:Medicare 241.66 USD
Assets:Bank:Checking -2,475.00 USD

2025-02-16 * "STATE DOR" "州工资预扣税"
Liabilities:Payroll:State:Withholding 300.00 USD
Assets:Bank:Checking -300.00 USD

; === 示例:>2% 股东的健康保险 =================================
; 与工资单协调,以便将年度保费总额包含在 W‑2 第 1 格中。
; 保费本身在此处可扣除;如果处理得当,请勿对其预扣 SS/Medicare。
2025-02-01 * "BlueCross" "股东健康保险(W‑2 包含由工资单处理)"
Expenses:Benefits:HealthInsurance 600.00 USD ; w2: "true"
Assets:Bank:Checking -600.00 USD

; === 示例:所有者分配(非工资) =======================================
2025-03-31 * "所有者分配" "第一季度分配"
Equity:Distributions 20,000.00 USD
Assets:Bank:Checking -20,000.00 USD

; === 州示例(如果不适用,请删除/编辑) =================================
; 加州最低特许经营税(并非总是第一年;请查看规则)
2025-04-15 * "California FTB" "年度特许经营税"
Expenses:Taxes:State:Franchise 800.00 USD
Assets:Bank:Checking -800.00 USD

; 加州 S‑Corp 1.5% 实体级税(示例估计付款)
2025-06-15 * "California FTB" "S‑Corp 税估计"
Expenses:Taxes:State:S‑Corp 1,500.00 USD
Assets:Bank:Checking -1,500.00 USD

; 纽约单独的 S 选举 (CT‑6) 没有直接的账本影响;占位符注释。
2025-01-05 note Equity:RetainedEarnings "已提交纽约 S‑选举 (CT‑6) — 仅为簿记注释(无条目)"

; === 基数跟踪(可选 — 账外备忘录) =====================================
2025-12-31 note Equity:RetainedEarnings "基数滚动:+ 资本 25,000 + 收入 60,000 − 分配 20,000 = 期末基数 65,000(与 K‑1 核对)"


; === 导入提示(来自 Gusto/ADP 的 CSV) =============================================
; - 对于 Gusto 工资单注册 CSV,映射列:
; 工资总额 -> Expenses:Payroll:Wages
; 雇员 FIT/FICA/Medicare -> Liabilities:Payroll:Federal:FIT/FICA/Medicare(负数)
; 州预扣税 -> Liabilities:Payroll:State:Withholding(负数)
; 雇主 FICA/Medicare/FUTA/SUTA -> Expenses:Payroll:EmployerTaxes:*(正数)和
; 如果你的 CSV 将雇主税列为应付金额,请将其反映为 Liabilities:*(负数),
; 然后用你的 EFTPS/州付款清除。
; 净工资 -> Assets:Bank:Checking(负数,与支付日期匹配)
; - 公司支付的健康保险:
; 供应商付款 -> Expenses:Benefits:HealthInsurance(正数)/ 银行(负数);
; 确保工资单将 >2% 股东的年度保费包含在 W‑2 第 1 格中。
;
; 提示:
; - 将分配保留在工资单账户之外。
; - 使用 #payroll #distribution 等标签在 Fava 中进行过滤。
; - 考虑为税务准备金(联邦/州)使用单独的银行子账户。