Affirm Interview Questions & Process for Software Engineers

What the Affirm software engineer interview really involves, and why coding is the whole game. Three families recur in Affirm's merchant and lending domain: weighted-random and RandomizedSet design, merchant co-occurrence recommendations, and rolling-window a Premium question aggregation. System design skews generic, so prepare a payments and checkout design; behavioral is a hiring-manager round. Here is what each round tests and how to prepare.

14 lessonsbuilt from 47 candidate reports

Affirm
Alex Chen
Updated

01How the Affirm interview process works

Most Affirm loops open the way you would expect. A recruiter reaches out or picks up your application, and the first real gate is one or two technical phone screens: live coding, usually on a shared editor, where the brief is the one that runs through the whole process. Write something in the language of your choice, get it working against real input, then talk through time, space, and the optimization the interviewer nudges toward. Clear that and you reach the virtual onsite. Affirm lists its open engineering roles on its own careers site.

The onsite is four to five one-hour rounds, virtual and one on one, and how it is built tells you which level Affirm is weighing you for. Coding is the center of gravity: a senior loop runs two coding rounds alongside two system design rounds and a hiring manager conversation, a staff loop trades one design round for a project walkthrough, and an intern or new-grad loop is mostly technical with a single behavioral round. Afterward the interviewers file written feedback and the hiring manager settles the hire and the level with the panel. Four to eight weeks end to end is normal, and rejections can land fast, sometimes within hours of a solution that looked correct, so silence or a quick no is not something to read tea leaves into.

1
Application
2
Recruiter
3
Screen
Phone screen
4
Onsite
4-5 rounds
5
Debrief
6
Offer
Read the full process breakdown

02The Affirm onsite loop

The mix of rounds is the clearest signal of the level Affirm is reading you at. Coding is the constant, and it is usually doubled: a senior loop runs two coding rounds and two system design rounds, a staff loop keeps two coding rounds but swaps a design round for a project walkthrough, and a new-grad loop is mostly coding with one behavioral round to close. If two system design rounds land on your calendar, Affirm is weighing you for senior, not entry.

Two habits pay across every coding round. The first is that your code is expected to run: you pick the language, get something working against real input, then discuss time, space, and the optimization the interviewer nudges toward. The second is less obvious and is where people get cut. Affirm writes its prompts deliberately vague, and one candidate with a correct, fast solution was rejected specifically for not asking enough questions first. So interrogate the prompt out loud before you type, name the data structures you are choosing and why, and treat clarification as part of the grade rather than a preamble to it.

CodingCore
The centerpiece, and usually two rounds of it at senior level. A small, recognizable problem reskinned in Affirm's merchant and lending domain, graded on whether you clarify the vague prompt before you solve it and ship code that actually runs. Medium difficulty, object-oriented and implementation heavy.
System designScale
The smaller half of the loop, one round at most levels and two at senior. Reason about data flow, APIs, and scale out loud. Documented prompts skew generic, so a payments or checkout design is the on-brand thing to prepare rather than a guaranteed question.
Hiring managerFit
A conversation with the manager who would hire you: past projects in depth, how you work with a team, and why Affirm. Conversational, not a scored values rubric.
Project walkthroughStaff
A staff-level addition. Walk one project you led end to end, the decisions and tradeoffs behind it, and the impact you owned. Present in staff loops, not in an intern or new-grad one.
Read the full loop breakdown

03The Affirm coding bar

Affirm's coding bar is narrow and deep rather than broad. Instead of a wide net of algorithm puzzles, it asks a small, recognizable set of problems and reskins each one in its own merchant and lending domain, so the same shape comes back wearing a different story. The difficulty sits at medium, the format is object-oriented and implementation-heavy, and candidates say repeatedly that there is not much written about the onsite, which is exactly why the recurring families are worth drilling until they are automatic.

Three families carry most of the loop. The first is weighted-random and RandomizedSet design: Insert, Delete, and GetRandom at O(1), then the twists Affirm likes, returning values with probability proportional to frequency, handling duplicates, or keying on strings. The second is a co-occurrence recommendation, framed in Affirm's own words as finding, for each merchant, the other merchant most frequently bought alongside it, which is the same problem as the generic letters-that-appear-together version. The third is a rolling-window money aggregation, store_loan and get_loan_volume summing the trailing hour, with a follow-up that asks for a constant-space answer you allow to be less accurate. Around those sit the object-oriented builds, a War card game or a decision tree you implement and run.

Coding roundtarget allocation
Clarify
Implement and run it
Test edges
Clarify the vague promptWorking code that runsEdge cases
Read the full coding breakdown

04Affirm system design

Be wary of any guide that promises Affirm will hand you a lending system to design. The system design rounds are real and they count, one at most levels and two at senior, but they are the smaller half of the loop, and the prompts candidates actually report skew generic. The two first-hand examples on record are Design WhatsApp and an RPC pub/sub broadcast system, neither of which touches payments or credit.

So this guide teaches a payments and checkout design with credit decisioning as its centerpiece, and it does so as the design worth practicing rather than the question Affirm is confirmed to ask. It is the on-brand problem for a company whose whole business is approving or declining a loan in the moment of checkout, and it is the most teachable version of the skills the round tests: idempotent payment writes, a ledger that stays consistent, real-time approve or decline against a risk service, and installment scheduling for buy-now-pay-later plans.

Whatever the prompt, naming more technologies does not help you. The round rewards reasoning from the access patterns and the constraints, back-of-envelope capacity math, and clean diagramming, and it wants you concrete about what gives way under load. Start from the read and write patterns, talk through your datastore choice, and reason out loud rather than reaching for a memorized architecture.

Read the full system-design breakdown

05Affirm levels and offer

An Affirm offer is stock-heavy in a way that shapes the whole negotiation, and more so the higher you go. The package is base, restricted stock units that vest as ordinary AFRM shares, and a cash bonus that collapses toward zero at senior and staff level, where comp is really base plus RSUs. The US company median for a software engineer sits around $370K, but the number worth fixating on is the level, because that is the lever that moves most.

Level
L4 · Software Engineer 1 (entry)
L5 · Software Engineer 2 (mid)
L6 · Senior Software Engineer
L7 · Staff Software Engineer
L8 · top rung

Affirm's IC ladder as levels.fyi reports it. The numbering starts at L4, so L4 is the entry rung and there is no L1 to L3 below it; the top rung, L8, is shown without a surfaced title. Compensation by level lives in the offer lesson.

Because AFRM is public, the stock is liquid the day it vests, typically on a four-year schedule with refreshers layered on later. The honest caveat is that AFRM is a notably volatile stock whose price swings with interest rates and consumer-credit sentiment, so the dollar value of a fixed grant moves a lot and older anecdotal totals can badly overstate today's equity. That makes grant timing and refreshers matter as much as the headline number, and it is why current levels.fyi medians, which already price the current stock, are the anchor worth trusting.

The highest-value thing you can win is the right level. The gaps between L5, L6, and L7 dwarf any bump inside a band, so if the market says you are worth more, argue the level rather than the number, and remember the ladder starts at L4, not L1. Base and a sign-on move most readily, while RSUs and the shrinking bonus barely move for individual contributors. The candidate reports hold no Affirm-specific negotiation tricks, so treat these as the standard levers applied to a company where leveling is the real prize.

Read the full offer & negotiation guide

06What Affirm actually asks

The same handful of shapes keep coming back, which is what makes Affirm preparable despite how little is written about its onsite. Across a full loop you solve a small number of problems end to end, almost all mediums, and the recurring signal is not a hard algorithm but a recognizable pattern reskinned in Affirm's domain, plus the expectation that you clarify the prompt and run your code.

The questions that recur most
  • Insert Delete GetRandom O(1)design · #1
  • Weighted GetRandom by frequencydesign · twist
  • Random access with duplicatesdesign
  • RandomizedSet with string keysdesign
  • deleteRandom in O(1)design
  • Most frequently bought with, per merchantco-occurrence · Affirm-framed
  • Letters appearing together mostco-occurrence twin
  • store_loan / get_loan_volumerolling window · trailing hour
  • process_amount trailing hourrolling window
  • War card gameOOP · implement and run
  • Evaluate a decision treeOOP · tree eval
  • Infer schema of nested JSONrecursion
  • Design a payment / BNPL checkoutsystem design · on-brand
  • Design WhatsAppsystem design · first-hand
  • Design an RPC pub/sub systemsystem design · first-hand
Recurring coding themes
What the loop keeps coming back to
01
Weighted random & RandomizedSet design
Insert, Delete, GetRandom at O(1), then twists: weighted probability, duplicates, string keys
02
Co-occurrence recommendations
For each merchant, the one most frequently bought alongside it; build the co-occurrence map
03
Rolling-window money aggregation
store_loan and get_loan_volume, sum the trailing hour, with an exact-versus-approximate tradeoff
04
OOP implement-and-run
Write the class and its methods and run it: War card game, evaluate a decision tree
The behavioral questions Affirm repeats
A hiring-manager conversation, grouped by the signal each one weighs
  • A system you owned end to endOwnership
  • A time you helped or unblocked a peerCollaboration
  • What you want from a teamCollaboration
  • A project whose impact you can put a number onImpact
  • A time the requirement was vague or kept shiftingAmbiguity
  • A question you asked early that changed the workClarify first
  • Walk me through a project you ledProject walkthrough
  • Why Affirm, and why leave where you areMotivation

The full set of Affirm behavioral interview questions maps each prompt to the signal it weighs, or start with the STAR method.

The system design prompts on record at Affirm
Real at senior level, thin and generic in what candidates report

Each of these Affirm system design interview questions is worked end to end in the guide, honest about which are reported and which are the on-brand bet.

The behavioral round is a scheduled hour with the manager who would actually hire you, and at staff level it is joined by a project walkthrough. It runs as a conversation, not a scored rubric. Affirm does not publish a crisp, enumerated set of values on its live careers pages the way some companies do, so what carries the round is the substance interviewers actually probe: a project you can go deep on, the tradeoffs you owned, an honest reason for wanting Affirm, and the same instinct the coding rounds reward, asking the right questions before you commit. Bring two or three stories you can defend and...

Continue reading

The full breakdown. Every round and every pattern, with the strategy that goes with each.

Go to the Full Guide
Common questions

What are the stages of the Affirm interview process?

The Affirm interview runs through 6 stages: Application, Recruiter, Screen, Onsite, Debrief, and Offer.

How many rounds does the Affirm interview have?

The interviewing rounds sit in the onsite (4-5 rounds). The other stages (application, recruiter, and team match) are conversations, not scored rounds.

Is it hard to get hired at Affirm?

The difficulty sits at medium rather than brutal, but the coding bar is specific. Affirm asks a small set of recognizable problems reskinned in its own merchant and lending domain, and it grades whether you clarify a deliberately vague prompt before solving and ship code that actually runs. One candidate with a correct, fast solution was rejected for not asking enough questions first, so the bar is as much about how you work as whether you reach the answer.

How does the Affirm interview process go?

A recruiter screen leads to one or two technical phone screens, live coding where you write a solution and run it, and then a virtual onsite of about four to five rounds. Coding is the centerpiece, joined by system design and a hiring manager conversation, with staff loops adding a project walkthrough. The hiring manager and panel settle the hire and the level together, and the whole process usually takes four to eight weeks.

How many rounds are in the Affirm interview?

The virtual onsite is four to five one-hour rounds after the recruiter call and phone screens. A senior loop is typically two coding rounds, two system design rounds, and a hiring manager conversation; a staff loop keeps two coding rounds and trades a design round for a project walkthrough; an intern or new-grad loop is mostly technical with one behavioral round. Coding is doubled at senior level, which is the clearest sign of the level Affirm is reading you at.

What coding questions does Affirm ask?

Three families carry most of the loop. The first is weighted-random and RandomizedSet design: Insert, Delete, and GetRandom at O(1), then twists like returning values by frequency, handling duplicates, or keying on strings. The second is a co-occurrence recommendation, framed in Affirm's own words as finding the merchant most frequently bought alongside each one, and the third is a rolling-window money aggregation that sums a trailing hour of a Premium question with an exact-versus-approximate follow-up. Around those sit object-oriented builds you implement and run, like a War card game or a decision tree.

What system design questions does Affirm ask?

Honestly, the documented first-hand prompts skew generic: the two on record are Design WhatsApp and an RPC pub/sub broadcast system, neither of which touches payments. System design is the smaller half of the loop, one round at most levels and two at senior. Because Affirm's business is approving or declining a loan at checkout, this guide teaches a payments and checkout design with credit decisioning as the on-brand thing to practice, but treat it as the design worth preparing rather than a question Affirm is confirmed to ask.

Does Affirm have company values?

Affirm's live careers and about pages do not surface a crisp, enumerated values list the way some companies do, so do not walk in expecting a scored values rubric. The behavioral round is a hiring manager conversation, joined by a project walkthrough at staff level, that probes project depth, the tradeoffs you owned, and an honest reason for wanting Affirm. The same instinct the coding rounds reward, asking the right questions before you commit, carries here too.

What levels does Affirm use for engineers?

Affirm's IC ladder starts at L4, so L4 Software Engineer 1 is the entry rung, not a mid-level one, and there is no L1 to L3 below it. Above it sit L5 Software Engineer 2, L6 Senior, L7 Staff, and L8 at the top. Getting the right level up front matters more than any within-band bump, since the gaps between L5, L6, and L7 dwarf a small base adjustment.

Why do candidates get rejected from Affirm's coding round?

The most cited Affirm-specific reason is not a wrong answer but a missed conversation: a candidate with a correct, fast solution was rejected for not asking enough questions before solving. Affirm writes its coding prompts deliberately vague, so it grades whether you interrogate the prompt, choose clean data structures out loud, and get running code, not just whether you reach an optimal solution. Clarify first, then implement and run.

The Affirm interview, end to end

Application screening through offer negotiation. 14 lessons across 5 chapters, written for Affirm specifically. Not recycled FAANG advice.

Start the guide