Markdown.
Every payment orchestration platform looks the same in a slide deck: a single API in front, a router in the middle, fifty providers on the other side, and a clean failover story. In production, at real volume, almost none of that survives contact with reality.
Reconciliation is the real product
The routing logic is the easy 20%. The other 80% is proving, every single day, that the money that left a customer's account is the same money that landed in the merchant's settlement — across providers with different retry semantics, different webhook guarantees, and different definitions of "final."
What we'd do differently
- Treat every provider webhook as untrusted until reconciled against a pull-based statement.
- Idempotency keys are not optional, they are the whole architecture.
- Alert on drift, not on failure — failures are visible, drift is not.