Adyen System Design: What to Expect
- Know the two flavors of Adyen's design round: payments-domain and generic web
- Learn what the payments flavor probes, above all moving money exactly once under retries
- See why payments design leans on consistency while consumer-web design leans on scale
Two flavors of design round show up in the Adyen loop. Which one you get varies. It depends partly on the team and partly on the interviewer. The first is a payments prompt drawn straight from what Adyen does: design a payment service provider, and trace a single card transaction through every component it touches. The second is a generic distributed-systems prompt of the kind you would meet anywhere. It might be a car-pool service that matches a rider going from A to B onto a vehicle. It might be an event-ticket booking system, or the small classic of rewarding the one-millionth visitor to a campaign page. Both are reported often enough that you prepare for both.
The round runs around fifty-five minutes and carries real weight even at mid-level. An SDE2-grade loop still has a dedicated design conversation. The interviewer wants the usual arc. Pull requirements out of a thin prompt, name the core entities, sketch the APIs, then draw a high-level design and defend it. The flavor changes where the difficulty lives. A generic prompt puts the pressure on scale and availability. A payments prompt puts it somewhere most candidates rehearse far less: getting money movement exactly right.
The prompts that recur, and how they split
None of these is published as a rubric, so treat the list as terrain. Recognize the flavor early. The moment you hear the prompt, you know whether the hard part is money correctness or raw scale, and you steer accordingly. Candidates report the four below most often, though any loop can depart from them.
- Payments flavor: Design a payment service provider. The signature prompt, and the one that looks most like Adyen's actual product. You take a card payment from a shopper's tap through authorization, capture, and settlement. Trace request and response across each component: the merchant integration, Adyen's platform, the acquirers and card networks, and the ledger that has to reconcile at the end. The interviewer listens for that component-by-component tracing.
- Generic flavor: A car-pool matching service. A rider wants to go from A to B and joins a vehicle already heading that way. Standard distributed-systems fare: model riders, drivers, and trips. Define the matching API, then reason about how you find nearby vehicles and scale the matcher. No payments knowledge required. The fundamentals you would bring anywhere carry it.
- Generic flavor: An event-ticket booking system. Reported as an IPL ticket-booking build: requirements, then core entities (events, seats, bookings), then APIs, then the high-level design. The interesting tension is holding and confirming a seat without overselling it. That is a consistency problem in miniature, so some of the same money instincts transfer even though the domain is generic.
- Warm-up flavor: The one-millionth-visitor problem. Reward the millionth visitor to a marketing-campaign page. Small on the surface. Underneath, it is a counting-under-concurrency question. Many web servers increment a shared counter at once, and exactly one request must win the millionth slot without a race. A tidy probe of atomicity and coordination that can open a round or sit inside a larger one.
The signature: designing a payment service provider
When the round turns payments, the prompt is deceptively short. The depth is all in the details. You are asked to design the platform that sits between a merchant and the card networks, and to walk a single transaction through it end to end. Start at the boundary. A shopper submits a payment and the merchant's server calls your API. From there you own the routing, the authorization, the eventual capture and settlement, and the record-keeping that has to balance. A handful of concerns come up almost every time the prompt runs, whichever way you draw the boxes.
Authorization and multi-method routing
A payment can take many paths. The same checkout might be a Visa card, an iDEAL bank transfer, or a local wallet, and each rides a different rail with its own acquirer. Design the router that picks a route per transaction and speaks each downstream protocol. Be ready to reason about retrying a declined authorization on a second acquirer without charging twice. Routing across methods and acquirers is the part a generic prompt never makes you build.
Idempotency and exactly-once money movement
Networks time out, clients retry, and a captured payment must never double. The center of a strong answer is an idempotency key carried on every write, so a retried request lands on the same result instead of a second charge. Talk through the timeout window explicitly. The acquirer may have succeeded while your response was lost, so you reconcile against the network instead of trusting your own uncertainty. The payments prompt tests this concern most.
The ledger has to balance
Every authorization, capture, refund, and settlement is an entry in a ledger. It must reconcile down to the cent. Write money movements as an append-only, double-entry record instead of mutating a balance in place. The history stays auditable, and a replay can rebuild state. Settlement to the merchant and reconciliation against what the networks moved are first-class parts of the design.
Latency budget and availability
Authorization sits in the shopper's checkout, so it runs on a tight latency budget. A slow or failed capture can be made asynchronous behind it. Separate the synchronous authorize path from the asynchronous capture, settlement and webhook-delivery paths. Say which parts must stay available in the moment and which can queue and catch up. Naming that split shows you know where a payment can wait and where it cannot.
When the prompt is generic instead
Draw a car-pool matcher or a ticket-booking system and the texture changes. Now the pressure is familiar. Model the entities cleanly, define a sane API, and reason about how the thing scales as users and traffic grow. Standard distributed-systems practice maps straight onto it. Lead with the usual moves: clarify requirements, size the load, then design outward from the data model. One habit still pays off even here. The money-correctness instinct transfers to any place two requests compete for one scarce thing. Overselling the last seat in a booking system has the same shape as double-charging a card. Treat the seat hold as a consistency question. Calling it a caching question is a hand-wave.
Reads as strong at Adyen
- Names the flavor early, and steers a payments prompt toward consistency and correctness and a generic prompt toward scale and availability
- Carries an idempotency key through every write and reasons out loud about the retry-after-timeout window
- Treats the ledger as the source of truth, writing money movements as immutable double-entry records and deriving balances from them
- Separates the synchronous authorize path from asynchronous capture, settlement, and webhook delivery
- On a generic prompt, spots the scarce-resource contention (the last seat, the millionth visitor) and designs it as a consistency problem
- Pulls requirements and entities out of the thin prompt before drawing any boxes
Reads as off-target
- Designs a payment flow that can double-charge because a retried request creates a second write
- Optimizes a payments prompt for requests per second when the graded difficulty is money correctness
- Mutates a balance in place, leaving no auditable history and no way to replay or reconcile
- Waves at "just cache it" for a seat hold or a visitor counter that is really a race condition
- Walks in braced for only one flavor and freezes when the other prompt lands
The one worked design in this section
The payments flavor is the Adyen-shaped one, and most candidates have never rehearsed it. So this section puts its weight there. A single worked design carries the section: a payments platform, built the way the signature prompt asks for it. It puts the whole flow on the table at once. A card transaction runs from the merchant boundary through routing and authorization to capture, settlement and a ledger that reconciles. The exactly-once and consistency reasoning stays concrete. Build it cleanly once and the moves transfer. The same idempotency and ledger instincts carry to any payments prompt, and the scarce-resource reasoning underneath it carries to the generic booking and counting prompts beside it.
Design a Payments Platform
The worked design for this section. Take a card payment from the merchant integration through multi-method routing, authorization, capture, and settlement to a ledger that balances. Reason about idempotency, exactly-once money movement, and the split between the synchronous authorize path and the asynchronous rest. Practice it here and the same reasoning carries to the generic booking and counting prompts.
Common questions
Does Adyen ask payments-specific system design?
Sometimes, and you cannot fake it, so prepare it hardest. When the round turns payments, the classic prompt is to design a payment service provider. You trace a single transaction through every component, from the merchant integration out to the acquirers and back. It leans on authorization, routing a payment across methods and acquirers, settlement and reconciliation, and above all moving money exactly once under retries. Other loops hand you a generic prompt instead. Prepare for both.
What generic system design does Adyen ask?
The reported generic prompts are ordinary distributed-systems fare. One is a car-pool service that matches a rider from A to B onto a vehicle. Another is an event-ticket booking system, taken from requirements through entities and APIs to a high-level design. The third is the one-millionth-visitor counting problem. Standard practice carries them. Lead with requirements, entities, APIs and a scaling story. Watch for the one place each prompt hides a race, such as the last seat or the millionth slot. Handle that contention as a consistency problem.
Key Takeaways
- ✓Adyen's design round runs in two flavors, so prepare for both. One is a payments prompt built on Adyen's own business. The other is a generic distributed-systems prompt like a car-pool service, a ticket-booking system or the millionth-visitor problem.
- ✓The payments flavor is the signature one. Designing a payment service provider means tracing a card transaction through authorization, multi-method routing, capture, settlement and a ledger that reconciles. The hard part is getting money movement exactly right.
- ✓Payments design rewards consistency. Generic design rewards scale. Carry an idempotency key through every write, reason about the retry-after-timeout window, and treat the ledger as an immutable source of truth you derive balances from.
- ✓The generic prompts are standard practice with one twist. Each hides a place where two requests compete for one scarce thing, like the last seat or the millionth visitor. Handle that contention as a consistency problem.
- ✓One worked design, a payments platform, carries the section. Build it cleanly once. The idempotency and ledger reasoning transfers to any payments prompt, and the scarce-resource reasoning carries to the generic prompts.
Adyen interview guideKnow what Adyen asks before you walk in.
7 coding · 1 system design · 15 behavioral questions
Get their questions first.
InterviewLegend is independent and not affiliated with or endorsed by any company it covers.