跳到主要内容

22 篇博文 含有标签「Plain-Text Accounting」

查看所有标签

Beancount.io v3.0: 你的财务数据,由你掌控

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

大多数财务软件都强迫你信任它们来处理你的数据。它们拥有、控制并锁定你。我们相信你应该得到更好的。

今天,我们发布下一代 Beancount.io,它建立在一个简单的原则之上:你的财务数据应该属于你,而不是我们。通过原生的 Git 集成,你可以将完整的会计账本拉取到你自己的机器上,使用你想要的任何工具进行编辑,然后将更改推送回去。没有锁定。没有专有格式。只有你的数据,在你的掌控之下。

此版本侧重于三个核心目标,这些目标对于使用纯文本会计管理财务的人员来说至关重要:

  1. 通过原生 Git 集成实现真正的数据所有权
  2. 为团队、合作伙伴和会计师提供无缝协作
  3. 直观的界面,使每个人都可以访问纯文本会计

Dashboard Overview

强大的财务报告触手可及

新的仪表盘包括全面的财务报告工具,可帮助你一目了然地了解你的财务状况:

利润表

Income Statement Dashboard

跟踪你在不同商品上的净利润、收入和支出随时间的变化。利润表视图提供了收入来源和支出模式的清晰细分,帮助你识别趋势并做出明智的财务决策。通过交互式图表可视化你的财务业绩,这些图表显示你的收入和支出如何按月或按年变化。

资产负债表

Balance Sheet Dashboard

通过全面的资产负债表视图,监控你在不同商品上的净资产随时间的变化。查看你在任何时间点的资产、负债和权益,并使用历史跟踪来显示你的财务状况如何变化。这个强大的工具可以帮助你了解你的整体财务健康状况,并跟踪你朝着财务目标取得的进展。

试算平衡表

Trial Balance Dashboard

试算平衡表视图提供了特定时间点所有帐户余额的完整快照。此视图非常适合对帐并确保你的账簿平衡,它并排显示借方和贷方,从而可以轻松验证会计记录的准确性。

帐户详细信息视图

Account Detail Dashboard

使用帐户详细信息视图深入了解任何帐户。通过直观的图表和图形查看帐户余额值和随时间的变化。该视图包括一个全面的帐户日记帐,其中显示了影响该帐户的所有交易,包括子帐户,从而使你可以完全了解资金如何流经你的财务系统。

现代文件编辑器

File Editor Dashboard

新的仪表盘引入了一个经过完全重新设计的文件编辑器,使编辑 Beancount 账本文件成为一种乐趣。新的编辑器采用现代化的响应式设计原则构建,无论你是在台式机、平板电脑还是移动设备上,都可以提供流畅、直观的编辑体验。

Git 集成:你的账本,你的方式

最受欢迎的功能之一现在来了:原生 Git 集成。使用新版本,你可以使用标准的 Git 协议无缝地拉取你的账本帐户,从而使你可以完全控制你的财务数据。

你可以做什么:

# 将你的账本克隆到你的机器
git clone ssh://[email protected]:2222/you/ledger.git

# 使用你喜欢的工具在本地编辑
vim 2025.bean

# 推送更改
git commit -am "Added Q4 transactions"
git push

为什么这很重要(数据主权):

  • 真正的退出计划:你的完整财务历史记录位于标准的 Git 存储库中。你停止向我们付款?你保留一切。
  • 工具无关:使用 VS Code、Vim、Emacs 或专门的 Beancount 工具进行编辑。你的选择,而不是我们的。
  • 完整的审计跟踪:每个更改都使用 Git 的完整历史记录进行跟踪,准确显示谁在何时更改了什么。非常适合合规性和安心。
  • 分布式备份:Git 的分布式特性意味着你的机器上具有自动的版本化备份。

这使得 Beancount.io 成为唯一一个使你的数据 便携而不是更不便携的平台。

团队协作:专为团队的实际工作方式而设计

无论你是经营一家小型企业、与会计师合作还是与合作伙伴管理家庭财务,协作都很重要。

Collaborate with Your Team

新的协作系统使这变得自然且经济实惠:

  • 邀请协作者:只需通过电子邮件邀请其他人加入你的账本作为协作者
  • 实时更新:实时查看协作者所做的更改,使每个人都保持同步
  • 活动历史记录:跟踪谁在何时进行了哪些更改,从而保持完全的责任感

非常适合小型企业、与会计师合作的自由职业者或任何需要分担财务管理责任的人。协作从未如此简单或安全。

多账本支持:以你的方式组织你的财务

新版本支持创建多个账本,从而使你可以灵活地按照你的需要精确地组织你的财务。无论你是想要将个人和企业财务、不同的项目或不同的实体分开,新版本都可以简化操作。

多账本支持的好处:

  • 关注点分离:将个人和企业财务完全分开
  • 基于项目的组织:为不同的项目或客户创建专用账本
  • 灵活的结构:以对你独特的情况有意义的方式组织你的会计系统
  • 轻松切换:使用直观的账本切换器在账本之间无缝移动

根据需要创建任意数量的账本,以保持你的财务记录井井有条且易于管理。

公共账本:与社区分享和学习

新版本引入了公共账本共享,允许你与 Beancount 社区分享你结构良好的账本。此功能促进了知识共享,并帮助其他人学习组织自己会计系统的最佳实践。

公共账本的工作方式:

  • 分享你的专业知识并让其广泛传播:公开你的账本,以帮助其他人从你的设置中学习
  • 发现最佳实践:浏览公共账本,了解其他人如何组织他们的财务
  • 社区学习和社交网络:从有效使用 Beancount 的真实示例中学习
  • 隐私控制:你可以决定公开哪些账本 — 你的私人账本将保持完全私密

通过分享优秀的账本示例,我们正在建立一个更强大、知识更渊博的 Beancount 社区,每个人都可以在其中共同学习和进步。

增强的 Fava 和 Beancount 社区功能

我们集成了来自 Beancount 社区的流行功能,这些功能可以解决实际的工作流程问题:

  • 费用摊销 (amortize_over):自动将年度订阅或预付费用分摊到几个月
  • 财务预测 (forecast):根据经常性交易预测未来的现金流
  • 文档链接 (link_documents):将收据和发票与交易保持连接
  • 自动文档发现 (tag_discovered_documents):自动标记和组织支持文档

这些不是实验性功能 — 它们是来自 Beancount 社区的经过实战检验的工具,现在已无缝集成。

更快的性能,更流畅的体验

在底层,新版本包括显着的性能优化,使一切感觉更快:

  • 更快的加载时间:即使对于大型账本,页面和报告的加载速度也明显加快
  • 更流畅的交互:UI 交互更灵敏,在视图之间导航时减少了延迟
  • 优化的数据处理:复杂的计算和报告生成效率更高
  • 更好的资源管理:系统更智能地使用资源,即使在高峰使用期间也能确保一致的性能

这些改进意味着你花费更少的时间等待,而将更多的时间用于有效地管理你的财务。

隐私与安全:你的数据,你的规则

我们通过在你完全拥有的私有加密 Git 存储库中保护你的账本来捍卫你的数据主权,你可以随意导出和删除它。这种控制需要责任:你通过管理受信任的协作者来确定访问权限,并且在发布账本时必须格外小心,因为你了解公共数据对互联网永久可见,并且应彻底清除敏感详细信息。最终,你的数据仍然是你的 — 受我们的基础设施保护,但严格受你的规则约束。

接下来是什么?

新版本仅仅是我们努力使 Beancount.io 成为可用的最佳纯文本会计平台的开始,目标是成为财务领域的 GitHub。传统的财务软件依赖于“数据锁定”。Beancount.io 正在构建一种不同的防御能力:协议锁定。我们已经在努力:

  • 改进移动应用程序,以便随时随地进行会计处理
  • 与流行的金融服务进行更多集成
  • 更高级的报告和分析功能
  • 增强的团队协作工具

我们很乐意听取你对新版本的反馈!你的意见有助于我们确定接下来要构建的内容的优先级。

会计愉快!

Beancount.io 团队

为你的小企业财务排毒 —— 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 中实现快速可靠的月末结账的 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,你可以将其转化为简短、可脚本化的仪式:导入、断言、定价、查询、提交。保持工作流稳定,结账将保持快速——即使财务情况日益复杂。

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

最后说明

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

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

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 中进行过滤。
; - 考虑为税务准备金(联邦/州)使用单独的银行子账户。

LLM 辅助纯文本会计的用户体验与反馈

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

纯文本会计 (PTA) 长期以来一直是精通技术的财务爱好者的秘密武器。使用简单的文本文件和 BeancountLedger 等工具,你可以对财务数据获得无与伦比的控制、透明度和所有权。但坦率地说,它一直以来都以操作繁琐而闻名。学习曲线陡峭,数据录入乏味,一个逗号放错位置就可能让你陷入令人沮丧的调试困境。

但是,如果你可以在不费吹灰之力的情况下拥有 PTA 的强大功能会怎样?大型语言模型 (LLM) 应运而生。人工智能开始渗透到 PTA 工作流程的每个角落,承诺将自动化那些枯燥乏味的工作,并使每个人都能使用这个强大的系统。基于对用户反馈的深入研究,让我们探讨人工智能如何彻底改变纯文本会计,以及它是否达到了预期效果。


旧方法:PTA 的手动操作

多年来,PTA 体验一直受到一些常见障碍的困扰:

  • 令人望而生畏的壁垒: 新手常常感到不知所措。正如一位用户所承认的,“多年来我一直望而却步……但它似乎很有用,最终会有回报。” 在学习复式记账法和使用命令行工具之间,入门非常困难。
  • “编辑-编译-调试”循环: 与 GUI 软件会在你出错时立即发出警告不同,PTA 错误通常隐藏起来,直到你运行检查为止。这种缓慢的反馈循环感觉就像调试代码,将简单的数据录入任务变成了一项繁琐的工作。
  • 导入噩梦: 将数据导入系统是一个主要瓶颈。它通常涉及从多家银行手动下载 CSV 文件,清理它们,并运行自定义脚本——这是一个脆弱且耗时的过程。一位用户花了 “大约 4 个小时来追赶过去约 8 个月” 的交易导入,即使使用了一些自动化工具也是如此。

人工智能助手登场:LLM 如何大幅减少工作量

这就是人工智能正在改变游戏规则的地方,它充当强大的助手来处理 PTA 中最繁琐的部分。

自动化繁琐的工作:分类和导入

这是人工智能唾手可得的成果。你无需编写复杂的规则来弄清楚“星巴克 #12345”是什么,只需询问 LLM 即可。

用户报告说,将交易描述提供给 GPT-4 等模型并获得完美的分类(例如 Expenses:Food:Coffee)取得了巨大的成功。像 Beanborg 这样的工具甚至集成了 ChatGPT,在其自身规则失效时智能地建议类别。

更好的是,LLM 正在成为实时数据导入器。现在,你无需编写 Python 脚本来解析银行凌乱的 CSV 文件,只需将数据粘贴到聊天窗口中,然后要求 AI 将其转换为 Beancount 格式即可。它并不总是 100% 完美,但它将数小时的编码变成了几分钟的提示工程。

让 PTA 不再可怕:入门和错误处理

最初令人望而生畏的壁垒?LLM 正在帮助用户克服它。一位新用户描述了使用 GPT-4 作为 “手把手指导的导师” 来引导他们设置他们的第一个账本文件。AI 解释了概念,生成了示例条目,并帮助他们建立了独立操作的信心。

人工智能还提供了 PTA 一直以来缺乏的实时反馈。开发人员正在构建编辑器扩展,使用 LLM 在你键入时检查你的语法,并用熟悉的红色波浪线突出显示不平衡或错误。想象一下,一个 AI 不仅会标记错误,还会解释为什么它是错误的,并建议修复方法。

与你的财务状况聊天

也许最令人兴奋的发展是对话式分析的兴起。现在,你无需编写特定的命令行查询,只需用简单的英语询问你的账本问题即可。

用户正在尝试导出他们的数据并使用 Claude 等工具来询问诸如 “与 4 月份相比,我在 3 月份的杂货支出是多少?” 之类的问题。AI 可以分析数据,发现趋势,甚至提供见解。在商业领域,像 Puzzle.io 这样的公司提供 Slack 机器人,让管理人员实时查询公司财务状况。这种自然语言界面是让财务数据更易于访问的颠覆性创新。


陷阱:不要急于放弃你的思考

虽然可能性令人兴奋,但用户保持谨慎是正确的。始终存在两个主要问题:隐私和信任。

  • 隐私至上: 你的财务历史记录极其敏感。正如一位用户所说,“我担心我正在向某个 API 提供我的财务历史记录。” 对于许多人来说,将数据发送到 OpenAI 等第三方云服务是不可接受的。解决方案是什么?越来越多的用户正在自己的机器上本地运行开源 LLM,确保他们的数据永远不会离开他们的控制。

  • 信任,但要验证: LLM 可能会自信地犯错。它们有时会“虚构”账户名称或犯一些小的数学错误,导致条目不平衡。社区的共识很明确:将 AI 用作助手,而不是自主会计师。始终对你的账本进行最终检查 (bean-check),并让人工参与最终审批。


未来是增强,而不是取代

LLM 辅助正在迅速将纯文本会计从一个小众的、仅限专家使用的系统转变为一个每天都变得更容易访问的强大工具。人工智能非常擅长处理簿记中重复的、令人沮丧的部分——数据录入、分类和解析。

这让人类可以自由地做他们最擅长的事情:审查、解释和做出决策。未来不是让机器人管理你的资金。而是一种伙伴关系,人工智能负责繁重的工作,为你提供干净、准确的数据,以便你真正了解自己的财务状况。

正如一位用户恰当地说的那样,“让机器人去做重复的簿记工作,这样人类就可以专注于理解和决策。” 凭借这种平衡的方法,曾经令人痛苦的纯文本会计世界看起来比以往任何时候都更加光明。

Beancount 的技术优势:与 Ledger、hledger 和 GnuCash 的性能、Python API 和数据完整性深度对比

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

选择个人会计系统需要在性能、数据架构和可扩展性之间进行权衡。对于工程师和其他技术用户来说,选择通常取决于哪个系统提供最健壮、可预测和可编程的基础。

根据一份详细的比较报告,让我们分析 Beancount 与其流行的开源替代方案 Ledger-CLI、hledger 和 GnuCash 的技术细节。

2025-07-22-beancounts-technical-edge-a-deep-dive-on-performance-python-api-and-data-integrity-vs-ledger-hledger-and-gnucash


速度和性能:量化基准 🚀

对于任何严肃的数据集,性能都是不可协商的。 Beancount 的架构可以处理数十年的交易数据,而不会影响速度。尽管是用 Python(v2)实现的,但其高度优化的解析器效率非常高。

  • Beancount: 实际使用表明,它可以在 大约 2 秒内加载和处理包含 数十万笔交易的账本。内存使用量适中;解析约 10 万笔交易只需使用几十兆字节的 RAM,即可将源文本转换为内存中的对象。
  • 100 万笔交易压力测试: 使用包含 100 万笔交易、1,000 个账户和 100 万个价格条目的合成账本进行的基准测试揭示了显著的架构差异:
    • hledger(Haskell):约 80.2 秒内成功完成完整解析和报告,处理速度约为 12,465 笔交易/秒,同时使用约 2.58 GB 的 RAM。
    • Ledger-CLI(C++): 该进程在 40 分钟后终止,但未完成,这可能是由于已知的回归导致在处理高度复杂的账本时内存和 CPU 使用过多。
    • Beancount: 虽然未包含在该特定 100 万笔交易测试中,但其性能曲线表明它可以有效地处理该任务。此外,即将推出的采用全新 C++ 核心和 Python API 的 Beancount v3 预计将在吞吐量方面带来另一个数量级的提升。
  • GnuCash(C/Scheme): 作为将整个数据集加载到内存中的 GUI 应用程序,其性能会随着大小的增加而明显下降。打开一个约 50 MB 的 XML 文件(代表 10 万多笔交易)需要 77 秒。切换到 SQLite 后端仅略微将其缩短至 约 55 秒

结论: Beancount 提供了可预测扩展的卓越性能,这是长期数据管理的关键特性。它避免了 Ledger 中出现的性能瓶颈和 GnuCash 的 UI 绑定延迟。


数据架构:纯文本与不透明数据库 📄

系统存储数据的方式决定了其透明度、可移植性和持久性。Beancount 使用简洁易懂的纯文本格式,这对技术用户来说更胜一筹。

  • 紧凑高效: 一个包含 10 万笔交易的 Beancount 文件只有 约 8.8 MB。这比同等的 Ledger 文件(约 10 MB)更紧凑,部分原因是 Beancount 的语法允许推断交易中的最终余额,从而减少冗余。
  • 结构强制执行: Beancount 要求使用显式的 YYYY-MM-DD open Account 指令。这种规范的方法可以防止账户名称拼写错误导致静默创建新的错误账户——这是 Ledger 和 hledger 等系统中常见的陷阱,这些系统会动态创建账户。这种结构使数据更可靠,便于程序化操作。
  • 版本控制就绪: 纯文本账本非常适合使用 Git 进行版本控制。你可以获得所做的每个财务更改的完整、可审计的历史记录。
  • 与 GnuCash 的对比: GnuCash 默认使用 gzip 压缩的 XML 文件,其中数据冗长,并且每个实体都用带有 GUID 的标签进行包装。虽然它提供 SQLite、MySQL 和 PostgreSQL 后端,但这将数据从简单的直接文本操作和版本控制中抽象出来。编辑原始 XML 是可行的,但比编辑 Beancount 文件要麻烦得多。

结论: Beancount 的数据格式不仅仅是文本;它是一种定义良好的语言,可最大限度地提高清晰度,强制执行正确性,并与 gitgrep 等开发者工具无缝集成。


杀手级特性:真正的 Python API 和插件架构 🐍

这是 Beancount 的决定性技术优势。它不是一个单一的应用程序,而是一个 具有稳定、一流 Python API 的库。这种设计决策释放了无限的自动化和集成可能性。

  • 直接程序化访问: 你可以直接在 Python 中读取、查询和操作账本数据。这就是开发者迁移的原因。正如一位用户指出的那样,Beancount 消除了尝试对 Ledger 记录不足的内部绑定进行脚本编写带来的挫败感。
  • 插件管道: Beancount 的加载器允许你将自定义 Python 函数直接插入处理管道。这使得在加载数据流时可以对其进行任意转换和验证——例如,编写一个插件来强制要求来自特定供应商的每笔支出都必须具有特定标签。
  • 强大的导入器框架: 超越笨拙的 CSV 导入向导。使用 Beancount,你可以编写 Python 脚本来从任何来源(OFX、QFX、CSV)解析财务报表。像 smart_importer 这样的社区工具甚至利用机器学习模型来自动预测和分配过账账户,将数小时的手动分类变成只需几秒钟、一个命令的过程。
  • 其他工具的比较:
    • Ledger/hledger: 可扩展性主要体现在外部。你可以将数据传入/传出可执行文件。虽然它们可以输出 JSON/CSV,但如果不修改 C++/Haskell 源代码,你就无法将逻辑注入其核心处理循环。
    • GnuCash: 可扩展性是通过 Guile (Scheme) 的陡峭学习曲线来处理自定义报告,或者通过与 GnuCash 引擎交互的 Python 绑定(使用 SWIG 和 PieCash 等库)来处理。它很强大,但不如 Beancount 的原生库方法直接和“Pythonic”。

结论: Beancount 是为程序员设计的。其库优先的设计和与 Python 的深度集成使其成为四个系统中最灵活、自动化程度最高的系统。


理念:财务的严格编译器 🤓

Beancount 的学习曲线是其核心理念的直接结果:你的财务数据是一种正式的语言,它必须是正确的。

Beancount 的解析器就像一个 严格的编译器。它执行强大的语法和逻辑验证。如果交易不平衡或账户尚未打开,它将拒绝处理文件,并返回带有行号的描述性错误。这是一个特性,而不是错误。它保证如果你的文件“编译”成功,则底层数据在结构上是合理的。

这种确定性方法确保了数据完整性,这对于在其之上构建可靠的自动化系统至关重要。你可以放心地编写使用 Beancount 输出的脚本,因为你知道数据已经过严格验证。

Beancount 适合谁?

根据此技术分析,Beancount 是以下用户的最佳选择:

  • 开发人员和工程师, 他们希望将财务视为版本控制的、可编程的数据集。
  • 数据爱好者, 他们希望编写自定义查询,使用 Fava 等工具构建独特的可视化效果,或将财务数据馈送到其他分析模型中。
  • 任何重视可证明的正确性和自动化胜过 GUI 的便利性或结构化程度较低的格式的宽松性的人。

如果你需要原始 C++ 性能来生成标准报告,Ledger 是一个竞争者。对于函数式编程范例中的出色可扩展性,hledger 令人印象深刻。对于设置最少的全功能 GUI,GnuCash 表现出色。

但是,如果你想构建一个真正健壮、自动化且高度定制的财务管理系统,Beancount 提供了卓越的技术基础。

Beancount.io 加密货币会计完整指南

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

你是否正深陷于跨多个交易所的加密货币交易中,为 DeFi 的复杂性所困扰,或因报税季而感到恐慌? 你并非孤身一人。加密货币领域已从简单的比特币购买,发展成为一个由 DeFi 协议、质押奖励、流动性挖矿和跨链活动组成的复杂生态系统,这些都对传统会计方法构成了挑战。

残酷的现实是:每笔加密货币交易都可能需要纳税,美国国税局(IRS)正在密切关注。无论你是普通的比特币持有者,还是管理着数十个协议头寸的 DeFi 高级用户,维护准确的财务记录并非可有可无——它对于合规性和财务清晰度至关重要。

问题何在? 传统的会计软件对加密货币的复杂性原生支持有限。虽然 QuickBooks 等工具可以通过附加插件处理加密货币,Excel 也可以通过脚本导入区块链数据,但大多数解决方案都需要大量定制才能实现全面的加密货币会计。

解决方案? Beancount.io 的纯文本会计系统,它基于强大的开源 Beancount 语言构建。重要提示:Beancount 是由 Martin Blais 创建的开源复式记账语言,而 Beancount.io 是一项商业托管服务,为 Beancount 提供用户友好的界面和云基础设施。本指南将涵盖 Beancount 的底层原理,以及如何通过 Beancount.io 平台有效利用它们。

加密货币会计完整指南

加密货币会计噩梦 (以及为何情况正在恶化)

你的加密资产组合散落在各处

让我们坦诚面对你的现状。你可能拥有:

  • 3-5个不同的交易所 (Coinbase 用于便捷购买,币安用于山寨币,Kraken 用于某种特定代币...)
  • 多个钱包 (MetaMask 用于 DeFi,Ledger 用于长期持有,以及你遗忘的旧钱包...)
  • 跨越10多个协议的 DeFi 头寸 (Uniswap、Compound、Aave,以及任何吸引你注意的新型收益农场)
  • 质押奖励 从各种验证器中陆续流入
  • 随机空投 像加密圣诞礼物一样出现在你的钱包中

每个平台都有不同的“语言”。 Coinbase 提供的 CSV 文件与币安的导出文件截然不同。Uniswap 甚至没有导出功能。更不用说追踪你在 Layer 2 网络上的 DeFi 头寸了。

挑战传统会计的交易类型

你的加密货币活动包含了一些传统会计系统最初并非为处理而设计的交易类型:

  • 无常损失:来自提供流动性(试试向 QuickBooks 解释一下)
  • 闪电贷:在单笔交易中借入并偿还数百万
  • 流动性挖矿:通过提供流动性赚取 5 种不同的代币
  • 跨链桥:使资产在一个网络上消失并在另一个网络上出现
  • 质押衍生品:例如 stETH,其价值累积方式不同于底层资产
  • DAO 治理代币:你因为使用了协议而收到的代币

税务合规雷区

以下是让加密货币投资者夜不能寐的问题:

  • 每一笔交易都应纳税(是的,即使是 ETH 到 USDC 的兑换)
  • 成本基础追踪在数百笔微交易面前变得不可能
  • 质押奖励属于收入,在你收到它们的那一刻(按公允市场价值计算)
  • DeFi 奖励属于收入,即使你尚未出售它们
  • 美国国税局要求提供 8949 表格,列出每一笔交易
  • 如果出错,罚款严厉

传统会计软件需要大量定制才能应对这种复杂性。 尽管存在解决方案,但它们通常需要额外的插件、脚本或手动流程来处理加密货币活动的全部范围。

隆重推出 Beancount.io:你一直在等待的加密货币会计解决方案

如果我告诉你,有一个会计系统正是为应对这种混乱而设计的呢? Beancount.io 不仅仅是另一个会计工具——它是一场纯文本会计革命,能够轻松处理加密货币的复杂性,仿佛天生为此而生。

为何 Beancount.io 在加密货币会计领域独占鳌头

🔍 完全透明: 每笔计算都清晰可见。没有黑箱操作,没有“请相信我们”的算法。你能清楚地看到成本基础是如何计算的,收益是如何计算的,以及每一聪的去向。

📊 无限灵活性: 创建你所需的任何账户结构。追踪 DeFi 头寸、质押衍生品、跨链资产,或是你通过 DAO 投票获得的奇特代币。只要你能想到,就能追踪到。

🎯 精确成本基础: 基于批次的追踪,支持特定识别。精确选择你出售的比特币批次,以获得最佳税务结果。先进先出 (FIFO)、后进先出 (LIFO),或自由选择你的批次——一切由你决定。

🔗 未来无忧: 纯文本格式意味着你的数据永远属于你。没有供应商锁定,没有专有格式,没有“抱歉,我们即将关闭”的邮件。

⚡ 可脚本化能力: 自动化导入,生成自定义报告,并与任何工具集成。因为你的加密货币投资组合是独一无二的,所以你的记账方式也应该如此。

设置你的加密货币指挥中心

构建你的账户架构

将其视为设计你的加密资产帝国的蓝图。我们正在创建一个能够处理从首次比特币购买到复杂的多协议 DeFi 策略的结构:

注意:示例中使用 1970-01-01 作为占位符开户日期。实际使用时,请替换为你的真实账户开户日期,特别是当你使用按日期筛选交易的自动化导入工具时。

; 交易所账户
1970-01-01 open Assets:Crypto:Coinbase:USD
1970-01-01 open Assets:Crypto:Coinbase:BTC
1970-01-01 open Assets:Crypto:Coinbase:ETH
1970-01-01 open Assets:Crypto:Binance:USD
1970-01-01 open Assets:Crypto:Binance:BTC
1970-01-01 open Assets:Crypto:Binance:ETH
1970-01-01 open Assets:Crypto:Binance:ADA

; 钱包账户
1970-01-01 open Assets:Crypto:Wallet:MetaMask:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:USDC
1970-01-01 open Assets:Crypto:Wallet:MetaMask:UNI
1970-01-01 open Assets:Crypto:Wallet:Ledger:BTC
1970-01-01 open Assets:Crypto:Wallet:Ledger:ETH

; DeFi 协议账户
1970-01-01 open Assets:DeFi:Compound:cUSDC
1970-01-01 open Assets:DeFi:Uniswap:ETH-USDC-LP
1970-01-01 open Assets:Staking:Ethereum:ETH
1970-01-01 open Assets:Crypto:Mining:BTC

; 收入账户
1970-01-01 open Income:Crypto:Staking:ETH
1970-01-01 open Income:Crypto:Mining:BTC
1970-01-01 open Income:Crypto:Airdrops
1970-01-01 open Income:Crypto:DeFi:Yield
1970-01-01 open Income:CapitalGains:Crypto
1970-01-01 open Income:Crypto:Trading:Margin

; 支出账户
1970-01-01 open Expenses:Crypto:Fees:Trading
1970-01-01 open Expenses:Crypto:Fees:Network
1970-01-01 open Expenses:Crypto:Fees:Withdrawal

; 进阶场景附加账户
1970-01-01 open Assets:Crypto:Binance:BTC-Margin
1970-01-01 open Liabilities:Crypto:Binance:Borrowed
1970-01-01 open Liabilities:Crypto:Binance:BTC
1970-01-01 open Assets:Checking
1970-01-01 open Expenses:Crypto:Mining:Electricity

商品定义

将你的加密货币定义为商品,并附带适当的元数据:

1970-01-01 commodity BTC
name: "Bitcoin"
asset-class: "cryptocurrency"
price-source: "coinbase"

1970-01-01 commodity ETH
name: "Ethereum"
asset-class: "cryptocurrency"
price-source: "coinbase"

1970-01-01 commodity ADA
name: "Cardano"
asset-class: "cryptocurrency"
price-source: "binance"

1970-01-01 commodity USDC
name: "USD Coin"
asset-class: "stablecoin"
price-source: "coinbase"

1970-01-01 commodity UNI
name: "Uniswap"
asset-class: "cryptocurrency"
price-source: "coinbase"

1970-01-01 commodity UNI-V2-ETH-USDC
name: "Uniswap V2 ETH-USDC LP Token"
asset-class: "liquidity-pool"

精通加密货币交易:从简单到复杂

准备好了解 Beancount.io 的实际应用了吗? 让我们一起探讨那些其他会计系统难以处理,但 Beancount.io 却能优雅处理的真实场景。

1. 你的首次比特币购买 (敲门砖)

每一段加密货币之旅都始于某个地方。以下是如何记录你购买第一枚比特币这一改变人生的时刻:

2024-01-15 * "Buy 0.5 BTC on Coinbase"
Assets:Crypto:Coinbase:BTC 0.5 BTC {30000.00 USD}
Assets:Crypto:Coinbase:USD -15025.00 USD
Expenses:Crypto:Fees:Trading 25.00 USD

2. 像专业人士一样获利了结(或止损)

关键时刻:出售你的加密货币。大多数会计系统在此处会束手无策,但 Beancount.io 凭借其精确的成本基础追踪功能而大放异彩:

2024-03-20 * "Sell 0.3 BTC on Coinbase"
Assets:Crypto:Coinbase:BTC -0.3 BTC {30000.00 USD}
Assets:Crypto:Coinbase:USD 10470.00 USD
Expenses:Crypto:Fees:Trading 30.00 USD
Income:CapitalGains:Crypto 1440.00 USD ; 10470 - (0.3 × 30000) - 30 = 1440

3. 质押奖励:睡后收入

极致的被动收入。 但请记住,美国国税局要求质押奖励在收到时,根据收到时的公允市场价值申报为应税收入(根据美国国税局2024年数字资产指南)。尽管存在正在进行的诉讼(Jarrett 诉美国案),但当前的官方立场要求立即申报。以下是正确追踪它们的方法:

2024-02-01 * "ETH 质押奖励"
Assets:Staking:Ethereum:ETH 0.05 ETH {2500.00 USD}
Income:Crypto:Staking:ETH 125.00 USD

4. DeFi 收益耕作:刺激之处 🌶️

欢迎来到高级 DeFi 会计。 DeFi 收益耕作涉及复杂的多种代币交易,需要精密的追踪。以下是如何正确核算 Uniswap 流动性头寸:

; 初始流动性提供
2024-01-10 * "添加流动性到 ETH-USDC 资金池"
Assets:Crypto:Wallet:MetaMask:ETH -10 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:USDC -25000 USDC {1.00 USD}
Assets:DeFi:Uniswap:ETH-USDC-LP 100 UNI-V2-ETH-USDC {500.00 USD}

; 领取奖励
2024-02-10 * "领取 Uniswap LP 奖励"
Assets:Crypto:Wallet:MetaMask:UNI 50 UNI {8.00 USD}
Income:Crypto:DeFi:Yield 400.00 USD

5. 跨交易所转账

将比特币从 Coinbase 转移到 Ledger 钱包:

2024-01-20 * "Transfer BTC from Coinbase to Ledger"
Assets:Crypto:Coinbase:BTC -1.0 BTC {30000.00 USD}
Assets:Crypto:Wallet:Ledger:BTC 0.9995 BTC {30000.00 USD}
Expenses:Crypto:Fees:Withdrawal 0.0005 BTC {30000.00 USD}

高级加密货币场景

杠杆交易

记录杠杆仓位:

; 开立杠杆做多仓位 (借入比特币)
2024-02-15 * "开立2倍杠杆比特币仓位"
Assets:Crypto:Binance:BTC-Margin 1.0 BTC {35000.00 USD}
Liabilities:Crypto:Binance:BTC -1.0 BTC {35000.00 USD}
Expenses:Crypto:Fees:Trading 50.00 USD
Assets:Crypto:Binance:USD -50.00 USD

; 获利平仓
2024-02-20 * "平仓杠杆比特币仓位"
Assets:Crypto:Binance:BTC-Margin -1.0 BTC {35000.00 USD}
Assets:Crypto:Binance:USD 37950.00 USD
Liabilities:Crypto:Binance:BTC 1.0 BTC {35000.00 USD}
Income:Crypto:Trading:Margin -2900.00 USD
Expenses:Crypto:Fees:Trading 50.00 USD

空投与分叉

记录免费代币派发:

2024-03-01 * "收到 UNI 空投"
Assets:Crypto:Wallet:MetaMask:UNI 400 UNI {8.00 USD}
Income:Crypto:Airdrops 3200.00 USD

挖矿业务

适用于加密货币矿工:

2024-01-01 * "比特币挖矿奖励"
Assets:Crypto:Mining:BTC 0.1 BTC {45000.00 USD}
Income:Crypto:Mining:BTC 4500.00 USD

; 挖矿费用
2024-01-31 * "挖矿电费"
Expenses:Crypto:Mining:Electricity 800.00 USD
Assets:Checking -800.00 USD

税务申报与合规

成本基础追踪

Beancount.io 使用批次成本法自动追踪成本基础:

; 多次以不同价格购买
2024-01-01 * "Buy BTC batch 1"
Assets:Crypto:Coinbase:BTC 1.0 BTC {40000.00 USD}
Assets:Crypto:Coinbase:USD -40000.00 USD

2024-02-01 * "Buy BTC batch 2"
Assets:Crypto:Coinbase:BTC 1.0 BTC {45000.00 USD}
Assets:Crypto:Coinbase:USD -45000.00 USD

; 出售特定批次(先进先出法、后进先出法或特定识别法)
2024-03-01 * "Sell BTC using FIFO"
Assets:Crypto:Coinbase:BTC -0.5 BTC {40000.00 USD}
Assets:Crypto:Coinbase:USD 22470.00 USD
Expenses:Crypto:Fees:Trading 30.00 USD
Income:CapitalGains:Crypto 2440.00 USD ; 22470 - 20000 - 30 = 2440

生成税务报告

使用 Beancount 的查询系统和插件生成税务报告:

  • Form 8949:资本利得和损失(通过 bean-query 或第三方插件)
  • Schedule D:资本利得汇总(需要额外脚本)
  • Form 1040:质押、挖矿、空投收入(通过自定义报告)
  • 详细交易日志:用于审计目的

注意:税务报告生成需要额外的插件、脚本或与专业税务软件集成。Beancount 提供数据基础,但特定的税务表格通常需要自定义开发或第三方工具。

加密货币会计的最佳实践

1. 定期对账

  • 每周导入交易数据
  • 每月核对钱包余额
  • 与区块链浏览器交叉核对

2. 妥善记录

  • 保存所有交易凭证
  • 记录每笔交易的用途
  • 记录交易时的市场价格

3. 区分业务与个人

; 个人加密货币投资
Assets:Personal:Crypto:Coinbase:BTC

; 业务加密货币操作
Assets:Business:Crypto:Treasury:BTC

4. 追踪所有收入来源

  • 质押奖励 (应税收入)
  • 挖矿奖励 (应税收入)
  • 空投 (按公允市场价值征税)
  • DeFi 收益 (应税收入)

5. 费用管理

分开记录所有费用,以便正确抵税:

Expenses:Crypto:Fees:Trading     ; 交易所交易费
Expenses:Crypto:Fees:Network ; 区块链网络费
Expenses:Crypto:Fees:Withdrawal ; 提币费

集成热门加密货币工具

交易所 API 集成

Beancount.io 可以与主流交易所集成:

  • Coinbase Pro API:自动交易导入
  • 币安 API:实时余额更新
  • Kraken API:历史数据同步

区块链分析

连接区块链浏览器:

  • Etherscan: 以太坊交易验证
  • Blockchain.info: 比特币交易追踪
  • BscScan: 币安智能链监控

投资组合追踪

同步投资组合管理工具:

  • CoinTracker:税务报告生成
  • Koinly:多交易所数据聚合
  • Blockfolio:移动投资组合追踪

重要免责声明

税务和法律声明:本指南提供有关使用 Beancount 进行加密货币会计的通用信息,不构成专业的税务、法律或财务建议。加密货币交易的税务处理因管辖区和个人情况而异。诸如跨链桥、无常损失和闪电贷等复杂场景,在当前法规下可能存在不明确的税务影响。有关交易是否构成应税处置的具体指导,请参阅美国国税局常见问题解答 Q-15 至 Q-18 (2024),或咨询当地税务法规。在做出税务相关决策之前,请务必咨询你所在管辖区内熟悉加密货币税务的合格税务专业人士或注册会计师。

软件说明:本指南中的示例使用标准 Beancount 语法。尽管 Beancount.io 提供了一个用户友好的 Beancount 界面,但其基本会计原则适用于任何 Beancount 实现。

总结

加密货币会计不必令人望而生畏。借助 Beancount 强大的纯文本会计系统(可通过 Beancount.io 平台访问),你可以:

  • 保持完全透明:每笔交易都可见且可审计
  • 确保税务合规:准确的成本基础追踪和收入报告
  • 随你的投资组合扩展:从简单交易到复杂的 DeFi 策略均可处理
  • 无缝集成:连接交易所、钱包和税务工具
  • 记录面向未来:纯文本格式确保长期可访问性

无论你是普通的比特币持有者,还是专业的 DeFi 收益农场主,Beancount 都能为你掌握加密货币会计提供所需的基础和灵活性。从基本交易开始,随着你的加密之旅发展,逐步纳入更复杂的场景。

本指南中的示例提供了坚实的基础,但请记住,加密货币会计是一个不断发展的领域。及时了解监管变化,咨询税务专业人士,并根据需要调整你的会计实践。

准备好掌控你的加密货币财务了吗?注册 Beancount.io,体验基于强大 Beancount 基础构建的透明、可脚本化加密会计的强大功能。

加密货币税务合规指南:使用 Beancount.io 掌握 IRS 要求

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

加密货币税务已从一个小众问题演变为数百万投资者的一项关键合规要求。随着美国国税局加强执法并要求详细报告,准确的记账不再仅仅是良好实践——它是避免罚款和优化你的税务责任的关键。

本综合指南将向你展示如何使用 Beancount.io 强大的纯文本记账系统实现完整的加密货币税务合规,确保你满足所有美国国税局要求,同时最大限度地提高税务效率。

加密货币税务合规指南

理解加密货币纳税要求

美国国税局对加密货币的征税规定

美国国税局将加密货币视为财产而非货币,这会产生特定的税务影响:

  • 每笔交易都可能产生应税事件:交易、出售、消费或兑换加密货币
  • 必须追踪成本基础:针对持有的每单位加密货币
  • 持有期决定税率:短期资本利得与长期资本利得
  • 需要确认收入:针对挖矿、质押、空投和 DeFi 奖励
  • 强制要求详细记录:用于审计的交易层面文件

关键加密货币税务表格

Form 1040 - 个人所得税申报表

  • 第1行: 申报加密货币收入(质押、挖矿、空投)
  • 附表1: 额外收入来源
  • 数字资产问题: 如果你有加密货币交易,必须回答“是”

表 8949 - 资本资产的销售及其他处置

  • 第一部分:短期资本利得/损失 (持有期 ≤ 1 年)
  • 第二部分:长期资本利得/损失 (持有期 > 1 年)
  • 详细交易报告:取得日期、出售日期、销售收入、成本基础

附表 D - 资本利得与损失

  • 表格 8949 概要: 汇总的资本利得/损失
  • 净资本利得/损失: 应纳税额的最终计算

设置税务合规的加密货币会计

用于税务申报的账户结构

设计你的账户层级以符合税务要求:

; Assets - Organized by holding period and source
1970-01-01 open Assets:Crypto:ShortTerm:Coinbase:BTC
1970-01-01 open Assets:Crypto:LongTerm:Coinbase:BTC
1970-01-01 open Assets:Crypto:Trading:Binance:ETH
1970-01-01 open Assets:Crypto:Investment:Ledger:BTC

; Income - Separated by tax treatment
1970-01-01 open Income:Crypto:Staking:Ordinary ; Taxed as ordinary income
1970-01-01 open Income:Crypto:Mining:Ordinary ; Taxed as ordinary income
1970-01-01 open Income:Crypto:Airdrops:Ordinary ; Taxed as ordinary income
1970-01-01 open Income:CapitalGains:ShortTerm ; Short-term capital gains
1970-01-01 open Income:CapitalGains:LongTerm ; Long-term capital gains

; Expenses - Tax deductible categories
1970-01-01 open Expenses:Crypto:Fees:Deductible ; Trading fees
1970-01-01 open Expenses:Crypto:Mining:Equipment ; Mining equipment
1970-01-01 open Expenses:Crypto:Mining:Electricity ; Mining electricity
1970-01-01 open Expenses:CapitalLoss:ShortTerm ; Short-term capital losses
1970-01-01 open Expenses:CapitalLoss:LongTerm ; Long-term capital losses

用于税务合规的元数据

使用元数据追踪税务相关信息:

2024-01-15 * "Buy BTC for long-term investment" ^investment-btc #long-term
purchase-date: "2024-01-15"
intended-holding: "long-term"
tax-lot-id: "BTC-001"
Assets:Crypto:LongTerm:Coinbase:BTC 1.0 BTC {45000.00 USD}
Assets:Crypto:Coinbase:USD -45000.00 USD
Expenses:Crypto:Fees:Deductible 50.00 USD
Assets:Crypto:Coinbase:USD -50.00 USD

记录应税加密货币事项

1. 加密货币销售

短期资本利得 (≤ 1 年)

2024-06-15 * "出售 BTC - 短期资本利得" ^btc-sale-001
date-acquired: "2024-01-15"
holding-period: "151 天"
form-8949-code: "A"
Assets:Crypto:ShortTerm:Coinbase:BTC -0.5 BTC {45000.00 USD}
Assets:Crypto:Coinbase:USD 24000.00 USD
Expenses:Crypto:Fees:Deductible 30.00 USD
Assets:Crypto:Coinbase:USD -30.00 USD
Income:CapitalGains:ShortTerm 1470.00 USD ; 24000 - 22500 - 30

长期资本利得 (> 1 年)

2025-02-01 * "Sell BTC - Long-term capital gain" ^btc-sale-002
date-acquired: "2024-01-15"
holding-period: "382 days"
form-8949-code: "D"
Assets:Crypto:LongTerm:Coinbase:BTC -0.5 BTC {45000.00 USD}
Assets:Crypto:Coinbase:USD 28000.00 USD
Expenses:Crypto:Fees:Deductible 35.00 USD
Assets:Crypto:Coinbase:USD -35.00 USD
Income:CapitalGains:LongTerm 5465.00 USD ; 28000 - 22500 - 35

2. 币币交易

每笔币币交易都需要纳税:

2024-03-20 * "Trade BTC for ETH - Taxable exchange"
; 处置比特币 (应税事件)
Assets:Crypto:Trading:Binance:BTC -1.0 BTC {46000.00 USD}
Income:CapitalGains:ShortTerm 2000.00 USD ; 48000 - 46000

; 购入以太坊 (新的成本基础)
Assets:Crypto:Trading:Binance:ETH 20 ETH {2400.00 USD}

; 交易费用
Expenses:Crypto:Fees:Deductible 40.00 USD
Assets:Crypto:Trading:Binance:USD -40.00 USD

3. 质押奖励 (普通收入)

2024-01-31 * "ETH 质押奖励 - 一月"
reward-type: "质押"
fair-market-value: "每 ETH 2500.00 美元"
taxable-income: "200.00 美元"
Assets:Staking:Ethereum:ETH 0.08 ETH {2500.00 USD}
Income:Crypto:Staking:Ordinary 200.00 USD

4. 挖矿收入

2024-01-15 * "比特币挖矿奖励"
矿池: "Slush Pool"
区块高度: "825000"
公允市场价值: "45000.00 USD per BTC"
资产:加密货币:挖矿:BTC 0.01 BTC {45000.00 USD}
收入:加密货币:挖矿:普通 450.00 USD

; 挖矿费用 (可抵扣)
费用:加密货币:挖矿:电费 120.00 USD
资产:活期账户 -120.00 USD

5. 空投和硬分叉

2024-03-01 * "UNI 代币空投"
airdrop-source: "Uniswap 协议"
fair-market-value: "每 UNI 8.00 美元"
taxable-amount: "3200.00 美元"
Assets:Crypto:Wallet:MetaMask:UNI 400 UNI {8.00 USD}
Income:Crypto:Airdrops:Ordinary 3200.00 USD

6. DeFi 活动

收益耕作奖励

2024-02-28 * "Compound 协议收益"
protocol: "Compound"
reward-token: "COMP"
fair-market-value: "每 COMP 85.00 美元"
Assets:加密货币:钱包:MetaMask:COMP 12 COMP {85.00 USD}
Income:加密货币:DeFi:普通 1020.00 USD

流动性池费用

2024-02-15 * "Uniswap LP 费用已认领"
protocol: "Uniswap V3"
pool: "ETH-USDC"
Assets:Crypto:Wallet:MetaMask:ETH 0.2 ETH {2600.00 USD}
Assets:Crypto:Wallet:MetaMask:USDC 300 USDC
Income:Crypto:DeFi:Ordinary 820.00 USD

税务优化策略

1. 税损收割

系统性地实现亏损以抵消收益:

; 识别亏损头寸
2024-12-15 * "税损收割 - 亏损出售 ADA"
purchase-date: "2024-06-01"
purchase-price: "0.60 USD per ADA"
sale-price: "0.45 USD per ADA"
Assets:Crypto:Trading:Binance:ADA -1000 ADA {0.60 USD}
Assets:Crypto:Trading:Binance:USD 445.00 USD
Expenses:Crypto:Fees:Deductible 5.00 USD
Assets:Crypto:Trading:Binance:USD -5.00 USD
Expenses:CapitalLoss:ShortTerm 150.00 USD ; 已实现亏损

2. 洗售考量

尽管洗售规则不正式适用于加密货币,但仍需避免潜在问题:

; 在重新购买前等待 31 天
2025-01-16 * "在洗售期后重新购买 ADA"
wash-sale-safe: "已过 31 天以上"
Assets:Crypto:Trading:Binance:ADA 1000 ADA {0.45 USD}
Assets:Crypto:Trading:Binance:USD -450.00 USD
Expenses:Crypto:Fees:Deductible 5.00 USD
Assets:Crypto:Trading:Binance:USD -5.00 USD

3. 特定识别法

选择出售哪些批次以获得最佳税务结果:

; 用于亏损收割的高成本基础批次
2024-11-30 * "Sell high-cost ETH lot for tax loss"
lot-selection: "specific-identification"
cost-basis: "3500.00 USD per ETH"
sale-price: "2400.00 USD per ETH"
Assets:Crypto:Trading:Coinbase:ETH -5 ETH {3500.00 USD}
Assets:Crypto:Trading:Coinbase:USD 11950.00 USD
Expenses:Crypto:Fees:Deductible 50.00 USD
Assets:Crypto:Trading:Coinbase:USD -50.00 USD
Expenses:CapitalLoss:ShortTerm 5500.00 USD ; 重大亏损

4. 长期与短期规划

策略性地安排销售时机,以获得有利的税务处理:

; 持有以获得长期处理
2024-12-20 * "比特币接近长期持有状态"
purchase-date: "2024-01-01"
days-held: "354"
long-term-date: "2025-01-02"
note: "再持有11天以获得长期处理"

自动化税务报告

Form 8949 生成

使用 Beancount.io 查询生成 Form 8949 数据:

-- 短期资本利得/损失
SELECT
date,
narration,
-position as 售出数量,
cost(position) as 成本基础,
value(position) as 所得,
value(position) + cost(position) as 盈亏
WHERE account ~ "Income:CapitalGains:ShortTerm"
OR account ~ "Expenses:CapitalLoss:ShortTerm"
ORDER BY date;

附表D 汇总

-- Capital gains summary
SELECT
'Short-term' as type,
sum(position) as total_gain_loss
WHERE account ~ "Income:CapitalGains:ShortTerm"
OR account ~ "Expenses:CapitalLoss:ShortTerm"

UNION ALL

SELECT
'Long-term' as type,
sum(position) as total_gain_loss
WHERE account ~ "Income:CapitalGains:LongTerm"
OR account ~ "Expenses:CapitalLoss:LongTerm";

经常性收入报告

-- 加密货币经常性收入
SELECT
account,
sum(position) as total_income
WHERE account ~ "Income:Crypto.*:Ordinary"
GROUP BY account
ORDER BY total_income DESC;

记录保存与文档

必要文档

维护每笔交易的完整记录:

2024-01-15 * "比特币购买 - 完整记录" ^btc-001
exchange: "Coinbase Pro"
transaction-id: "abc123def456"
confirmation-hash: "0x789..."
ip-address: "192.168.1.100"
timestamp: "2024-01-15T14:30:00Z"
market-price-source: "CoinGecko"
Assets:Crypto:LongTerm:Coinbase:BTC 1.0 BTC {45000.00 USD}
Assets:Crypto:Coinbase:USD -45000.00 USD

审计追踪维护

创建详细的审计追踪:

; 关联相关交易
2024-01-15 * "BTC 购买" ^btc-purchase-001
2024-01-20 * "BTC 转入钱包" ^btc-purchase-001
2024-06-15 * "BTC 出售" ^btc-purchase-001

价格验证

记录价格来源以获取公允市场价值:

2024-01-15 price BTC 45000.00 USD
source: "CoinGecko"
timestamp: "2024-01-15T14:30:00Z"
verification: "多交易所平均值"

常见税务合规错误

1. 漏记交易

  • 问题: 未申报所有应税事项
  • 解决方案: 在 Beancount.io 中进行全面的交易追踪

2. 错误成本基础

  • 问题: 使用错误的成本基础计算方法
  • 解决方案: 基于批次的跟踪与个别认定法

3. 收入漏报

  • 问题: 未申报质押、挖矿或空投收入
  • 解决方案: 为所有来源设立独立的收入账户

4. 文档不足

  • 问题: 记录不足,不利于审计抗辩
  • 解决方案: 详细的元数据和交易链接

5. 时序问题

  • 问题:持有期计算错误
  • 解决方案:自动化日期追踪和提醒

与税务软件集成

导出至常用报税工具

生成可与主流报税软件兼容的报告:

# 导出为 TurboTax 格式
def export_turbotax_format():
return {
'form_8949_short_term': query_short_term_gains(),
'form_8949_long_term': query_long_term_gains(),
'schedule_1_income': query_ordinary_income(),
'deductible_expenses': query_deductible_expenses()
}

专业报税准备

为注册会计师提供综合报告:

-- 为注册会计师提供完整的报税包
SELECT
'资本利得汇总' as report_type,
account,
sum(position) as amount
WHERE account ~ "Income:CapitalGains"
OR account ~ "Expenses:CapitalLoss"
GROUP BY account

UNION ALL

SELECT
'普通收入汇总' as report_type,
account,
sum(position) as amount
WHERE account ~ "Income:Crypto.*:Ordinary"
GROUP BY account;

年末税务规划

十二月税务策略

实施年末税务优化:

; 十二月税务规划清单
2024-12-01 * "年末税务规划审查"
unrealized-gains: "计算未实现头寸"
loss-harvesting: "识别亏损收割机会"
income-timing: "考虑将收入递延到明年"
expense-timing: "加速可抵扣费用"

季度预估税

记录季度税务义务:

2024-01-15 * "Q1 Estimated Tax Payment"
Expenses:Taxes:Estimated:Federal 5000.00 USD
Expenses:Taxes:Estimated:State 1200.00 USD
Assets:Checking -6200.00 USD

结论

加密货币税务合规不必令人望而生畏。借助 Beancount.io 全面的纯文本记账系统,你可以:

  • 确保全面合规:满足所有美国国税局 (IRS) 报告要求
  • 优化纳税义务:实施复杂的税务策略
  • 维护审计就绪记录:提供全面的文档和审计追踪
  • 自动化报告:自动生成税务表格和报告
  • 随复杂性扩展:处理从简单交易到复杂 DeFi 策略

加密税务合规的关键优势:

  • 透明计算:准确了解税款如何计算
  • 灵活报告:生成所需的任何报告格式
  • 专业整合:与注册会计师 (CPA) 和税务软件无缝协作
  • 经久不衰的记录:纯文本格式确保长期可访问性

立即开始实施规范的加密税务合规。对准确记账的投入将在报税季为你节省时间、金钱并减轻压力,同时确保你完全符合美国国税局 (IRS) 的要求。

准备好掌握加密货币税务合规了吗?立即开始使用 Beancount.io 并掌控你的加密税务义务。

轻松掌握 DeFi 会计:使用纯文本记账追踪流动性挖矿、流动性池和质押奖励

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

去中心化金融 (DeFi) 彻底改变了我们与金融服务互动的方式,为收益生成、流动性提供和去中心化交易带来了前所未有的机会。然而,伴随这些机会而来的是准确追踪复杂交易以实现税务合规和投资组合管理的挑战。

传统会计方法难以应对 DeFi 的独特特性:自动化做市商、流动性挖矿、无常损失和多代币奖励。这份综合指南将向你展示如何使用 Beancount.io 强大的纯文本记账系统来掌握 DeFi 会计。

DeFi 会计变得简单

理解 DeFi 会计挑战

DeFi 交易的复杂性

DeFi 协议带来了传统金融中不存在的会计挑战:

  • 多代币交易:涉及多种加密货币的单一操作
  • 自动复投:奖励自动再投资
  • 无常损失:流动性池中因价格背离导致的价值变化
  • Gas 费用优化:跨不同网络的复杂费用结构
  • 协议治理:投票权和治理代币分配
  • 跨协议交互:跨多个 DeFi 平台的交易

DeFi 活动的税务影响

美国国税局将 DeFi 活动视为应税事件:

  • 流动性提供:存入资产时可能触发应税事件
  • 收益耕作奖励:按公允市场价值作为普通收入征税
  • 无常损失:从资金池中提取时可能产生税务影响
  • 治理代币:空投和奖励应税为收入
  • 质押奖励:收到时应税为收入

Beancount.io 中 DeFi 账户的设置

全面的账户结构

创建一个详细的账户层级,以记录所有 DeFi 活动:

; Wallet Accounts
1970-01-01 open Assets:Crypto:Wallet:MetaMask:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:USDC
1970-01-01 open Assets:Crypto:Wallet:MetaMask:DAI
1970-01-01 open Assets:Crypto:Wallet:MetaMask:WBTC

; Uniswap V3 Liquidity Pools
1970-01-01 open Assets:DeFi:Uniswap:ETH-USDC-LP
1970-01-01 open Assets:DeFi:Uniswap:DAI-USDC-LP
1970-01-01 open Assets:DeFi:Uniswap:WBTC-ETH-LP

; Compound Protocol
1970-01-01 open Assets:DeFi:Compound:cUSDC
1970-01-01 open Assets:DeFi:Compound:cETH
1970-01-01 open Assets:DeFi:Compound:cDAI

; Aave Protocol
1970-01-01 open Assets:DeFi:Aave:aUSDC
1970-01-01 open Assets:DeFi:Aave:aETH
1970-01-01 open Assets:DeFi:Aave:DebtETH

; Staking Protocols
1970-01-01 open Assets:Staking:Ethereum:ETH
1970-01-01 open Assets:Staking:Lido:stETH
1970-01-01 open Assets:Staking:RocketPool:rETH

; Income Accounts
1970-01-01 open Income:DeFi:Yield:Uniswap
1970-01-01 open Income:DeFi:Yield:Compound
1970-01-01 open Income:DeFi:Yield:Aave
1970-01-01 open Income:DeFi:Staking:Ethereum
1970-01-01 open Income:DeFi:Governance:Tokens
1970-01-01 open Income:DeFi:Airdrops

; Expense Accounts
1970-01-01 open Expenses:DeFi:Gas:Ethereum
1970-01-01 open Expenses:DeFi:Gas:Polygon
1970-01-01 open Expenses:DeFi:Gas:Arbitrum
1970-01-01 open Expenses:DeFi:ImpermanentLoss

DeFi 专用商品

定义代币和 LP 代币,并附带适当的元数据:

1970-01-01 commodity UNI-V3-ETH-USDC
name: "Uniswap V3 ETH-USDC LP Token"
asset-class: "liquidity-pool"
protocol: "uniswap-v3"

1970-01-01 commodity cUSDC
name: "Compound USDC"
asset-class: "lending-token"
protocol: "compound"

1970-01-01 commodity stETH
name: "Lido Staked Ethereum"
asset-class: "staking-derivative"
protocol: "lido"

追踪常见的DeFi活动

1. Uniswap 流动性提供

向资金池添加流动性

2024-01-15 * "向 ETH-USDC Uniswap V3 资金池添加流动性"
Assets:Crypto:Wallet:MetaMask:ETH -5.0 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:USDC -12500 USDC
Assets:DeFi:Uniswap:ETH-USDC-LP 100 UNI-V3-ETH-USDC {250.00 USD}
Expenses:DeFi:Gas:Ethereum 0.01 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.01 ETH {2500.00 USD}

申领 LP 费用

2024-02-15 * "申领 Uniswap LP 费用"
资产:加密货币:钱包:MetaMask:ETH 0.2 ETH {2600.00 USD}
资产:加密货币:钱包:MetaMask:USDC 300 USDC
收入:DeFi:收益:Uniswap 820.00 USD
费用:DeFi:Gas:以太坊 0.005 ETH {2600.00 USD}
资产:加密货币:钱包:MetaMask:ETH -0.005 ETH {2600.00 USD}

移除流动性伴随无常损失

2024-03-15 * "从 ETH-USDC 资金池中移除流动性"
Assets:DeFi:Uniswap:ETH-USDC-LP -100 UNI-V3-ETH-USDC {250.00 USD}
Assets:加密货币:钱包:MetaMask:ETH 4.8 ETH {2800.00 USD}
Assets:加密货币:钱包:MetaMask:USDC 12800 USDC
Expenses:DeFi:无常损失 240.00 USD ; 无常损失计算
Expenses:DeFi:Gas:以太坊 0.008 ETH {2800.00 USD}
Assets:加密货币:钱包:MetaMask:ETH -0.008 ETH {2800.00 USD}

2. Compound 协议借贷

向 Compound 提供资产

2024-01-20 * "向 Compound 供应 USDC"
Assets:Crypto:Wallet:MetaMask:USDC -10000 USDC
Assets:DeFi:Compound:cUSDC 500 cUSDC {20.00 美元}
Expenses:DeFi:Gas:Ethereum 0.008 ETH {2500.00 美元}
Assets:Crypto:Wallet:MetaMask:ETH -0.008 ETH {2500.00 美元}

赚取复利

2024-02-20 * "复利累积"
Assets:DeFi:Compound:cUSDC 5.2 cUSDC {20.50 USD}
Income:DeFi:Yield:Compound 106.60 USD

申领 COMP 奖励

2024-02-20 * "申领 COMP 治理代币"
Assets:Crypto:Wallet:MetaMask:COMP 12 COMP {85.00 USD}
Income:DeFi:Governance:Tokens 1020.00 USD
Expenses:DeFi:Gas:Ethereum 0.006 ETH {2600.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.006 ETH {2600.00 USD}

3. Aave 协议运营

存款与借款

; 存入 ETH 作为抵押品
2024-01-25 * "Deposit ETH to Aave"
Assets:Crypto:Wallet:MetaMask:ETH -10 ETH {2500.00 USD}
Assets:DeFi:Aave:aETH 10 aETH {2500.00 USD}
Expenses:DeFi:Gas:Ethereum 0.01 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.01 ETH {2500.00 USD}

; 借入 USDC,以 ETH 为抵押
2024-01-25 * "Borrow USDC from Aave"
Assets:Crypto:Wallet:MetaMask:USDC 15000 USDC
Liabilities:DeFi:Aave:DebtUSDC -15000 USDC
Expenses:DeFi:Gas:Ethereum 0.008 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.008 ETH {2500.00 USD}

偿还附息贷款

2024-03-25 * "向 Aave 偿还 USDC 贷款"
Liabilities:DeFi:Aave:DebtUSDC 15000 USDC
Expenses:DeFi:Interest:Aave 450 USDC ; 应计利息
Assets:Crypto:Wallet:MetaMask:USDC -15450 USDC
Expenses:DeFi:Gas:Ethereum 0.008 ETH {2700.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.008 ETH {2700.00 USD}

4. 以太坊质押

直接以太坊质押

2024-01-10 * "在以太坊 2.0 上质押 ETH"
Assets:Crypto:Wallet:MetaMask:ETH -32 ETH {2500.00 USD}
Assets:Staking:Ethereum:ETH 32 ETH {2500.00 USD}
Expenses:DeFi:Gas:Ethereum 0.01 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.01 ETH {2500.00 USD}

质押收益

2024-02-10 * "ETH 质押收益"
资产:质押:以太坊:ETH 0.15 ETH {2600.00 USD}
收入:DeFi:质押:以太坊 390.00 USD

通过 Lido 进行流动性质押

2024-01-12 * "通过 Lido 质押 ETH"
Assets:Crypto:Wallet:MetaMask:ETH -10 ETH {2500.00 USD}
Assets:Staking:Lido:stETH 10 stETH {2500.00 USD}
Expenses:DeFi:Gas:Ethereum 0.008 ETH {2500.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.008 ETH {2500.00 USD}

高级 DeFi 场景

收益耕作策略

多协议收益耕作

; 步骤 1: 将 USDC 存入 Compound
2024-01-30 * "将 USDC 存入 Compound 进行收益耕作"
Assets:Crypto:Wallet:MetaMask:USDC -20000 USDC
Assets:DeFi:Compound:cUSDC 1000 cUSDC {20.00 USD}

; 步骤 2: 抵押 cUSDC 借入 DAI
2024-01-30 * "从 Compound 借入 DAI"
Assets:Crypto:Wallet:MetaMask:DAI 15000 DAI
Liabilities:DeFi:Compound:DebtDAI -15000 DAI

; 步骤 3: 向 Uniswap 提供 DAI-USDC 流动性
2024-01-30 * "添加 DAI-USDC 流动性进行收益耕作"
Assets:Crypto:Wallet:MetaMask:DAI -15000 DAI
Assets:Crypto:Wallet:MetaMask:USDC -5000 USDC ; 额外的 USDC
Assets:DeFi:Uniswap:DAI-USDC-LP 200 UNI-V3-DAI-USDC {100.00 USD}

跨链 DeFi 操作

资产桥接

2024-02-05 * "Bridge ETH to Polygon"
Assets:Crypto:Wallet:MetaMask:ETH -5 ETH {2600.00 USD}
Assets:Crypto:Wallet:Polygon:ETH 5 ETH {2600.00 USD}
Expenses:DeFi:Bridge:Fees 0.01 ETH {2600.00 USD}
Assets:Crypto:Wallet:MetaMask:ETH -0.01 ETH {2600.00 USD}

闪电贷与套利

2024-02-10 * "闪电贷套利机会"
; 闪电贷
资产:Crypto:Temp:FlashLoan 100000 USDC
负债:DeFi:Aave:FlashLoan -100000 USDC

; 套利交易
资产:Crypto:Temp:FlashLoan -100000 USDC
资产:Crypto:Temp:Arbitrage 101500 USDC

; 偿还闪电贷
负债:DeFi:Aave:FlashLoan 100000 USDC
资产:Crypto:Temp:Arbitrage -100090 USDC ; 包括费用

; 利润
资产:Crypto:Wallet:MetaMask:USDC 1410 USDC
收入:DeFi:套利:利润 1410.00 USD

DeFi 税务报告考量

收入确认

所有 DeFi 奖励均应作为普通收入纳税:

; 分别追踪所有收入来源
Income:DeFi:Yield:Uniswap ; LP 费用
Income:DeFi:Yield:Compound ; 利息收入
Income:DeFi:Staking:Ethereum ; 质押奖励
Income:DeFi:Governance:Tokens ; 治理代币空投
Income:DeFi:Airdrops ; 协议空投

费用抵扣

追踪可抵扣费用:

Expenses:DeFi:Gas:Ethereum          ; 燃料费
Expenses:DeFi:Gas:Polygon ; 二层网络费用
Expenses:DeFi:Interest:Aave ; 借贷成本
Expenses:DeFi:ImpermanentLoss ; 来自 LP 头寸的无常损失

资本利得追踪

使用基于批次的会计核算,准确计算资本利得:

; 同一代币的不同成本基础
Assets:DeFi:Compound:cUSDC 100 cUSDC {20.00 USD} ; 批次 1
Assets:DeFi:Compound:cUSDC 100 cUSDC {21.00 USD} ; 批次 2

DeFi 会计最佳实践

1. 实时交易记录

  • 交易执行后立即记录交易
  • 使用交易哈希进行验证
  • 监控内存池中的待处理交易

2. 燃气费优化追踪

; 追踪燃气费优化策略
Expenses:DeFi:Gas:Ethereum:Standard ; 标准燃气费价格
Expenses:DeFi:Gas:Ethereum:Fast ; 快速燃气费价格
Expenses:DeFi:Gas:Ethereum:Instant ; 即时燃气费价格

3. 协议风险管理

; 跟踪协议特定风险
Expenses:DeFi:Risk:SmartContract ; 智能合约故障
Expenses:DeFi:Risk:Liquidation ; 清算事件
Expenses:DeFi:Risk:Slippage ; 滑点成本

4. 自动化对账

  • 设置自动化价格数据源
  • 使用协议 API 进行余额验证
  • 实现自动化交易导入

5. 文档标准

  • 维护详细的交易备注
  • 文档化策略原理
  • 保留协议交互记录

DeFi 工具集成

投资组合追踪

  • DeBank:DeFi 投资组合概览
  • Zapper:多协议仪表盘
  • Zerion:DeFi 钱包和追踪器

税务报告

  • Koinly: DeFi 税务计算
  • CoinTracker: 多协议支持
  • TokenTax: 专业的 DeFi 报告

分析平台

  • DeFi Pulse: 协议分析
  • DeFiLlama: TVL 和收益追踪
  • APY.vision: 无常损失追踪

结论

DeFi 会计的复杂性不应阻碍你参与去中心化金融革命。借助 Beancount.io 强大的纯文本会计系统,你可以:

  • 追踪复杂交易:无缝处理多协议交互
  • 确保税务合规:妥善进行收入确认和费用追踪
  • 监控投资组合表现:实时洞察 DeFi 头寸
  • 管理风险:追踪无常损失和协议风险
  • 扩展操作:从简单的质押到复杂的收益耕作策略

成功进行 DeFi 会计的关键在于一致性、准确性和适当的分类。从基本协议开始,并随着你对会计模式的熟悉程度,逐渐扩展到更复杂的策略。

准备好精通 DeFi 会计了吗?开启你的 Beancount.io 之旅,立即掌控你的去中心化金融投资组合。