初创公司的Beancount配置
一套实用的、可直接复制粘贴的基础配置,用纯文本管理初创公司的账簿。适用于从种子前到A轮融资阶段。本文不构成法律或税务建议。
经营一家初创公司意味着身兼数职,其中最关键的角色之一就是“簿记员”。在你负担得起昂贵的软件或全职会计师之前,你需要一个准确、可审计,并且不会将你锁定在专有生态系统中的系统。这就是Beancount的用武之地:一个开源的纯文本会计系统。
使用Beancount意味着你的财务分类账将存放在文本文件中,与你的代码一起存放在Git仓库中。它是版本控制的、透明的,并且可以无限定制。本指南提供了一套完整、可复制粘贴的配置,让你的初创公司从注册成立到A轮融资都能顺利运行账簿,并建立在稳健的权责发生制会计原则之上。
1) 你将配置的内容
本指南将引导你创建一个完整的、专业级的会计配置。最终,你将拥有:
- 在Git中管理的单一事实来源分类账(
main.beancount),为你提供公司财务的完整、可审计历史记录。 - Fava用于生成精美的报表和图表。 Fava是Beancount的Web界面,可将你的文本文件转化为交互式的损益表、资产负债表和现金流分析。
- 导入器的结构,你可以在之后添加,以便从你的银行、信用卡、PayPal和Stripe账户自动录入交易。我们将从手动操作开始以学习系统,然后再实现自动化。
- 为现代初创公司设计的权责发生制会计科目表,内置对递延收入、预付费用和工资负债的支持。
- 种子轮融资的原始工具,包括记录SAFE(未来股权简单协议)票据(作为负债或权益)和带利息的可转换票据的清晰示例。
2) 项目结构(放入你的仓库)
首先,在你公司的Git仓库中创建以下目录结构。这种组织方式可以保持你的分类账整洁且可扩展。
/ledger
main.beancount
/includes
accounts.beancount
opening-balances.beancount
policies.beancount
/documents
/bank
/invoices
/receipts
/importers # 可选;在你自动化CSV导入时添加
bank_importer.py
card_importer.pymain.beancount:将所有内容整合在一起的核心文件。/includes:存放你的会计科目表、期初余额和会计政策。/documents:用于存储银行对账单、发票和收据的PDF文件,以形成清晰的审计线索。/importers:存放你未来用于解析银行CSV文件的Python脚本。
3) 最小但合理的 main.beancount
这是你分类账的入口点。它设置了一些全局选项,并包含了其他组件文件。将以下内容复制到ledger/main.beancount中,并自定义标题。
option "title" "Acme, Inc. 分类账"
option "operating_currency" "USD"
option "documents" "ledger/documents"
include "includes/accounts.beancount"
include "includes/opening-balances.beancount"
include "includes/policies.beancount"
; 如果稍后添加导入器,你将在此处添加插件行。
; plugin "beancount.plugins.implicit_prices"4) 入门会计科目表(权责发生制优先)
你的会计科目表是公司财务交易的完整类别列表。此入门模板专为权责发生制会计而构建,与现金收付制会计相比,它能更准确地反映你公司的健康状况。
将其放入includes/accounts.beancount中。你可以随时删除当前不需要的任何科目。
; --- 资产 ---
1970-01-01 open Assets:Bank:Checking USD
1970-01-01 open Assets:Bank:Savings USD
1970-01-01 open Assets:AR USD ; 应收账款
1970-01-01 open Assets:Prepaid:Software USD
1970-01-01 open Assets:Prepaid:Insurance USD
1970-01-01 open Assets:Deposits USD ; 保证金
1970-01-01 open Assets:Equipment USD
1970-01-01 open Assets:Intangibles USD
1970-01-01 open Assets:Crypto:BTC BTC
1970-01-01 open Assets:Other
; --- 负债 ---
1970-01-01 open Liabilities:AP USD ; 应付账款
1970-01-01 open Liabilities:CreditCard:Corporate USD
1970-01-01 open Liabilities:DeferredRevenue USD
1970-01-01 open Liabilities:Payroll:Withholding USD
1970-01-01 open Liabilities:Payroll:EmployerTaxes USD
1970-01-01 open Liabilities:SalesTax:CA USD
1970-01-01 open Liabilities:SAFE USD
1970-01-01 open Liabilities:NotesPayable USD
1970-01-01 open Liabilities:Other
; --- 权益 ---
1970-01-01 open Equity:CommonStock USD
1970-01-01 open Equity:APIC USD ; 额外实缴资本
1970-01-01 open Equity:SAFE USD ; 如果你将SAFE归类为权益
1970-01-01 open Equity:RetainedEarnings USD
1970-01-01 open Equity:OpeningBalances USD
; --- 收入(负余额) ---
1970-01-01 open Income:Revenue:SaaS USD
1970-01-01 open Income:Revenue:Services USD
1970-01-01 open Income:Other USD
; --- 费用 ---
1970-01-01 open Expenses:COGS USD
1970-01-01 open Expenses:Payroll:Wages USD
1970-01-01 open Expenses:Payroll:EmployerTaxes USD
1970-01-01 open Expenses:Benefits USD
1970-01-01 open Expenses:Contractors USD
1970-01-01 open Expenses:Software:Subscriptions USD
1970-01-01 open Expenses:Cloud USD
1970-01-01 open Expenses:Rent USD
1970-01-01 open Expenses:Meals USD
1970-01-01 open Expenses:Travel USD
1970-01-01 open Expenses:Marketing USD
1970-01-01 open Expenses:Legal USD
1970-01-01 open Expenses:Accounting USD
1970-01-01 open Expenses:Insurance USD
1970-01-01 open Expenses:BankFees USD
1970-01-01 open Expenses:Taxes:Income USD
1970-01-01 open Expenses:Taxes:Sales USD
1970-01-01 open Expenses:Other USD备注
- 收入科目为负数,因为它们代表复式记账中的贷方。不必担心这一点;Fava会在报表中自动翻转符号,因此你的收入将在损益表上显示为正数。
- 从狭窄、有目的的类别开始。以后添加新科目比清理混乱、过于细化的会计科目表要容易得多。
5) 期初余额(第一天)
分类账中的第一笔交易为后续记账奠定了基础。它记录了你开始记账当天各科目的初始状态。将此交易放入includes/opening-balances.beancount中,并根据你的实际初始状况调整日期和金额。
2025-01-01 * "期初余额"
Assets:Bank:Checking 5,000.00 USD
Liabilities:CreditCard:Corporate -500.00 USD
Equity:OpeningBalances -4,500.00 USD此条目确认公司成立时银行账户有5,000美元,信用卡欠款500美元。Equity:OpeningBalances科目是一个特殊科目,用于确保交易借贷平衡,这是复式记账的要求。
6) 常见的初创公司交易(复制粘贴)
以下是早期初创公司最常见的财务事件的模板。复制、粘贴并加以调整以适应你的需求。
创始人购买股份(简单,仅货币)
当创始人按面值购买初始股份时,现金进入公司并记为权益。你的股权结构表(Carta、Pulley或电子表格)是股份数量的唯一来源;分类账只记录金额。
2025-01-05 * "创始人按面值购买股份"
Assets:Bank:Checking 800.00 USD
Equity:CommonStock -0.80 USD
Equity:APIC -799.20 USD
; 8,000,000股普通股,每股$0.0001 — 数量在分类账外维护(可选)将你自己的股份作为商品跟踪
如果你希望分类账跟踪已发行的股份数量,你可以将你的股票定义为一种“商品”。这更复杂,但能在分类账内提供更完整的记录。
2025-01-05 commodity ACME
name: "Acme, Inc. 普通股"
2025-01-05 * "创始人股份发行"
Assets:Bank:Checking 800.00 USD
Equity:APIC -799.20 USD
Equity:CommonStock -8,000,000 ACME {0.0001 USD}SAFE现金入账(选择分类)
SAFE(未来股权简单协议)既可以视为负债,也可以视为一种权益(具体来说,是“夹层权益”)。请咨询你的会计师以选择合适的方法,并保持一致性。
; (A) 权益分类(夹层)
2025-02-01 * "投后SAFE — SeedFund"
Assets:Bank:Checking 500,000.00 USD
Equity:SAFE -500,000.00 USD
; (B) 负债分类(直至转换)
2025-02-01 * "投后SAFE — SeedFund"
Assets:Bank:Checking 500,000.00 USD
Liabilities:SAFE -500,000.00 USD当有定价轮次完成时,你将根据交割文件将SAFE余额重新分类为优先股和额外实缴资本。
带应计利息的可转换票据
与SAFE不同,可转换票据明确是一种负债,并会累计利息。你需要记录初始现金,然后定期(例如每季度)计提利息费用。
2025-03-01 * "可转换票据 — 年利率6%"
Assets:Bank:Checking 250,000.00 USD
Liabilities:NotesPayable -250,000.00 USD
2025-06-30 * "计提Q2票据利息"
Expenses:Interest 3,750.00 USD
Liabilities:NotesPayable -3,750.00 USD
; 250,000 * 6% * 0.25 = 3,750年度SaaS销售(递延收入 + 按月确认)
这是权责发生制会计的基石。当客户预付一年的费用时,你不能一次性确认全部收入。你将其记入负债(DeferredRevenue),然后每月确认1/12。
2025-03-10 * "年度订阅 — AcmeCo — INV-001"
Assets:AR 1,200.00 USD
Liabilities:DeferredRevenue -1,200.00 USD
narration: "SaaS年度预付"
2025-03-20 * "支付INV-001"
Assets:Bank:Checking 1,200.00 USD
Assets:AR -1,200.00 USD
; 确认第1/12个月(每月重复或使用脚本)
2025-04-01 * "收入确认 1/12 — INV-001"
Liabilities:DeferredRevenue 100.00 USD
Income:Revenue:SaaS -100.00 USD预付费用及摊销
这是递延收入的反向操作。当你预付某项服务(如年度软件或保险)时,你将其记为资产(Prepaid),然后每月“摊销”或计提部分费用。
2025-03-01 * "年度软件预付"
Assets:Prepaid:Software 1,200.00 USD
Assets:Bank:Checking -1,200.00 USD
2025-04-01 * "摊销预付 1/12"
Expenses:Software:Subscriptions 100.00 USD
Assets:Prepaid:Software -100.00 USD工资发放(净现金,含代扣和雇主税)
一笔工资分录包含几个部分:总工资费用、雇主税费用、支付给员工的净现金,以及你代扣并需上缴政府的税款负债。
2025-04-15 * "工资发放 — 4月15日"
Expenses:Payroll:Wages 15,000.00 USD
Expenses:Payroll:EmployerTaxes 1,200.00 USD
Liabilities:Payroll:Withholding -4,000.00 USD
Assets:Bank:Checking -12,200.00 USD销售税征收和缴纳(以加州为例)
当你征收销售税时,这不是你的钱。这是你欠州政府的负债。你在销售时记录该负债,并在缴纳时结清。
2025-05-10 * "发票 #123 — 加州应税"
Assets:AR 1,088.75 USD
Income:Revenue:SaaS -999.00 USD
Liabilities:SalesTax:CA -89.75 USD
2025-06-05 * "支付 #123"
Assets:Bank:Checking 1,088.75 USD
Assets:AR -1,088.75 USD
2025-07-20 * "缴纳加州Q2销售税"
Liabilities:SalesTax:CA 89.75 USD
Assets:Bank:Checking -89.75 USD外汇和加密货币(轻量级)
Beancount原生支持多种货币。使用price指令记录汇率,并使用{}成本语法处理特定交易。
2025-03-01 price EUR 1.0832 USD
2025-03-02 * "AWS欧盟地区费用"
Expenses:Cloud 90.00 EUR
Liabilities:CreditCard:Corporate -90.00 EUR
2025-03-05 * "购买BTC用于测试"
Assets:Crypto:BTC 0.0200 BTC {3400.00 USD}
Assets:Bank:Checking -3,400.00 USD7) 使用Fava(一条命令生成报表)
Fava是出色的Web界面,能让Beancount数据生动起来。这是对你认真数据录入的回报。
- 安装:
$ pip install fava - 运行:
$ fava ledger/main.beancount - 有用的视图:损益表、资产负债表、日记账(用于按科目/标签筛选)以及查询(用于自定义类似SQL的查询)。
Fava快速筛选:
account:DeferredRevenue:显示递延收入科目中的所有活动。tag:#invoice-001:标记与特定发票相关的交易并筛选。from:2025-01-01 to:2025-12-31:专注于特定财务期间。
8) 月度结账检查清单(15–45分钟)
在每个月末,按照此检查清单操作,以确保你的账簿准确且最新。这种纪律性将使报税和投资者尽调变得轻松。
- 银行/信用卡:导入或手动录入所有交易。核对余额与对账单。
- AR/AP:录入所有已开具的发票和已收到的账单;将已支付的标记为已结清。
- 收入:为所有预付合同录入月度收入确认分录。
- 预付费用:摊销所有预付费用的
1/12(或适当的比例)。 - 工资:根据工资服务商的报告登记日记账分录。
- 销售税:登记当月的销售税负债。
- 种子工具:计提任何可转换票据的利息。
- 合理性检查:
- 你的损益表收入是否大致符合预期的MRR/ARR?
- 你的烧钱率和跑道是否与你的财务计划一致?
$ bean-check运行是否无错误?Fava的报表看起来是否正确?
- 提交到Git,使用简洁、一致的备注(例如,
close: 2025-04)。
9) 元数据和文档(让审计更轻松)
你的分类账应具有自文档化特性。使用元数据并链接到源文档,以创建无懈可击的审计线索。未来的你(和你的会计师)会感谢你。
- 为交易添加元数据,如
payee:、narration:、invoice:、customer:或link:,以提高清晰度。 - 将源PDF(发票、收据、银行对账单)附加到你的
ledger/documents/文件夹中,并使用document:元数据标签进行链接。 - 使用标签(
#payroll、#saas、#vendor-aws、#invoice-001)方便筛选和分析。
示例:
2025-03-10 * "年度订阅 — AcmeCo" #saas #invoice-001
payee: "AcmeCo"
invoice: "INV-001"
document: "documents/invoices/INV-001.pdf"
Assets:AR 1,200.00 USD
Liabilities:DeferredRevenue -1,200.00 USD10) 稍后导入(当你有时间时)
在头一两个月,先手动录入交易。这是学习系统和了解自身支出模式的最佳方式。一旦你熟悉了,就可以编写简单的Python导入器来自动化流程并减少重复劳动。
典型的导入器使用顺序:
- 银行CSV →
Assets:Bank:Checking - 信用卡CSV →
Liabilities:CreditCard:Corporate - Stripe/PayPal付款报告 → 收入和现金映射
将你的导入器放在/ledger/importers中,并像审查其他代码更改一样审查它们生成的交易。
11) 政策(放入 includes/policies.beancount)
此文件用于记录你的会计决策,以确保一致性。它是一个简单的文本文件,但对于保持纪律至关重要。
- 权责发生制基础;SaaS收入按比例确认。
- 功能货币为USD;按当日汇率或交易汇率记录外汇。
- 资本化门槛(例如,超过
2,500美元的项目作为Assets:Equipment资产;否则立即费用化)。 - 差旅/餐饮:必须在
narration字段中记录业务目的。 - 权益记录:明确说明你是使用仅货币还是股份商品方法。
- SAFE/票据:记录你选择的分类(负债或权益)。
policies.beancount示例:
; 政策:权责发生制,收入递延并每月确认。
; 政策:USD功能货币。汇兑损益源自成本/价格数据。
; 政策:资本化超过2,500美元的有形资产,使用3年直线折旧。
; 政策:SAFE记录为负债,直至在有定价轮次中转换。12) 快速故障排除
- 日记账中收入显示为负数: 这是正确的!收入是贷方。Fava报表将显示为正数。
- 余额不归零: 你可能有一笔不完整的交易。交易的过账必须合计为零。使用Fava的日记账视图找出问题所在。作为临时措施,你可以在
Equity:Suspense科目添加一个平衡腿使文件有效,然后调查并修复根本原因。 - 外汇不匹配: 确保在相关日期有
price指令,或者使用你的功能货币指定成本基础,例如90.00 EUR {97.49 USD}。
13) 在分类账之外跟踪的内容(保留链接)
Beancount用于处理财务交易,但有些事情更适合在专用系统中管理。关键是从你的分类账链接到它们。
- 股权结构表:使用Carta、Pulley或电子表格。在Beancount中的融资交易中链接到已签署的交割文件。
- 董事会同意书、股权激励计划、409A报告:将这些文件存储在安全位置,并在相关股权交易中添加
link:元数据。 - 纳税申报表:存储最终的PDF,并在年末结账交易中链接到它们。
可复制的入门文件(一体化)
如果你希望在扩展到include结构之前从单个文件开始,只需将上述各部分的文件内容粘贴到一个大型main.beancount中。你可以随时在分类账增长后对其进行重构。
该框架为你的初创公司财务提供了坚实、可扩展的基础。通过将账簿保存在版本控制下的纯文本中,你将获得无与伦比的透明度和控制力,使你的公司从第一天起就建立财务纪律。