Designing a ledger: balances should be derived from transactions
A balance column tells you a number. A ledger tells you why. How to make recorded transactions the single source of truth for a wallet, with runnable EF Core code.
A balance column tells you a number. A ledger tells you why. How to make recorded transactions the single source of truth for a wallet, with runnable EF Core code.
Every night, compare what your ledger says happened with what the payment gateway says happened. A small, testable reconciler plus a BackgroundService turns days of manual checks into one log line.