System design interview questionHardFintech
Design a Payment System
Design a payment system: charge customers reliably, keep accurate ledgers, and handle async side effects (receipts, webhooks) without double-charging chaos.
Interview scope
Client → Gateway/LB → App → DB (ledger) + Cache (idempotency) + Message Queue (receipts/webhooks). No Client → DB. Cache is not the money source of truth.
Functional requirements
- Create a payment / charge attempt.
- Record success/failure durably.
- Trigger async notifications/settlement tasks.
Scale and quality goals
- Correctness over clever caching of balances on the hot write path.
- Idempotent APIs matter (high level).
- Side effects (email/webhook) should be async via queue.
Capacity assumption
Design for this scale
Assume ~10M payments/day (~116 RPS average); peaks during big sales. Durability beats micro-optimizations.
Practice more than a diagram
Place components on the Froquiz canvas, connect the data flow, and see which decisions the scenario-specific review finds missing. The full exercise and review unlock with Premium.
Explore Premium →