Design an async donation payment platform
Company: DoorDash
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design an online donation platform for a three-day campaign. Users submit personal info and choose amounts to donate to multiple organizations, but your service only needs to charge users and deposit funds into the company’s account. Specify an end-to-end architecture and data model; compare synchronous vs asynchronous payment flows and justify when to use async. Detail an async workflow (API layer, idempotency keys, queue, workers, retries with backoff, dead-letter handling) and how you guarantee idempotent charges across network retries. Cover failure handling, reconciliation/reporting, duplicate submission prevention, security/PII and payment compliance, rate limiting, observability, and scaling for bursty traffic. Provide API contracts, database schema, and a strategy for partial failures and eventual consistency.
Quick Answer: This question evaluates a candidate's ability to design scalable, reliable payment systems and asynchronous processing pipelines, covering competencies in distributed systems, idempotency, data modeling, security/PCI compliance, retry and dead-letter strategies, and observability.