Write payments code as if every request happens twice
Five things payment code needs from the first commit: an idempotency key scoped to an intent, integer minor units, an append-only ledger, a replay-safe webhook handler and a nightly reconciliation against the provider.
- Payments
- Reliability