We got tired of
watching good businesses
reconcile by hand.
Taking money on M-Pesa is a solved problem for about a week. Then the questions start, and they are all the same question wearing different clothes: which record do I believe?
Safaricom says 412 payments. The database says 409. Nobody has written down which three, or when, and the statement goes out at nine. That afternoon, repeated monthly, in a spreadsheet, is the problem this exists to remove, and it is a bookkeeping problem rather than a payments one. Which is why the ledger was built before the API rather than after it.