最近在做一些支付相关的需求,学习复式记账的过程很痛苦,在此记录一下。
从流水账到复式记账
最简单的记账方式是流水账(单式记账):一条记录写清楚时间、金额、用途,就够了。个人记账 App 基本都是这个模式——“3月1日,午饭,-35元”。
流水账的问题在于它只记录了一个维度。钱花了 35 元,但这 35 元从哪个账户出的?是现金、借记卡、还是信用卡?如果同时持有多个账户,流水账无法自动核对余额是否对得上。
复式记账解决这个问题的方式很直接:每笔交易至少记两条,一条说明钱从哪来,一条说明钱到哪去。两边金额必须相等——不等就说明记错了。这就是"有借必有贷,借贷必相等"。
基本概念
复式记账的前提很简单:任何一笔经济业务,至少影响两个账户。“有借必有贷,借贷必相等”——这条规则同时也构成了内在的自校验机制(Trial Balance)。
这里的"借 (Debit)“和"贷 (Credit)“不是日常用语中的意思,它们仅仅是账户的左侧和右侧,本身没有增减含义。增还是减,取决于账户的性质。
所有记账行为最终维护的是这个等式:
资产 (Assets) = 负债 (Liabilities) + 所有者权益 (Equity)
引入收入和费用后,五大类账户的借贷规则如下:
| 账户类别 | 借方 (Dr.) | 贷方 (Cr.) |
|---|---|---|
| 资产 (Assets) | 增加 | 减少 |
| 费用 (Expenses) | 增加 | 减少 |
| 负债 (Liabilities) | 减少 | 增加 |
| 权益 (Equity) | 减少 | 增加 |
| 收入 (Revenue) | 减少 | 增加 |
换一种方式理解:贷方记录钱从哪来,借方记录钱到哪去。 负债增加、权益增加、收入增加——都是资金的来源,所以记贷方;资产增加、费用增加——都是资金的去向,所以记借方。
再直观一点:
- Debit(借方) — 得到某种资源、消耗某种价值、或减少了某项义务。
- Credit(贷方) — 付出某种资源、承担某种义务、或获得某种收入。当资产增加但没有外部资金流入时(比如股票升值),贷方记录的是这笔增加的"来源”——内在价值的增长,从而增加了净财富。
关于 Debit Card 和 Credit Card 的命名
Debit Card(借记卡) 站在银行的视角,用户的存款对银行来说是一笔负债(银行欠用户的钱)。当用户消费,银行从存款中扣款,对应这笔负债减少——负债减少记借方,即 Debit 操作。所以叫 Debit Card。
Credit Card(信用卡) 站在银行的角度,用户消费时银行替用户垫付,形成一笔资产(应收账款——用户欠银行的钱)。当用户消费,银行增加用户负债的数额。消费操作本身依然是一个 Debit 操作,信用卡的命名更多来自于”信用”授予的概念。
| 场景 | 银行视角 | 用户视角 |
|---|---|---|
| 借记卡消费 | Debit:负债减少 | Credit:资产减少 |
| 信用卡消费 | Debit:资产增加(应收款) | Credit:负债增加(欠款) |
T 型账户与记账流程
为什么叫 T
每个账户可以画成一个 T 字形,左边是借方 (Debit),右边是贷方 (Credit),顶部写账户名。所有的增减变动都记在对应的一侧。比如"银行存款"这个资产账户,在前面三笔基础分录后长这样:
银行存款 (Cash in Bank)
───────────────┬───────────────
Dr. (借方/增加) │ Cr. (贷方/减少)
│
股东注资 100,000 │ 支付租金 5,000
银行贷款 50,000 │
│
合计 150,000 │ 合计 5,000
───────────────┴───────────────
余额:145,000 (借方)
资产类账户的正常余额在借方(左边大于右边),负债和权益类则相反。T 型账户就是这个名字的来源——形状像字母 T。
日记账 (Journal) 与分类账 (Ledger)
实际的记账流程分两步:
- 日记账 (Journal):按时间顺序记录每一笔分录,类似交易流水。前面写的那些
DEBIT / CREDIT分录就是日记账的格式。 - 分类账 (Ledger):按账户归类汇总。把日记账中的每一条,过账 (Post) 到对应的 T 型账户中去。
类比到支付系统:日记账相当于交易流水表(每笔交易一条记录),分类账相当于账户余额表(每个账户的当前状态)。先有流水,再更新余额——顺序不能反。
一些栗子
场景 1:银行视角 — 信用卡+现金混合支付
小王使用信用卡 ¥500 和现金 ¥500 支付给商家 B 的借记卡,银行收取 ¥1 手续费。
站在银行的账本上,这笔交易拆解为四个动作:
- 小王刷信用卡 ¥500 → 银行替小王垫付,小王欠银行 ¥500(资产:应收账款增加)
- 小王交现金 ¥500 → 银行收到现金(资产:库存现金增加)
- 商家 B 的借记卡入账 ¥999 → 银行对 B 的存款债务增加(负债:客户存款增加)
- 银行收取 ¥1 手续费(收入增加)
DEBIT: Assets — Credit Card Receivable / 小王 (应收信用卡款-小王) ¥500
DEBIT: Assets — Cash on Hand (库存现金) ¥500
CREDIT: Liabilities — Customer Deposit / Merchant B (客户存款-商家B) ¥999
CREDIT: Revenue — Transaction Fee Income (手续费收入) ¥1
借方 ¥500 + ¥500 = 贷方 ¥999 + ¥1 = ¥1,000
场景 2:个人记账 — 借记卡买可乐
小王决定使用高端的复式记账进行个人记账。他用借记卡支付 ¥5 购买了一瓶可乐。
- 花了 ¥5 买可乐(费用增加)
- 借记卡余额减少 ¥5(资产减少)
DEBIT: Expenses — Food & Beverage (餐饮费用) ¥5
CREDIT: Assets — Debit Card / Checking (借记卡/活期存款) ¥5
场景 3:个人投资 — 购买股票并升值
小王用借记卡购买了 ¥2,000 的一股谷歌股票,随后在梦里升值到了 ¥3,000。
这个场景需要两笔分录。
购买时: 资产形态转换——现金变成了股票。
- 获得价值 ¥2,000 的股票(资产:投资增加)
- 借记卡余额减少 ¥2,000(资产:银行存款减少)
DEBIT: Assets — Investment / GOOGL (投资-谷歌股票) ¥2,000
CREDIT: Assets — Debit Card / Checking (借记卡/活期存款) ¥2,000
期末重估 (Mark-to-Market): 股票升值 ¥1,000,产生未实现收益。
- 投资账面价值上升 ¥1,000(资产增加)
- 产生未实现投资收益 ¥1,000(收入增加)
DEBIT: Assets — Investment / GOOGL (投资-谷歌股票) ¥1,000
CREDIT: Revenue — Unrealized Gain on Investment (未实现投资收益) ¥1,000
此时收益尚未实现——股票没有卖出,只是账面浮盈。真正卖出时,需要将未实现收益转为已实现收益,并记录资金回流到银行账户。
场景 4:个人还贷 — 现金+借记卡还房贷
小王用 ¥5,000 现金和 ¥5,000 借记卡还房贷,其中 ¥9,000 偿还本金,¥1,000 支付利息。
银行账本:
- 小王交现金 ¥5,000 → 银行收到现金(资产:库存现金增加)
- 小王借记卡扣款 ¥5,000 → 银行对小王的存款债务减少(负债:客户存款减少)
- 房贷本金回收 ¥9,000 → 银行的贷款资产减少(资产:贷款应收减少)
- 银行收取利息 ¥1,000(收入增加)
DEBIT: Assets — Cash on Hand (库存现金) ¥5,000
DEBIT: Liabilities — Customer Deposit / 小王 (客户存款-小王) ¥5,000
CREDIT: Assets — Mortgage Loan Receivable / 小王 (房贷应收款-小王) ¥9,000
CREDIT: Revenue — Interest Income (利息收入) ¥1,000
借方 ¥5,000 + ¥5,000 = 贷方 ¥9,000 + ¥1,000 = ¥10,000 ✓
小王账本:
- 房贷本金减少 ¥9,000(负债减少)
- 支付利息 ¥1,000(费用增加)
- 现金减少 ¥5,000(资产减少)
- 借记卡余额减少 ¥5,000(资产减少)
DEBIT: Liabilities — Mortgage Loan (房贷本金) ¥9,000
DEBIT: Expenses — Mortgage Interest (房贷利息) ¥1,000
CREDIT: Assets — Cash on Hand (现金) ¥5,000
CREDIT: Assets — Debit Card / Checking (借记卡/活期存款) ¥5,000
借方 ¥9,000 + ¥1,000 = 贷方 ¥5,000 + ¥5,000 = ¥10,000 ✓
参考阅读
- 适合普通人的记账方法:复式记账 — 少数派上一篇面向个人记账场景的复式记账入门