Design a Donation Service with Reliable Payment and Payout Tracking

Read the full interview experience this question came from →

Quick Overview

Design donation collection and charity payouts with a PSP, idempotent state transitions, durable ledger records, asynchronous provider events, and reconciliation.

Design a Donation Service with Reliable Payment and Payout Tracking

Company: DoorDash

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Onsite

Design a donation service that collects funds from users and sends payouts to charities. Include a payment service provider and handle payment failure, disconnection, and duplicate requests. ### Constraints & Assumptions Focus on technical payment state and reliable integration. Supported methods, currencies, payout timing, refunds, and charity eligibility requirements must be clarified rather than assumed. Do not equate a browser success page with settled funds. ### Clarifying Questions What state authorizes a charity payout? Can the provider report asynchronously? What identifiers support idempotency? How are failed or reversed collections and failed payouts reconciled? ### What a Strong Answer Covers Separate donation/payment/payout records, durable state transitions, idempotency, provider webhooks and reconciliation, ledger evidence, and clear user-visible status. ### Follow-up Questions What if the provider commits but the response is lost? What if a webhook arrives twice or out of order? How do you prevent paying a charity twice while retrying a failed request?

Overview: Design donation collection and charity payouts with a PSP, idempotent state transitions, durable ledger records, asynchronous provider events, and reconciliation.

Read the full DoorDash Software Engineer interview experience this question came from

|Home/System Design/DoorDash
DoorDash logo
DoorDash
Sep 10, 2026
mediumSoftware EngineerOnsiteSystem Design
0
0

Design a donation service that collects funds from users and sends payouts to charities. Include a payment service provider and handle payment failure, disconnection, and duplicate requests.

Constraints & Assumptions

Focus on technical payment state and reliable integration. Supported methods, currencies, payout timing, refunds, and charity eligibility requirements must be clarified rather than assumed. Do not equate a browser success page with settled funds.

Clarifying Questions Guidance

What state authorizes a charity payout? Can the provider report asynchronously? What identifiers support idempotency? How are failed or reversed collections and failed payouts reconciled?

What a Strong Answer Covers Guidance

Separate donation/payment/payout records, durable state transitions, idempotency, provider webhooks and reconciliation, ledger evidence, and clear user-visible status.

Follow-up Questions Guidance

What if the provider commits but the response is lost? What if a webhook arrives twice or out of order? How do you prevent paying a charity twice while retrying a failed request?

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...