A double-entry ledger
Every movement of money is two entries, not one
So far a Payout row says "$40 went to walker #7" β but says nothing about WHERE that $40 came from. A double-entry ledger fixes that by recording money movement as pairs: every entry that takes money OUT of one account (a debit) is matched by an entry that puts it INTO another account (a credit), and the two always sum to zero.
Paying out a walker for a completed booking is really two entries: -4000 cents on PawWalk's own operating account (money leaving the platform), and +4000 cents on that walker's account (money arriving). Add them together and you get 0 β money didn't appear or disappear, it moved.
Why bother, when a single "balance" number would be simpler? Auditability. With a ledger, a walker's balance isn't a number you trust and hope stays correct β it's the SUM of every entry ever posted to their account. You can always reconstruct it from scratch, prove it to an auditor, and spot exactly which entry caused a discrepancy. A mutable balance_cents column, by contrast, can drift from reality after one missed update, and there's no history left to find out why.