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