Stripe's "Payment Webhook System" interview question focuses on designing a scalable, secure system to handle real-time payment event notifications, often tagged with data engineering, distributed systems, webhooks, security, backend reliability, and infrastructure challenges.
Candidates must architect a webhook system like Stripe's that reliably delivers payment events (e.g., payment_intent.succeeded, invoice.payment_failed) from Stripe's backend to merchant servers. Key requirements include handling retries for failed deliveries, signature verification for security, idempotency to avoid duplicate processing, scalability for millions of events daily, and fault tolerance across distributed failures. The system processes asynchronous events from external payment networks while ensuring PCI compliance, auditability, and no data loss.[1][2][4]
No official full examples exist publicly, but Stripe docs provide standard formats:
Input Payload Example (payment_intent.succeeded):
{ "id": "evt_1ABC123...", "object": "event", "type": "payment_intent.succeeded", "data": { "object": { "id": "pi_123...", "amount": 2000, "status": "succeeded" } } }
Header: Stripe-Signature: <sig1>,<sig2> v1,...[1]
Expected Output: HTTP 200 OK from endpoint; Stripe marks as delivered. Failures trigger retries.[9][1]