复式记账法

是一种把每笔交易都记录到复数个账户的记账方法。一般有5个桶:

  1. 资产 Assets:现金,银行存款,有价证券等;
  2. 负债 Liabilities:信用卡,房贷,车贷等;
  3. 收入 Income:工资,奖金等;
  4. 费用 Expenses:外出就餐,购物,旅行等;
  5. 权益 Equity:用于存放某个时间段开始前已有的货币。

货币在这五个桶里倒来倒去,出入相抵。这就是会计恒等式。这些桶里剩余的货币数量,则是生成损益表和资产负债表的重要依据。

例子

  • 收入-》资产:路上捡到100块。 – 收入桶倒出100块,资产桶增加100块;
  • 负债-》资产:看中一件衣服,找人借了200块。 – 负债桶倒出200块,资产通增加200块。
  • 资产-》费用:用300块买了衣服。 – 资产桶倒出300块,费用桶增加300块。
  • 费用-》资产:衣服不合适退回250块。 – 费用桶倒出250块,资产通增加250块。

要点:

  • 收入(Income)通常是负数。意味着装着你一生(过去和未来)所有劳动成功的桶。每次收入都是从桶里取东西。
  • 费用(Expenses)通常是正数。意味着装着你一生所有消费的桶。每次支出都是往桶里放东西。
  • 负债()大多数情况下是正数,在还清时应该是0。
  • 资产总是非负数。
  • 权益可以看做是资产净值。

遵循的公式:(收入 + 负债) + (资产 + 费用) + 权益 = 0

使用beancount 记账

安装beancount:pip3 install beancount

安装fava:pip3 install fava


使用 bean查看:bean-web main.bean

使用fava查看:fava main.bean

交易格式

时间 是否核实 交易方 描述 #标签 ^链接

断言(assertion)

标记在某个日期,某个账号 里有多少钱。

例子:2016-02-01 balance Assets:Cash 500.00 CNY

添加了断言之后,beancount就会检查那个账号的数字是否与断言的数字相等,如果不相等就会报错。

填充(padding)

配合断言一起使用。当 beancount 解析到填充语句时,会自动在这条语句和下一条断言语句之间插入一条填充记录,使得断言成功。好处在于无需计算两个数字的差额。

例子:

2015-11-30 pad Assets:Cash Expenses:Food:Drinks
2015-12-01 balance Assets:Cash 200.00 CNY

用途:

  • 忘记记账,使用自动填充配平。
  • 开户时设定初始余额。

工资入账例子:

2016-01-31 * "工资 2016-01"
  Income:SomeCompany:Salary                -20000.00 CNY ; 应发工资
  Income:SomeCompany:Reimbursement          -1000.00 CNY ; 餐补
  Income:SomeCompany:Reimbursement           +100.00 CNY ; 餐补扣除
  Expenses:Government:Pension               +1500.00 CNY ; 养老保险
  Expenses:Government:Unemployment           +100.00 CNY ; 失业保险
  Expenses:Government:MedicalCare            +500.00 CNY ; 医疗保险
  Expenses:Government:HousingFund           +3000.00 CNY ; 住房公积金
  Expenses:Government:IncomeTax             +3000.00 CNY ; 个人所得税
  Assets:CMB:C1234                         +12800.00 CNY ; 实发工资

Reference:

Beancount —— 命令行复式簿记

beancount 起步

0. 复式记账基础与 BEANCOUNT

使用 Beancount 记录证券投资