Money is a promise, and promises need a ledger
A balance in an app isn’t cash sitting in a box. It’s a promise: a claim that some amount belongs to someone and can be moved or withdrawn. The only thing making that promise real is the record behind it. Lose the record, or let it drift, and the money effectively doesn’t exist — or worse, exists twice. That’s why every financial product, underneath the UI, is a record-keeping problem first. The interesting parts — transfers, fees, settlement, statements — all sit on top of one question that has to be answered correctly every single time: who owns what, right now? Accounting is simply the discipline that has been answering that question reliably for centuries.
Why double-entry is a system requirement, not a convention
Imagine a customer moves $50 from one wallet to another. If the first wallet goes down by $50 and the second goes up by $50, matching recorded totals let the system check its internal record of that transfer. If only one side gets recorded, the mismatch is a signal to investigate rather than proof that the business event was correct. That’s why double-entry exists. It gives a transaction a checkable constraint: the recorded sides must match. Encode that as a rule and you get an important consistency control:
- A movement records its participating accounts. The record identifies the accounts affected by the transaction.
- The recorded sides must equal. Matching totals make the entry arithmetically checkable.
- A mismatch surfaces immediately. If the recorded sides do not match, the transaction can be rejected before the inconsistency compounds.
Balance is a consistency control
Here’s the part worth internalizing as a builder. Balanced records make one part of a transaction continuously testable: the recorded amounts agree. Matching debits and credits detects a recorded amount mismatch. Assets = Liabilities + Equity is a statement-level accounting equation, not a runtime assertion Midaz applies after each operation. Records can balance while an account is wrong, a transaction is unauthorized, a value is misclassified, or another required record is missing. Financial systems still rely on this control. Recording both sides gives balance a useful tripwire: when it breaks, the recorded amounts are inconsistent and the system must investigate before proceeding. Put end to end, that’s the chain in one line — balanced records keep the amounts behind a balance consistent; reconciliation and separate controls are still needed to trust it fully:
Financial systems are accounting systems wearing different clothes
Strip a core banking platform down to its foundation and you find a ledger. Strip the ledger down and you find double-entry accounting, enforced by code instead of by a clerk with a pen. The product vocabulary changes — accounts, transactions, operations, balances — but the bones are the same accounting ideas, now running at scale and in real time. That’s why this matters for what you build:
- The data model is accounting. Accounts, entries, and balances aren’t an implementation detail bolted onto a payments app — they are the app’s source of truth.
- The safety properties use accounting controls. A balanced posting detects mismatched recorded amounts; authorization, classification, and completeness require additional controls.
- The hard problems are accounting at scale. Handling many transfers at once, keeping every copy of the data in agreement, and proving what happened long after the fact all come down to keeping that balanced record correct across millions of movements.
See it in the productThese ideas have direct counterparts in Lerian and Midaz — accounts, transactions, operations, and balanced movements. See how they map in Accounting in Lerian, or step into the Core banking fundamentals.
In short
- The moment software holds money, it inherits accounting’s rules — a balance is a promise, and the record behind it is what makes that promise real.
- Double-entry is a consistency control: every recorded transaction has participating accounts and matching recorded sides.
- Balance is not a complete correctness guarantee. It detects amount mismatches; authorization, classification, and completeness need separate controls.
- Strip any serious financial system down and you find an accounting system at its core, now enforced by code instead of by hand.
Next upTime to meet the equation everything rests on. Start with Assets, liabilities & equity.

