Ledgers, reconciliation, and settlement risk
Make balances explainable and prevent money from appearing twice.
The bank says $9,970. The processor says $10,000. The app says everyone has been paid. No one is lying; the $30 fee is missing from one view. A ledger is the part of a fintech that must be less imaginative than its marketing.
Record balanced obligations
Double-entry accounting records each event with equal total debits and credits. It helps expose incomplete entries, but a balanced journal can still be wrong. Two incorrect accounts can balance perfectly. Use account definitions, posting rules, and event references alongside the arithmetic.
For a simplified incoming $100 customer balance, debit cash and credit a customer liability. The firm holds an asset and owes the customer. This is not automatically revenue. Keep a chart of accounts that distinguishes customer funds, fees, receivables, reserves, and settlement clearing. Accounting treatment in a real product requires the relevant professional policy.
A simplified platform ledger might record an increase in cash at a settlement bank and an equal increase in the amount owed to merchants. The entry balances, but that fact alone does not prove that the bank actually received the money. A balanced ledger can faithfully record a wrong assumption. Independent settlement and bank records supply the external evidence needed to test the assumption.
The choice of accounts also communicates the business model. Customer obligations, merchant obligations, fees, reserves, and amounts awaiting investigation should have clear meanings. Do not use a suspense account as a permanent home for unexplained differences. Assign an owner, an age, a reason, and a resolution path to each unresolved item. The longer an item stays unexplained, the less useful a single aggregate cash total becomes.
- EventIdentify the economic change
- PostUse defined debit and credit accounts
- CheckBalance and validate account meaning
- Cash asset
- Money held by the firm
- Customer liability
- Money the firm owes a customer
Illustrative journal
Illustrative data; not a real customer record or a prescribed policy.
- Debit cash100 USD
Asset increase
- Credit customer liability100 USD
Obligation increase
- Revenue0 USD
Deposit is not a fee
Holding money differs from earning it
It can create an equal customer liability. Holding money differs from earning it.
- Failure mode 1avoid
- Every cash receipt is profit. Cash and income are different concepts.
- Failure mode 2avoid
- Balanced journals prohibit liabilities. They can record both assets and liabilities.
- Failure mode 3avoid
- The payment reference decides revenue. Accounting meaning requires a posting rule.
Make retries financially idempotent
Idempotency means repeating a logical operation does not repeat its intended effect. Bind the key to a defined operation and payload. A retry of the same payment should reuse the key; a genuinely new payment needs a new one. Reject conflicting reuse rather than silently changing the amount.
Provider idempotency is one boundary, not the whole system. Use unique journal-event constraints and transactional posting in your own database. A webhook can arrive twice, or a worker can crash after posting but before acknowledgment. The database must make duplicate money creation impossible within the defined operation, even when delivery is at least once.
Idempotency requires agreement about the boundary of one intended action. Reusing the same key for the same refund should return the existing result. Reusing it for a different amount should produce a controlled conflict under the chosen contract. Database uniqueness, stored request fingerprints, and transactional writes can help enforce that boundary. The protection must survive concurrent requests and process restarts. An in-memory list of recently seen keys disappears at exactly the moment a recovering service may receive a wave of retries.
- IdentifyStable logical operation key
- CommitPost once under a unique constraint
- RetryReturn the prior operation result
- Duplicate delivery
- Same event arrives again
- New obligation
- Different business event needs a new entry
Retry specimen
Illustrative data; not a real customer record or a prescribed policy.
- Operationpay-71
Stable payment identity
- Attempt3
Transport count only
- Journal entries1 set
One financial effect
Transport retries must not create new value
A unique event constraint at the journal boundary. Transport retries must not create new value.
- Failure mode 1avoid
- A dashboard warning tomorrow. That detects damage after posting.
- Failure mode 2avoid
- A random new payment identifier. It hides the duplicate.
- Failure mode 3avoid
- Only a client-side button lock. Workers can retry without the client.
Reconcile independent records
Reconciliation compares records that describe the same obligations from different systems. Match transaction-level references first, then check aggregate totals. Equal totals can hide two offsetting errors. A missing $100 credit and an extra $100 credit can cancel in a summary.
Classify breaks as timing, fee, currency, duplicate, missing, or unexplained. Assign an owner and aging limit. Do not force-match a break merely to make a report green. Store the matching rule and supporting records so the resolution can be reproduced. Automated matching is valuable when its exceptions remain visible.
- MatchConnect independent references
- ExplainClassify differences
- ResolvePost or correct with evidence
- Total equality
- Aggregate amounts agree
- Item agreement
- Individual obligations also match
Settlement comparison
Illustrative data; not a real customer record or a prescribed policy.
- Processor gross10000 USD
Sales before fee
- Fee30 USD
Explicit deduction
- Bank receipt9970 USD
Gross less fee
The difference reconciles to an identified item
The documented $30 fee. The difference reconciles to an identified item.
- Failure mode 1avoid
- Automatic fraud. The facts support a fee explanation.
- Failure mode 2avoid
- A $30 customer refund. No refund evidence was supplied.
- Failure mode 3avoid
- An exchange gain. No currency conversion was stated.
Distinguish liquidity from solvency
A solvent firm can still lack cash at the moment a payout is due. Assets may be illiquid or arrive after the obligation. A liquidity view therefore needs timing, eligible funding sources, currencies, and stress assumptions. A single end-of-day balance can hide an intraday shortfall.
Build a cash ladder: opening usable funds, expected inflows, committed outflows, and buffer. Separate certain inflows from optimistic forecasts. If a settlement partner delays funding, determine which obligations can still be met and which require an approved contingency. Customer funds and restricted reserves are not a general-purpose emergency wallet.
- ForecastTime-specific available funds
- StressDelay uncertain inflows
- RespondUse approved funding sources
- Solvency
- Assets relative to obligations
- Liquidity
- Usable funds at the required time
Illustrative cash ladder
Illustrative data; not a real customer record or a prescribed policy.
- Available now80000 USD
Eligible cash
- Due now100000 USD
Committed payouts
- Arrives tomorrow50000 USD
Cannot fund today automatically
Today requires $100,000 against $80,000 available
$20,000. Today requires $100,000 against $80,000 available.
- Failure mode 1avoid
- Zero because tomorrow brings cash. Tomorrow does not meet today without funding.
- Failure mode 2avoid
- $50,000. That is the later inflow.
- Failure mode 3avoid
- $180,000. Adding cash and obligations does not measure a gap.
Reverse with a trace
Correct mistakes with linked entries and a reason. Deleting a journal record removes the explanation of what the system believed and when. A reversal should reference the original entry and preserve approval evidence. Recompute downstream balances from the corrected history.
Use permissions that separate preparation from approval for high-impact adjustments. Monitor manual adjustments by count, value, account, and operator. A pattern of tiny adjustments may indicate a rounding defect; a few large adjustments may indicate a mapping error or misuse. The goal is an explainable trail, not a journal that appears never to have made a mistake.
- DetectIdentify the incorrect posting
- ReverseLink an authorized correction
- VerifyReconcile the corrected balances
- Deletion
- Erases the historical explanation
- Linked reversal
- Preserves the event and its correction
Correction specimen
Illustrative data; not a real customer record or a prescribed policy.
- Originaljournal-18
Wrong clearing account
- Reversaljournal-24
Offsets journal-18
- Replacementjournal-25
Uses approved account mapping
The history remains explainable
A linked reversal and correct replacement. The history remains explainable.
- Failure mode 1avoid
- Delete it without a record. That destroys the audit trail.
- Failure mode 2avoid
- Change all customer balances manually. That bypasses event meaning.
- Failure mode 3avoid
- Hide it from reconciliation. The obligation still needs resolution.
Chapter connections
This chapter builds on Instant payments and cross-border transfers. Use the glossary for terminology and risk mathematics for formulas and worked calculations.