跳转到主要内容

Beancount 教程:安装与首个账本

安装 Beancount,创建你的第一个账本文件,设置账户和选项,然后进行验证——一个首次成功操作的指南。

准备好掌控你的财务了吗?本指南将帮助你在几分钟内开始使用 Beancount。你将学习如何创建第一个账本、设置基本账户,以及记录第一笔交易。

beancount.io 日志视图,展示纯文本复式记账交易及指令类型筛选器

探索实时账本 →

初始设置​

创建你的第一个账本​

; Basic structure for a new ledger
2024-01-01 open Assets:Checking
2024-01-01 open Equity:Opening-Balances
 
2024-01-02 * "Initial Deposit"
  Assets:Checking           100.00 USD
  Equity:Opening-Balances

基本配置​

option "title" "Personal Finance Ledger"
option "operating_currency" "USD"

文件组织​

推荐结构​

; 1. Configuration Options
option "title" "Personal Ledger"
option "operating_currency" "USD"
 
; 2. Account Declarations
2024-01-01 open Assets:Checking    USD
2024-01-01 open Assets:Savings     USD
2024-01-01 open Expenses:Food      USD
2024-01-01 open Equity:Opening-Balances
 
; 3. Initial Balances
; Pad fills the gap up to Equity:Opening-Balances, so it must be dated
; before the assertion. Balance assertions are checked at the start of
; their day, so assert the next morning.
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-02 balance Assets:Checking 1000.00 USD
 
; 4. Transactions
2024-01-15 * "Grocery Store" "Weekly groceries"
  Expenses:Food            50.00 USD
  Assets:Checking

分区组织​

  1. 永久账户

    2024-01-01 open Liabilities:Payables    USD
    2024-01-01 open Assets:Receivables      USD
  2. 银行账户

    2024-01-01 open Assets:Bank:Checking     USD
    2024-01-01 open Assets:Bank:Savings      USD
    2024-01-01 open Income:Bank:Interest     USD
  3. 投资账户

    2024-01-01 open Assets:Investment:Cash    USD
    2024-01-01 open Assets:Investment:Stocks  VTSAX
    2024-01-01 open Income:Investment:Dividend USD

验证与报告​

基本验证​

# Check for errors (exits 0 when clean)
bea --file ledger.beancount check
 
# Browse balances, reports, and charts in the web interface
fava ledger.beancount

bea check 是验证器:当账本无误时它以 0 退出,否则列出所有错误并以非零状态退出。通过 CLI 快速入门 安装它。Fava 是网页界面——运行它并打开打印的 http://localhost:5000 地址即可查看资产负债表、损益表和账户日志。

常用报告​

Beancount 3 通过 Fava 的网页界面、一条命令的 bea report,或使用 bea query(运行 Beancount 查询语言)进行即席查询来生成报告。Beancount 3 移除了旧版的报告和网页命令;bea report 和 Fava 取代了它们。

# Balance sheet, in one command
bea --file ledger.beancount report balance-sheet
 
# Income statement, in one command
bea --file ledger.beancount report income-statement
 
# Balance-sheet numbers: balances by asset, liability, and equity account
bea --file ledger.beancount query "SELECT account, sum(position) AS balance WHERE account ~ '^(Assets|Liabilities|Equity)' GROUP BY account ORDER BY account"
 
# Income-statement numbers: totals by income and expense account
bea --file ledger.beancount query "SELECT account, sum(position) AS total WHERE account ~ '^(Income|Expenses)' GROUP BY account ORDER BY account"
 
# One account's journal, with a running balance
bea --file ledger.beancount query "SELECT date, narration, position, balance WHERE account = 'Assets:Checking'"

管理初始余额​

Padding 示例​

2024-01-01 open Assets:Checking    USD
2024-01-01 open Equity:Opening-Balances
 
; Pad account to match a known balance
2024-01-01 pad Assets:Checking Equity:Opening-Balances
 
; Assert the known balance the next day: assertions are evaluated at the
; start of their date, and the pad transaction must fall before it
2024-01-02 balance Assets:Checking 1525.00 USD

balance 断言会在其日期的开始检查账户,因此它必须晚于应包含的 pad(或任何交易)日期。如果 pad 和 balance 日期相同,则 pad 不会被使用,断言也会不足——Beancount 会报告 Unused Pad entry 和 Balance failed。Equity:Opening-Balances 账户必须先开设,然后才能对其进行 padding。

账户关闭​

2024-01-01 open Assets:OldBank:Checking   USD
2024-06-30 close Assets:OldBank:Checking  ; Account closed

交易去重​

处理转账​

; Credit card payment - combined view
2024-01-15 * "Credit Card Payment"
  Assets:Checking            -500.00 USD
  Liabilities:CreditCard     500.00 USD
 
; Flag for pending match
2024-01-15 * "Pending CC Payment"
  ! Assets:Checking         -500.00 USD
  Liabilities:CreditCard    500.00 USD

余额断言​

; Regular balance checks prevent duplicates
2024-01-31 balance Assets:Checking    2150.25 USD
2024-01-31 balance Liabilities:CreditCard  -350.00 USD

最佳实践​

  1. 文件组织

    • 最初保持一个主文件
    • 使用清晰的分节标题
    • 将相关账户分组在一起
  2. 账户名称

    • 使用一致的命名规则
    • 包含国家/机构前缀
    • 保持逻辑层级
  3. 余额验证

    • 定期进行余额断言
    • 适当使用 pad 账户
    • 跟踪账户关闭
  4. 货币处理

    • 声明记账货币
    • 使用一致的商品代码
    • 指定货币约束

后续步骤​

现在你已经设置好一个基本的账本:

  1. 记录常规交易:从你的日常支出和收入开始
  2. 设置银行账户导入:使用 CSV 导入或银行连接来自动化数据录入。将语句导出粘贴到 CSV 转 Beancount 转换器 中,在浏览器中获取平衡条目,或使用 OFX 与 QIF 转 Beancount 处理 .ofx、.qfx 和 .qif 下载。
  3. 复制经过验证的布局:下载适用于 家庭、信封预算 或 自由职业 的可运行启动文件;这些文件都收录在 正在使用的账本示例 中。然后参考同一图库中的房产和投资模式调整账本。
  4. 学习高级语法:探索 语法参考 以处理更复杂的场景
  5. 生成你的第一批报告:使用 UI 功能创建财务报告并分析你的支出
  6. 在终端中工作:通过 CLI 快速入门 安装 bea 命令行工具,然后在 与 bea 的第一个月 中完整地关闭一个月的账目

快速参考​

常见账户类型:

  • Assets:Bank:Checking - 你的支票账户
  • Expenses:Food:Groceries - 杂货支出
  • Income:Salary:Company - 就业收入
  • Liabilities:CreditCard:Visa - 信用卡债务

基本命令:

  • bea --file ledger.beancount check - 验证你的账本(出错时以非零状态退出)
  • bea --file ledger.beancount report balance-sheet - 打印资产负债表
  • bea --file ledger.beancount query "SELECT ..." - 查询余额和交易
  • fava ledger.beancount - 启动网页界面以查看报告和图表

这些指南为使用 Beancount 管理个人财务奠定了坚实的基础。准备好添加你的第一笔交易了吗?查看我们的 UI 交易指南。

来源:https://beancount.io/zh/docs/Basics/getting-started