跳到主要内容

86 篇博文 含有标签「beancount」

查看所有标签

在 Beancount 中管理应收账款

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

在个人理财管理的迷宫中,Beancount 作为纯文本记账的清晰度和精确度灯塔而出现。尤其在管理应收账款——即预期从他人处收到的款项——方面,Beancount 提供了一种结构化的方法,以使你的财务记录保持完美有序。本博客将引导你了解使用 Beancount 追踪应收账款、处理退款以及管理未解决交易的复杂性。无论你是退货、借出资金还是等待退款,本文都是你实现财务清晰的路线图。

理解 Beancount 中的应收账款:

2024-02-17-navigating-receivables-beancount-guide

应收账款代表他人欠你的款项。这可能来自多种情况,例如购物退货后等待退款,或者你借钱给某人。例如,假设你已将一条手表带退回给像 Amazon.com 这样的在线商店,并正在等待退款。在 Beancount 中,此交易记录为资金从你的信用卡负债转移到你的资产,作为应收账款:

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

管理退款:

一旦退款处理完毕且你收到款项,就会记录另一笔交易以抵消应收账款中的余额。这确保你的账户反映资金已回到你手中:

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

完整的交易周期:

涉及应收账款的完整进出交易是结合上述两笔交易并展示如下,演示了退款后的平衡账户:

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

处理未解决的交易:

对于尚未收到退款或还款的交易,Beancount 使用 #UNRESOLVED 标签。此标签有助于识别和追踪仍待处理的金额。例如:

2023-10-31 * "John Doe" "Lending Money" #UNRESOLVED
Liabilities:CreditCard:Chase -100.00 USD
Assets:Receivables

通过关注标记为 #UNRESOLVED 的交易,你可以快速确定哪些金额尚未结清。

保持零余额:

在一个正确的分类账中,资产:应收账款账户下所有交易的总和(不包括带有 #UNRESOLVED 标签的交易)理想情况下应归零。这确保所有预期资金都已入账,维护了你财务记录的完整性。

例如,一个有效的分类账可能如下所示,其中一笔未解决的交易清晰标记,等待结清:

2023-10-31 * "Amazon.com" "[Return] Watch Strap"
Liabilities:CreditCard:Chase -12.00 USD
Assets:Receivables

2023-11-01 * "Amazon.com" "[Refund] Watch Strap"
Liabilities:CreditCard:Chase 12.00 USD
Assets:Receivables

2023-10-31 * "John Doe" "Lending Money" #UNRESOLVED
Liabilities:CreditCard:Chase -100.00 USD
Assets:Receivables

无效的分类账是指某笔交易导致应收账款账户未能归零,因此需要 #UNRESOLVED 标签进行修正。

结论

在 Beancount 中管理应收账款不必令人生畏。通过清晰地了解如何记录交易、管理退款以及关注未解决的交易,你可以维护准确可靠的财务记录。采用 Beancount 结构化的应收账款管理方法,不仅简化了你的财务追踪,还带来了安心,因为你知道每一分钱都已入账。那么,何不利用 Beancount 的强大功能,让你的财务管理变得顺畅无阻呢?

自己动手 VS 聘请簿记员:面向成本意识创始人的 Beancount 攻略

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

作为创始人,你身兼数职——首席执行官、销售员、产品经理,当然还有簿记员。但随着业务的增长,花在核对交易上的时间开始感觉不像精明的节约,而更像是一种代价高昂的分心。那么,何时才是移交账簿的合适时机?

答案不在于放弃控制权;而在于做出数据驱动的决策。以下是如何使用你的 Beancount 账本来决定是继续自己动手还是聘请专业人士。

2023-09-03-diy-vs-hiring-a-bookkeeper-a-beancount-playbook-for-cost-conscious-founders

简而言之: 如果你以每小时 85 美元的价格计算你的时间,并且每月只花四个小时进行簿记,那么这项工作将使你损失 340 美元的收入。一个典型的远程簿记员起价约为每月 249 美元——此外,他们还可以让你腾出时间来真正发展业务。

1. 为你自己的时间定价

这个决定中最重要的指标是你自己的机会成本。你花在分类支出上的每一小时都是你没有花在销售、产品开发或战略上的时间。

计算方法很简单:

  1. 跟踪你每月花在簿记任务上的小时数(核对、编码、修复错误)。
  2. 将这些小时数乘以你的有效计费费率。
  3. 将该数字与外部簿记员的月费进行比较(典型的起价约为每月 249 美元)。

如果你的时间成本更高,那么你就有一个明显的委托优势。你甚至可以直接在 Beancount 中跟踪这一点。

; 跟踪你时间的机会成本
2025-07-31 * "七月簿记时间"
Expenses:Admin:BookkeepingTime 4.00 H ; 你自定义的小时单位
Equity:OwnerTime -340.00 USD
; metadata: rate:85

这里,H 是“小时”的自定义货币。你可以直接记录时间,并使用脚本或 price 指令来分配其美元价值,使你自己劳动力的成本成为财务报告的明确组成部分。

2. 计算自己动手的隐性成本

你的时间成本不是唯一的因素。自己动手簿记 carries risks that can be far more expensive than a monthly retainer.

  • 税务失误: 混乱的账簿对于税务筹划人员来说是一场噩梦。注册会计师可能每小时收费150-400 美元,仅仅是为了清理你的记录,然后才能开始报税。
  • 错失扣除额和 IRS 罚款: 小的、无意的错误——例如错误分类支出或忘记记录现金交易——会随着时间的推移而累积,导致罚款、利息和更高的税单。
  • 创始人倦怠: 深夜核对的 mental drag 是真实存在的。它会消耗应该专注于高 leverage 活动(如销售和产品创新)的精力和能量。

Beancount 缓解措施: 你可以通过添加 Git pre-commit 钩子来减少错误,如果 bean-check 失败或交易缺少类别标签,该钩子将拒绝提交更改。即使你感到疲倦,这也能强制执行纪律。

3. 簿记员(或 Beancount 纪律)省钱的三种方式

无论你是聘请专业人士还是仅仅提升你自己的流程,良好的簿记都会带来回报。

  1. 更清晰的税务申报: 有条理、准确的账簿意味着注册会计师花在清理上的时间更少,这直接转化为更低的账单。
  2. 实时现金洞察: 了解你的确切现金状况可以帮助你避免代价高昂的透支费用和对最后时刻高息融资的需求。
  3. 压力缓冲: 稳定、可预测的财务运营可以减少创始人的压力,从而带来更好的决策和更健康的企业文化。

4. 何时你不应该急于聘请

聘请簿记员并不总是正确的做法。在某些情况下,自己动手仍然是更明智的财务选择。

  • 你处于尚未创收或现金流极低的阶段。 在这个阶段,每一美元都应该用于销售和客户获取。首先专注于获得收入。
  • 你的财务状况很简单。 如果你只有一个银行账户、一个 Stripe 提要和每月少于 60 笔交易,你可能可以在一周内用不到一个小时的时间在 Beancount 和 Fava 中管理所有内容。

5. 混合选项:你的“簿记员就绪”Beancount 账本

最佳解决方案通常是混合解决方案。使用 Beancount 自己完成繁重的工作,但保持账簿干净,以便专业人士可以介入处理高价值的任务。

  • 自动化摄取: 设置 bean-extract 每晚运行,自动提取新交易。
  • 标准化你的会计科目表: 使用常规账户名称(Expenses:SoftwareAssets:Bank:Checking),以便任何专业人士都能立即理解你的账本。
  • 附加源文档: 对于超过 75 美元的每笔支出,使用 link: 元数据附加收据或发票的 PDF。
  • 遵循月度结算清单:
    1. 核对所有银行和信用卡账户。
    2. 运行 bean-check 以确保没有错误。
    3. 使用 bean-report balance_sheetbean-report income_statement 导出 PDF 报表。
  • 执行季度移交: 将 Git 标签或简单的存档(books-Q3-2025.tar.gz)交给你的簿记员或注册会计师。他们可以验证你的工作,添加复杂的调整分录(如应计项目和折旧),并准备税务包。

这种模式可以保持低成本,因为专业人士只接触干净的、经过审查的数据,而你仍然可以获得专业级财务报表的益处。

6. 快速决策矩阵

情况聘请专业人士坚持使用 Beancount(自己动手)
每月 >60 笔交易,每月经常性收入 >2 万美元
你每小时收费 100 美元以上,但每月在账簿上花费 3 小时以上
资金紧张,每月经常性收入 <5 千美元
你真心喜欢电子表格和自动化

7. 后续步骤

  1. 记录你的时间。 在你的下一个簿记环节中,跟踪你在上面花费的每一分钟。
  2. 计算数字。 将该时间乘以你的计费费率,并将其与上述市场费率进行比较。
  3. 选择你的路径。 使用混合模式加强你的 Beancount 工作流程,或开始面试能够轻松处理纯文本账本的簿记员。

无论哪种方式,有意的簿记总是比即兴发挥更便宜。以 Beancount 作为你不可改变的真相来源,你将确切地知道专业帮助何时会带来回报——以及何时不会。

企业与个人簿记:使用 Beancount 划清界限

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

一家蓬勃发展的公司和一个健康的钱包都有一个共同点:界限分明。

对于任何企业主,从自由职业者到成长型初创公司创始人,最关键的财务纪律之一就是严格区分企业和个人财务。混合资金——用你的企业账户购买杂货或用你的个人支票支付企业供应商——会造成混乱、不透明的财务状况。这不仅会招致税务机关的审查,还会让你无法清楚地了解公司的实际业绩。

2023-08-12-business-vs-personal-bookkeeping-with-beancount

幸运的是,像 Beancount 这样的纯文本会计系统提供了一个完美的框架,可以在你的账本中强制执行这些必要的界限。

为什么区分很重要

不区分你的财务状况不仅仅是一个坏习惯;它会带来重大风险,并掩盖有价值的商业情报。

  • IRS 的清晰度: IRS 不仅仅是建议你分开银行账户;他们强烈敦促你这样做。当企业和个人资金混在一起时,很难证明哪些支出是合法的企业扣除额。这种模糊性会导致你最好避免的问题和复杂性。
  • 审计风险: 混合交易是审计员的主要危险信号。如果你的账簿是一团糟的个人和企业活动的混合体,你就有可能被取消有效的扣除额,甚至面临处罚。一个干净、独立的账本展示了专业性,并使任何潜在的审计更加顺利,压力更小。
  • 更清晰的洞察力: 如果你的企业的现金流被个人支出所掩盖,你怎么能知道你真正的利润率呢?一个独立的企业账本可以让你清晰地了解公司的财务状况。你可以准确地跟踪收入、分析支出和计算税务负债,而不会受到个人财务生活的“干扰”。

主要区别一览

企业和个人簿记的目的、规则和结构根本不同。理解这些对比是维护准确记录的关键。

方面企业账簿个人账簿
目的跟踪收入、支出、资产和负债,用于税务和增长决策管理家庭预算和储蓄目标
税务规则必须遵循附表 C、1120‑S 或 1065;严格的扣除标准除基本记录保存外,几乎没有正式要求
账户权益、应付账款、应收账款、销售税、工资支票、储蓄、投资、贷款
所有者薪酬工资 (W‑2) 或通过权益提取的业主提款不适用——个人提款用于生活费用

Beancount 四步蓝图

Beancount 可以轻松地在你的两个财务世界之间建立一道坚固的墙。以下是一个正确的实用工作流程。

• 1 — 开设专用账户

在你写下第一个 Beancount 条目前,开设一个专用的企业支票账户和企业信用卡。这种物理上的分离是干净簿记的基础。完成后,在你的 Beancount 账本中反映这种结构。

2025-07-23 open Assets:Bank:Business   USD
2025-07-23 open Assets:Bank:Personal USD

这个简单的设置确保了从交易发生的那一刻起,每笔交易都可以清楚地分配给你的企业或个人财务。

• 2 — 记录所有者出资和提款

作为所有者,你将在你的个人资金和企业之间转移资金。这些不是收入或支出。相反,它们是通过权益账户跟踪的。

  • 出资: 当你将自己的资金 投入 企业以启动或弥补亏空时。
  • 提款: 当你从企业中 取出 资金用于个人用途时(这是许多个体经营者“支付”自己的方式)。
; 启动企业的注资
2025-07-23 * "所有者出资"
Assets:Bank:Business 10,000.00 USD
Equity:Owner:Contrib

; 取出现金用于个人生活费用
2025-08-05 * "业主提取租金"
Equity:Owner:Draw 2,500.00 USD
Assets:Bank:Business

通过将这些记录为权益交易,你可以确保它们不会错误地夸大你的企业支出或减少你报告的利润。

• 3 — 快速处理混合收据

错误是难免的。你可能会不小心用你的企业卡支付了个人晚餐。关键是在你的账本中立即更正它。不要删除交易;将其重新分类为所有者提款。

2025-08-07 * "用企业卡购买的个人杂货"
Equity:Owner:Draw 72.35 USD
Assets:Bank:Business

此条目正确反映了企业资金用于个人支出,将其视为你从公司取出的资金。这可以防止你意外地在税款中申报不可扣除的个人支出。

• 4 — 按计划对账和审查

一致性是你对抗混乱账簿的最佳防御措施。每周或每月留出时间来核对你的企业账户。使用 Beancount 的工具来确保你的账本与你的银行对账单相符,并审查你公司的业绩。

# 检查你的企业银行余额与你的对账单是否相符
bean-balance books.bean "Assets:Bank:Business"

# 生成损益表以审查盈利能力
bean-report books.bean income_statement -e 2025-08-31

这种定期审查的习惯满足了 IRS 的记录保存要求,并让你随时了解企业的财务状况。

税务注意事项

  • 预估税: 为了避免巨额税单,将你未来的税款视为一项持续的企业支出。创建负债账户(Liabilities:Tax:FederalLiabilities:Tax:State),并定期将每笔存款的一定比例转移到这些账户中。当季度付款到期时,现金已经到位。
  • 不可扣除的个人费用: 记住 IRS 的规则:企业支出必须对你的工作“普通且必要”。你的个人餐费、通勤费用和非企业订阅不符合条件,必须完全排除在企业的损益表之外。

快速入门清单

  • 开设仅限企业的银行和信用卡账户。
  • 使用 Assets:Bank:BusinessEquity:Owner:ContribEquity:Owner:Draw 构建 Beancount 科目表。
  • 决定你的会计基础(现金制或权责发生制),并在你的 Beancount options 中注明。
  • 立即将企业卡上的任何意外个人费用标记为 Equity:Owner:Draw
  • 每周对账;将你的 .bean 文件备份到私有的 Git 远程服务器。
  • 每月审查你的损益表、资产负债表和现金流量表。

底线: 分开资金,分开账本。Beancount 使你的企业和个人财务之间的界限明确——并且版本控制——因此你的企业始终处于审计就绪状态,而你的拿铁习惯除了你之外谁也不知道。祝你记账愉快!

在 Beancount 中建模房地产交易

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

房地产交易可能构成一个家庭一生中最大的金融活动。本文解释了如何在 Beancount 中建模房地产。我将房地产视为一项资产,房屋的增值视为未实现收益。此外,抵押贷款被建模为负债,利息被视为费用。

假设 A 先生于 2020 年 1 月 1 日购买了一套位于 123 ABC Street, XYZ City, CA, 12345 的豪宅,价格为 100 万。利率为 3.0%,首付为 20%,贷款金额为 80 万。

项目金额
抵押贷款金额800,000
利率3%
抵押贷款期限30 年
抵押贷款总成本1,478,219.62
每月还款额4,106.17
房屋保险每年 1,300 (总计 39,000)
房产税每年 7,500 (总计 225,000)
贷款还清日期2049 年 12 月
已付总利息414,219.62

2023-06-09-房地产追踪

抵押贷款详情截图

创建账户

首先,我们将房屋视为一项资产。由于房屋被列为资产,它需要被赋予一个单位。在这种情况下,单位数量只有一个,不太可能出现多个,即使是第 N 套房屋,我们也会希望将其记录在单独的资产中。也就是说,一套房屋对应一项资产,并且这项资产有一个特殊的单位,其值只能是 1。

2019-12-31 commodity HOUSE.ABC
name: "123 ABC Street, XYZ City, CA, 12345"

2019-12-31 open Assets:Property:US:CA:123ABC HOUSE.ABC
2019-12-31 open Liabilities:Bank:US:SomeBank:Mortgage:Loan USD

在这里的第一行,我们定义了一个代表房屋的商品单位。在第四行,我们定义了一个资产账户,它持有之前定义为房屋的商品单位。在第五行,我们定义了一个贷款银行的账户。由于它是一项负债,因此属于负债类别。

购买

按照上述账户设置,购买房屋的行为等同于

借款(债务)+ 支出(首付)= 1 套房屋资产

购买房产时最重要的参考可能是买方结算声明,它清楚地列出了资金流向。

2020-01-01 * "Buying the house"
Assets:Property:US:CA:123ABC 1 HOUSE.ABC {1,000,000 USD}
Assets:Bank:US:SomeBankA -100,000 USD
Assets:Bank:US:SomeBankB -101,000 USD
Liabilities:Bank:US:SomeBank:Mortgage:Loan -800,000.00 USD
Expenses:Home:Insurance 1,000 USD
Expenses:Home:Mortgage:Loan:ClosingCost

在这里,我们详细说明了购房交易,其中资金从某些银行流出(用于首付和其他费用),获得贷款(增加负债),并获得一套房屋(增加资产)。

偿还抵押贷款

根据上述购买记录,我们目前欠款 80 万美元。由于利息的存在,并且考虑到美国所有贷款都是本金和利息均等摊销的,因此每月还款额包括一部分利息和一部分本金。在早期阶段,利息占大部分。

要记录贷款还款,你只需查看你的贷款银行对账单。你只需要知道每月偿还了多少本金,其余部分就是利息。利息被计为费用。

2020-02-01 * "Mortgage payment"
Assets:Bank:US:SomeBank:Saving:Joint -3,372.83 USD
Liabilities:Bank:US:SomeBank:Mortgage:Loan 1,376.26 USD
Expenses:Home:Mortgage:Loan:Interest

此分录详细说明了每月抵押贷款还款,该款项从你的联名储蓄账户中扣除。本金的偿还减少了负债,而利息部分则被视为费用。

增值

如果你想记录房产的增值,有些人会创建一个单独的账户,只记录当前房产的增值。考虑到房屋的价值可能会增加或减少,这种增值也可能是负的。这样做的好处是,在你的总资产汇总中,这两个账户都会被包含在内,一个用于记录交易时的房屋价值,另一个用于记录房屋当前的增值,从而反映房屋的实时价格。

我没有采用这种方法,主要原因如下:

  1. 房屋的当前价值只能是一个估算值,仅供参考,没有实际价值。通常,我只能在 Redfin 或 Zillow 等网站上获得房产估值,我个人认为其参考价值不高。我也没有考虑将这些增值实时纳入总资产。
  2. 我个人认为,在抵押贷款还清之前,如果房屋的现金流为负,某种程度上,该房产仍然是一项负债。因此,过早地将其纳入资产会给你一种资产丰富和增值的错觉,我个人希望避免这种错觉。

我用来记录房产增值的方法,稍后也将讨论如何建模 RSU。这种方法是使用一个虚拟货币单位。假设你的基础货币是美元,我们可以使用 USD.UNVEST(似乎没有必要为此创建一个新的商品)来表示该资产以特殊货币计算。该资产的增长或减少将不会以美元记录。通过这种方式,我可以实现我的最初目标,即记录房屋的增值,并且这种增值不会包含在最终的资产负债表(Balance Sheet)中。

2020-01-01 price HOUSE.ABC                          1,000,000 USD
2025-01-01 price HOUSE.ABC 1,400,000 USD.UNVEST

你只需要定期将你的房产定价为 USD.UNVEST。

因此,在 Fava 的商品页面上,你可以追踪房屋参考价格的趋势。但在资产负债表页面上,房屋的价格仍然是交易时的房屋价格。也就是说,你的总资产仍然是你当时的首付款,加上你不断偿还的本金。这项资产的最终变动只应发生在你购买房屋时。

房产价格图表截图

出售

由于尚未出售任何房产,且中间的各种杂费不明确,这是一个假设情景。

假设,在 2025 年 1 月 1 日,房产已增值至 1,400,000 美元,一些参考数据如下:

项目金额
余额709,656.20
代理费 (6%)72,000
其他过户费10,000

A 先生决定出售该房产,最终房屋售价为 1,300,000 美元。

2025-01-01 * "Selling the house"
Assets:Property:US:CA:123ABC -1 HOUSE.ABC {1,300,000 USD}
Liabilities:Bank:US:SomeBank:Mortgage:Loan 709,656.20 USD
Expenses:Home:Agent:Fee 72,000 USD
Expenses:Home:ClosingCost 10,000 USD
Expenses:Home:Tax 90,000 USD
Assets:Bank:US:SomeBankA

这里假设 5 年中有 2 年是自住的,因此 50 万的增值无需纳税。我在这里随机计算了一个数字。最终,进入 A 先生账户的资金是 418,343.8 美元,其中 20 万是当时的首付款,大约 10 万是已支付的利息。因此,最终 A 先生的账面利润约为 10 万。值得注意的是,我的计算不尽公平,毕竟 A 先生在这 5 年中节省了租金,而且房屋可能还有其他开销,例如维护、装修等。

为了在资产负债表中反映这一点,你可以添加此定价。

2025-01-01 price HOUSE.ABC                          1,300,000 USD

理解 Beancount 中的应收账款和应付账款

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

大家好!在今天的博客文章中,我们将深入探讨 Beancount 的世界,这是一款因其简洁和强大而备受推崇的复式记账工具。更具体地说,我们将讨论两个关键概念:应收账款和应付账款。

理解这些术语对于有效使用 Beancount(或任何复式记账系统)至关重要。但如果你是初学者,请不要担心——我们将一步一步地为你详细解释!

应收账款和应付账款:基础知识

应收账款和应付账款

在会计中,“应收账款”和“应付账款”是用于追踪欠款的术语。“应收账款”指他人欠你的钱,而“应付账款”指你欠他人的钱。

让我们举个例子:

  1. 应收账款 (A/R):假设你拥有一家书店,一位顾客赊账购买了一本书。他们欠你购买这本书的钱就是一笔应收账款。

  2. 应付账款 (A/P):另一方面,想象一下你从出版商那里订购了一套新书,但没有预先支付。你欠出版商的钱就是一笔应付账款。

在 Beancount 中,这些通常通过相应的账户进行追踪。这里的主要好处是,它能让你在任何时间点清晰准确地了解自己的财务状况。

在 Beancount 中设置应收账款和应付账款

你的 Beancount 文件结构可以根据你的需要简单或复杂。对于应收账款和应付账款,你可能希望在你的资产 (Assets) 和负债 (Liabilities) 部分下创建单独的账户。

这是一个简单的例子:

1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:AccountsPayable

追踪交易

收款方

设置好账户后,你可以追踪涉及应收账款和应付账款的交易。让我们看一个例子:

2023-05-29 * "Sold books to customer on credit"
Assets:AccountsReceivable 100 USD
Income:BookSales -100 USD

在这里,你将 100 美元添加到你的应收账款中,因为客户欠你这笔钱。同时,你将收入减少相同的金额以保持平衡(因为你尚未实际收到这笔钱)。

当客户最终付款时,你将这样记录:

2023-06-01 * "Received payment from customer"
Assets:Bank:Savings 100 USD
Assets:AccountsReceivable -100 USD

付款方

同样的原则也适用于应付账款,但符号相反:

2023-05-30 * "Bought books from publisher on credit"
Liabilities:AccountsPayable 200 USD
Expenses:BookPurchases -200 USD

当你还清债务时:

2023-06-02 * "Paid off debt to publisher"
Liabilities:AccountsPayable -200 USD
Assets:Bank:Checking 200 USD

总结

应收账款和应付账款是任何会计系统的核心。通过准确追踪这些,你可以全面了解自己的财务状况。

这只是一个起点,Beancount 的功能远不止于此。我希望这篇博客文章能帮助你澄清这些重要概念。一如既往,祝你记账愉快!

解构 Beancount 账本:企业会计案例研究

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

在今天的博客文章中,我们将深入剖析一个专为企业设计的 Beancount 账本,帮助你理解这种纯文本复式记账系统的复杂细节。

解构 Beancount 账本:企业会计案例研究

我们先从代码开始:

2023-05-22-business-template

1970-01-01 open Assets:Bank:Mercury
1970-01-01 open Assets:Crypto

1970-01-01 open Equity:Bank:Chase

1970-01-01 open Income:Stripe
1970-01-01 open Income:Crypto:ETH

1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:COGS:Contabo
1970-01-01 open Expenses:COGS:AmazonWebServices

1970-01-01 open Expenses:BusinessExpenses
1970-01-01 open Expenses:BusinessExpenses:ChatGPT

2023-05-14 * "CONTABO.COM" "Mercury Checking ••1234"
Expenses:COGS:Contabo 17.49 USD
Assets:Bank:Mercury -17.49 USD

2023-05-11 * "Amazon Web Services" "Mercury Checking ••1234"
Expenses:COGS:AmazonWebServices 14490.33 USD
Assets:Bank:Mercury -14490.33 USD

2023-03-01 * "STRIPE" "Mercury Checking ••1234"
Income:Stripe -21230.75 USD
Assets:Bank:Mercury 21230.75 USD

2023-05-18 * "customer_182734" "0x5190E84918FD67706A9DFDb337d5744dF4EE5f3f"
Assets:Crypto -19 ETH {1,856.20 USD}
Income:Crypto:ETH 19 ETH @@ 35267.8 USD

理解代码

  1. 开立账户:代码首先在 1970-01-01 开立了一系列账户。其中包括资产账户(Assets:Bank:MercuryAssets:Crypto)、权益账户(Equity:Bank:Chase)、收入账户(Income:StripeIncome:Crypto:ETH)以及费用账户(Expenses:COGSExpenses:COGS:AmazonWebServicesExpenses:BusinessExpensesExpenses:BusinessExpenses:ChatGPT)。

  2. 交易记录:接着,代码记录了 2023-03-01 至 2023-05-18 期间的一系列交易。

    • 2023-05-14 的交易表示从 Mercury Checking ••1234CONTABO.COM 支付了 17.49 美元。这笔交易被记录为一项费用(Expenses:COGS:Contabo),并相应地从 Assets:Bank:Mercury 账户中扣除。

    • 同样,2023-05-11 的交易表示从同一银行账户向 Amazon Web Services 支付了 14490.33 美元。这笔交易记录在 Expenses:COGS:AmazonWebServices 下。

    • 2023-03-01 的交易显示来自 STRIPE 的收入存入 Mercury Checking ••1234,总计 21230.75 美元。这笔交易被记录为收入(Income:Stripe),并增加到银行账户(Assets:Bank:Mercury)中。

    • 2023-05-18 的最后一笔交易代表一笔涉及客户 19 ETH 的加密货币交易。这笔交易记录在 Assets:CryptoIncome:Crypto:ETH 下。{1,856.20 USD} 显示了交易时 ETH 的价格,而 @@ 35267.8 USD 则指明了这笔 19 ETH 交易的总价值。

在所有交易中,都遵循了复式记账原则,确保 资产 = 负债 + 权益 的等式始终成立。

总结

这个 Beancount 账本提供了一个直接而强大的财务交易追踪系统。正如最后一笔交易所示,Beancount 足够灵活,可以核算加密货币等非传统资产,这证明了它在我们日益数字化的金融环境中的实用性。

我们希望这次剖析能帮助你更好地理解 Beancount 的结构和功能,无论你是经验丰富的会计师还是尝试管理个人财务的初学者。敬请关注我们的下一篇博客文章,届时我们将深入探讨 Beancount 的高级操作。

重新推出新客户免费计划

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

我们很高兴地宣布,自2023年5月1日起,我们将重新推出面向新客户的免费计划。这一决定是在我们对平台进行重大改进并优化资源之后做出的,旨在更好地服务所有客户,无论是免费用户还是付费用户。

推出面向新客户的全新免费计划

免费计划一直是我们愿景的重要组成部分,即为所有人提供可访问且用户友好的服务。我们相信,过去几个月所做的改进将使我们能够为用户提供更好的体验,同时保持对专业版计划客户的服务质量。

2023-04-28-start-serving-free-users

2023年5月1日之后注册的新客户将可以使用免费计划。

**你的支持和忠诚是本次免费计划得以重新推出的重要财务保障。**正是通过你的贡献,我们才得以投资于我们的基础设施和支持系统,确保我们能够继续提供你所期望的高质量服务,同时为新用户扩展我们平台的访问权限。你对我们愿景的承诺帮助我们成长和发展,我们衷心感谢你持续的合作。我们正在共同建设一个蓬勃发展的社区,并赋能各行各业的用户实现他们的目标。

如果你有任何疑问或疑虑,请随时与我们联系。我们随时乐意听取你的反馈并解决你可能遇到的任何问题。感谢你一直以来的支持,我们期待为你提供最优质的服务。

Beancount 速查表

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

账户名称示例

Assets:US:BofA:Checking

cheatsheet-en

账户类型

Assets          +
Liabilities -
Income -
Expenses +
Equity -

商品/货币

CNY, EUR, CAD, AUD
GOOG, AAPL, RBF1005
HOME_MAYST, AIRMILES
HOURS

指令

通用语法

YYYY-MM-DD <Directive> <Parameters...>

开立与关闭账户

2001-05-29 open Expenses:Restaurant
2001-05-29 open Assets:Checking USD,EUR ; 货币限制

2015-04-23 close Assets:Checking

声明商品/货币 (可选)

1998-07-22 commodity AAPL
name: "苹果电脑公司"

价格

2015-04-30 price AAPL   125.15 CNY
2015-05-30 price AAPL 130.28 CNY

备注

2013-03-20 note Assets:Checking "致电询问回扣事宜"

文档

2013-03-20 document Assets:Checking "path/to/statement.pdf"

交易

2015-05-30 * "关于此交易的描述"
Liabilities:CreditCard -101.23 CNY
Expenses:Restaurant 101.23 CNY

2015-05-30 ! "有线电视公司" "电话账单" #tag ˆlink
id: "TW378743437" ; 元数据
Expenses:Home:Phone 87.45 CNY
Assets:Checking ; 你可以省略其中一个金额

分录

  ...    123.45 USD                             简单
... 10 GOOG {502.12 USD} 带单位成本
... 10 GOOG {{5021.20 USD}} 带总成本
... 10 GOOG {502.12 # 9.95 USD} 带两种成本
... 1000.00 USD @ 1.10 CAD 带单位价格
... 10 GOOG {502.12 USD} @ 1.10 CAD 带成本与价格
... 10 GOOG {502.12 USD, 2014-05-12} 带日期
! ... 123.45 USD ... 带标记

余额断言与填充

; 仅断言指定货币的金额:
2015-06-01 balance Liabilities:CreditCard -634.30 CNY

; 自动插入交易以满足以下断言:
2015-06-01pad Assets:Checking Equity:Opening-Balances

事件

2015-06-01 event "location" "美国纽约"
2015-06-30 event "address" "梅街123号"

选项

option "title" "我的个人账本"

其他

pushtag #trip-to-peru
...
poptag #trip-to-peru
; 注释以分号开头

Beancount 纯文本记账的魔力

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

探索 Beancount 纯文本记账的魔力

Beancount.io 横幅

引言

2023-04-18-Beancount 介绍

欢迎来到一个记账不再是艰巨任务的世界。今天,我们向你介绍 Beancount,一个强大、灵活且直观的纯文本记账工具。Beancount 通过提供透明、直接的资金管理方法,让你能够掌控自己的财务。

在这份全面的指南中,我们将深入探讨 Beancount 的基础知识,解释其核心概念,并引导你了解其简单而强大的功能。阅读完这篇博客,你将对 Beancount 有扎实的理解,并准备好开始使用它来整理和分析你的财务生活。

什么是 Beancount?

Beancount 是由 Martin Blais 创建的一个开源纯文本记账系统。受 John Wiegley 的 Ledger 系统启发,Beancount 旨在提供一种强大可靠的方法,使用纯文本文件管理个人和小型企业的财务。通过 Beancount,你可以轻松追踪你的收入、支出、投资等等。

为什么选择 Beancount?

纯文本记账相比传统的基于电子表格或软件的记账系统具有多项优势:

  • 透明度:Beancount 文件是人类可读的,这使得理解和审计你的财务数据变得容易。
  • 灵活性:Beancount 可以轻松定制以满足你的特定需求,你可以使用你喜欢的文本编辑器和版本控制系统来管理你的财务数据。
  • 便携性:你的财务数据可以在任何设备上访问,并且易于在系统之间传输或与他人共享。
  • 面向未来:纯文本文件具有通用兼容性,确保你的财务数据即使随着技术发展也能保持可访问性。

Beancount 的核心概念

要有效使用 Beancount,理解其核心概念至关重要:

  • 交易:财务事件,例如收入、支出或账户之间的转账,都记录为交易。
  • 账户:交易涉及一个或多个账户,例如资产、负债、收入或支出。
  • 复式记账:Beancount 强制执行复式记账,确保每笔交易都有平衡的借方和贷方。
  • 指令:Beancount 使用一组指令来定义交易、账户开立和其他财务事件。

Beancount 入门

要开始使用 Beancount,请遵循以下简单步骤:

  • 安装 Beancount:根据你操作系统的安装说明,在你的系统上安装 Beancount。
  • 创建你的 Beancount 文件:创建一个新的纯文本文件,扩展名为 .beancount(例如,my_finances.beancount)。
  • 定义你的账户:使用 "open" 指令定义你将在交易中使用的账户。
  • 记录交易:使用 "txn" 指令记录你的财务交易。

或者直接在 https://beancount.io 注册。以下是一些纯文本记账示例 -

示例 1:基本交易

2023-04-01 open Assets:Checking
2023-04-01 open Expenses:Groceries

2023-04-10 txn "Grocery Store" "Buying groceries"
Assets:Checking -50.00 USD
Expenses:Groceries 50.00 USD

在此示例中,我们开立了两个账户:Assets:Checking(资产:活期账户)和 Expenses:Groceries(支出:食品杂货)。2023 年 4 月 10 日,我们记录了一笔价值 50 美元的购买食品杂货的交易。该交易使 Assets:Checking 的余额减少 50 美元(借方),并使 Expenses:Groceries 的余额增加 50 美元(贷方)。

示例 2:收入和支出交易

2023-04-01 open Assets:Checking
2023-04-01 open Income:Salary
2023-04-01 open Expenses:Rent

2023-04-05 txn "Employer" "Salary payment"
Assets:Checking 2000.00 USD
Income:Salary -2000.00 USD

2023-04-06 txn "Landlord" "Monthly rent payment"
Assets:Checking -1000.00 USD
Expenses:Rent 1000.00 USD

在此示例中,我们开立了三个账户:Assets:Checking(资产:活期账户)、Income:Salary(收入:工资)和 Expenses:Rent(支出:租金)。2023 年 4 月 5 日,我们记录了一笔 2000 美元的工资支付交易。该交易使 Assets:Checking 的余额增加 2000 美元(贷方),并使 Income:Salary 的余额减少 2000 美元(借方)。2023 年 4 月 6 日,我们记录了一笔 1000 美元的月租支付交易。该交易使 Assets:Checking 的余额减少 1000 美元(借方),并使 Expenses:Rent 的余额增加 1000 美元(贷方)。

示例 3:账户间转账

2023-04-01 open Assets:Checking
2023-04-01 open Assets:Savings

2023-04-15 txn "Bank" "Transfer from Checking to Savings"
Assets:Checking -500.00 USD
Assets:Savings 500.00 USD

在此示例中,我们开立了两个账户:Assets:Checking(资产:活期账户)和 Assets:Savings(资产:储蓄账户)。2023 年 4 月 15 日,我们记录了一笔从活期账户向储蓄账户转账 500 美元的交易。该交易使 Assets:Checking 的余额减少 500 美元(借方),并使 Assets:Savings 的余额增加 500 美元(贷方)。

这些示例说明了 Beancount 复式记账系统的基本概念。通过正确记录交易,用户可以维护其财务活动的准确记录,并生成报告以深入了解其财务状况。

生成报告和分析数据

Beancount 附带了一套强大的工具,用于生成财务报告,包括资产负债表、利润表等。你还可以使用 Fava(一个基于 Web 的 Beancount 用户界面)来可视化和交互你的财务数据。https://beancount.io 是基于 MIT 许可证的 Fava 构建的。

结论

拥抱 Beancount 纯文本记账的强大和简洁。通过理解其核心概念并遵循本指南中概述的步骤,你将能够轻松精确地管理你的个人或小型企业财务。随着你对 Beancount 越来越熟悉,你可以探索高级功能和自定义设置,以根据你的独特需求调整系统。

无论你是想追踪支出、规划未来,还是深入了解你的财务习惯,Beancount 都提供了实现目标所需的灵活性和透明度。凭借其用户友好的方法,Beancount 有潜力彻底改变你管理财务的方式,并赋能你掌控自己的财务未来。

现在你已经对 Beancount 有了坚实的基础,是时候开始你的纯文本记账之旅了。告别繁琐的电子表格和复杂的软件,欢迎来到 Beancount 的世界。祝你记账愉快!

通过自定义链接和查询提升你的 Beancount 体验

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

Beancount,这个深受开发者和财务爱好者喜爱的复式记账系统,以其简洁性而强大。但是,对于那些希望在 Beancount 的网页界面 Fava 中获得更多控制和更快导航的用户来说,自定义侧边栏链接和 SQL 查询可以将你的工作流提升到新的水平。

在本指南中,我们将向你展示如何:

  • 在 Fava 的侧边栏添加快速访问链接
  • 使用 SQL 查询进行高级筛选和分析
  • 为月度审查或异常检测自定义你的工作流

为什么要自定义 Fava?

Fava 已经是查看你的 Beancount 账本的精美界面,但随着你的日记账不断增长,对更好快捷方式和更智能查询的需求也随之增加。

这解决了以下痛点:

  • 重复导航时间范围
  • 跨嵌套账户筛选交易
  • 更快地发现负余额或异常

✨ 自定义侧边栏链接

让我们从使用简单的侧边栏快捷方式改进你的日常工作流开始。这些链接会出现在 Fava 的左侧边栏,可以直接带你进入筛选视图,例如本月交易或上月收入。

将以下行添加到你的 Beancount 文件中:

2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="

它们的作用:

  • 本月: 打开筛选到当前月份的交易视图。
  • 上月: 立即跳转到上个月——非常适合月末审查。
  • 清除所有: 重置筛选器,再次显示所有条目。

这些快捷方式消除了手动输入时间,让你的 Fava 体验更加流畅和个性化。

🔍 自定义 SQL 查询

为了获得更深入的洞察,Fava 的 SQL 界面功能强大得令人难以置信。这是一个查询,用于查找符合特定模式的账户中的所有负余额——非常适合标记异常或有问题的交易。

SELECT account, units(sum(position)), sum(position)
WHERE number(units(position)) < 0
AND account ~ '.*:BCM:.*'
AND date >= DATE(2021,12,9)
AND date < DATE(2022,1,9)

解析:

  • account ~ '.*:BCM:.*':筛选名称中包含 :BCM: 的账户。
  • number(units(position)) < 0:标记负余额(例如,预算超支)。
  • 日期筛选器将结果范围缩小到特定的 1 个月窗口。

用例:

  • 发现重复支出或错误过账等错误
  • 审计特定供应商或类别
  • 快速提取可操作的预算洞察

🛠 专业提示:结合链接 + 查询

虽然 Fava 不允许直接链接到自定义查询,但你可以通过以下方式养成每月审查的习惯:

  • 使用“本月”链接开始你的审查
  • 在另一个窗格中打开你保存的查询选项卡
  • 同时审查两者——先筛选,然后深入挖掘

这种组合有助于你在异常恶化之前发现它们确保你的账本保持整洁

总结

Beancount 的设计理念是极简,但像这些小小的增强功能却能带来巨大的效率提升。无论你是在审查预算、调试异常余额,还是仅仅为了节省点击次数,自定义链接和 SQL 查询都能为你提供更大的能力和更少的阻碍。

额外提示: 如果你正在使用 Fava 的自定义报告,你甚至可以构建完全符合你个人财务习惯的仪表板。

准备好掌控一切了吗?

从小处着手:添加“本月”链接。然后构建你自己的查询。未来的你会感谢你的。

想要更多此类技巧?订阅我们的新闻通讯或在 Beancount.io 探索更多 Beancount 秘籍。