Developer reference
Ledger and account evidence
Explain financial balances according to their starting basis, recorded movements and correction history.
The ledger records actual movements with balanced entries. Semantic context explains why those movements matter. Inquiry read models use both layers.
Balance basis
An account can be supported by a bank document, a user-stated dated balance, or recorded ledger history. Label the supporting basis and its date instead of making every amount appear bank verified.
A stated balance does not claim all prior movements were imported. It establishes a starting point for the dates it supports.
Read a small history
This example is fictional: a user states EGP 2,400 as of 4 October 2026 and records a cleared EGP 150 purchase on 5 October 2026. With no other movement, the expected later figure is EGP 2,250. The result needs both the dated basis and the purchase.
If a bank statement differs, inspect its cutoff date and missing or duplicated movements before changing financial records.
Debt and repayment
Credit-card liability and repayment direction need careful classification. Paying the card should not represent the original purchase as spending for a second time. Likewise, borrowed cash is not earned income.
Corrections retain explanation
Correcting money preserves the original intent and a traceable reason. Reversal and restoration have their own dated semantics. Avoid an ad hoc entry edit that discards the earlier story.
See controlled functions, recording guide and idempotency.