Design Fiat On-Ramp

Hard45 min
1 / 30
understanding8 min read

Problem Statement: Fiat-to-Crypto On-Ramp

Problem Statement: Fiat-to-Crypto On-Ramp — fiat on-ramp interview depth

On-ramp angle (sec-01)

MoonPay/Ramp-class fiat-to-crypto on-ramp where regulated fiat capture, KYC, and treasury fulfillment must complete before users see coins in a wallet. Section 1 covers problem in the understanding phase.

Problem Statement: Fiat-to-Crypto On-Ramp

Mechanism (problem)

  • user pays fiat via card/ACH
  • platform quotes crypto amount with spread
  • KYC gate before first purchase
  • custodial delivery to wallet or hosted balance

Quantified anchors (sec-01)

  • 8M MAU, 400k DAU, 220 purchases/sec peak after volatility spikes
  • Quote freshness <800ms p95; ETH delivery <3m p95 once fiat captured
  • Fraud loss budget <15 bps; chargeback reserve 0.8% of card volume
  • Hot treasury refill when per-chain balance <$500k equivalent

Failure drills

  • Drill 1A: PSP auth succeeds but chain broadcast fails—freeze duplicate sends, auto-refund fiat, emit purchase.failed.
  • Drill 1B: sanctions hit after capture—hold delivery, escalate case, never burn user goodwill with silent failure.
  • Drill 1C: FX feed stale >30s—halt quotes, show maintenance banner, drain backlog safely.

Staff+ extensions

  • Reference MoonPay widget, Ramp open banking, Wyre API lessons (partner reliance risk)
  • Mention Travel Rule payload when purchase >$1,000
  • Offer non-custodial delivery only if interviewer explicitly wants wallet-connect addressing

Design narrative

Depth 1.1 (problem): platform quotes crypto amount with spread must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success. Depth 1.2 (problem): KYC gate before first purchase must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success. Depth 1.3 (problem): custodial delivery to wallet or hosted balance must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success. Depth 1.4 (problem): user pays fiat via card/ACH must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success. Depth 1.5 (problem): platform quotes crypto amount with spread must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success. Depth 1.6 (problem): KYC gate before first purchase must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success. Depth 1.7 (problem): custodial delivery to wallet or hosted balance must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success. Depth 1.8 (problem): user pays fiat via card/ACH must align with idempotent purchase orchestration, PSP settlement windows, and chain finality before webhooks claim success.

Interview checkpoint (sec-01-understanding)

  • Lead with user pays fiat via card/ACH and cite order state transitions.
  • Explain CAP: CP purchase row in Postgres, AP chain index repairable via receipt poller.
  • Tie Problem Statement: Fiat-to-Crypto On-Ramp to measurable conversion, compliance SLA, and treasury reconciliation—not generic blockchain scale talk.
javaOne Dark Pro
1public final class OnRampSec1 {
2 public static final String TOPIC = "problem";
3 public static boolean canDeliver(String status) {
4 return "FIAT_CAPTURED".equals(status) || "KYC_PASSED".equals(status);
5 }
6}
pythonOne Dark Pro
1TOPIC_1 = "problem"
2PEAK_PURCHASES_PER_SEC = 220
3QUOTE_P95_MS = 800
typescriptOne Dark Pro
1export const SECTION_1 = { topic: 'problem', phase: 'understanding', quoteP95Ms: 800 };

Why interviewers care

Fiat On-Ramp interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.

Interview checkpoint

Name one failure story for Problem Statement: Fiat-to-Crypto On-Ramp that proves you understand real outages, not happy-path diagrams.

Key Highlights

  • MoonPay-class buy flow
  • licensed money movement
  • spread + FX hedge window
  • chain broadcast after fiat settles
Mention this
Tie Problem Statement: Fiat-to-Crypto On-Ramp to conversion funnel metrics and compliance SLA, not buzzwords.
Staff+ signal
State fiat capture irrevocability before chain broadcast—in that order.

Section Rescue Kit

Buzzwords to use:

Quote lockPurchase orchestration

Safe statements:

  • "For Problem Statement: Fiat-to-Crypto On-Ramp, I never broadcast crypto before fiat capture is irrevocable."
  • "Let me walk quote → pay → KYC → deliver before naming cloud SKUs."
Design Fiat On-Ramp - System Design | WinJob | WinJob