Affirm · Primly Community

Affirm senior / L5 system design interview, what to expect (went through it last month)

staff_steph · 5 replies

Just finished the Affirm senior SWE loop. The system design round was 60 minutes with one interviewer, no co-interviewer shadow. Here's what I walked into.

The prompt was roughly: design a payment processing system that handles installment scheduling, retries on failed charges, and surfaces real-time status to a merchant dashboard. Classic fintech territory.

What they actually cared about:

Reliability and failure modes first. I started sketching the happy path and the interviewer immediately asked "okay, what happens when the charge fails?" before I had even finished drawing the queue. That set the tone. At Affirm this makes sense. BNPL lives or dies on correctly tracking payment state.

Idempotency. Came up explicitly. I said "idempotency keys on the retry job" and got visible head nods. If you haven't thought about idempotency in payment flows, stop and do that now.

Data model questions. Not just the service diagram. He asked me how I'd model installment schedule vs. disbursement vs. ledger entry. The distinction between operational data (what's scheduled) and financial data (what's settled) mattered.

Scale was secondary, not primary. I've been in loops where you estimate QPS in the first five minutes. Here they cared more about correctness than raw throughput. We got to scale eventually but only after the state machine was clean.

Level-specific note: for senior (L5 equivalent), they want you to drive the conversation, not wait for nudges. I was too passive in the first 15 minutes and the interviewer actually said "what would you do next?" to unstick me. At staff+ they probably want you to anticipate tradeoffs unprompted.

Prep that helped: designing payment systems specifically, not generic "design Twitter" problems. Think about: idempotency, at-least-once vs exactly-once delivery, saga pattern for distributed transactions, reconciliation jobs.

No leetcode in the system design round. The coding round is separate (more on that in a different post).

5 replies

remote_swe_42

Good write-up. The idempotency piece is consistent with what I've heard from others who went through Affirm's loop. Fintech companies are allergic to double-charges, so it comes up constantly. Did they ask about idempotency at the API layer or just the job/queue layer?

staff_steph

Both, actually. API layer: idempotency key in the header, cache the response for X minutes so retries get the same result. Queue layer: deduplication ID so the job doesn't fire twice. He seemed satisfied once I covered both levels.

infra_ines

The saga pattern mention is legit. Distributed transactions in payment flows are where architectures go to die. Did they ask about compensating transactions or just the happy path + retry?

visa_vik

This is really helpful. I have Affirm system design scheduled for next week. Quick question: did you use a whiteboard tool or just verbal? My recruiter said it'd be on a shared doc.

staff_steph

Shared Google Doc with a rough diagram pasted as an image. Nothing fancy. I actually typed out the components as a bullet list first, then drew boxes. Worked fine.