
Affirm Software Engineer interview typically runs 3-6 rounds: recruiter screen, technical screen, hiring manager, system design, and onsite or panel. It usually takes about 1-2 months and is often quick-moving but can feel drawn out.
$146K
Avg. Base Comp
$277K
Avg. Total Comp
4-6
Typical Rounds
3-8 weeks
Process Length
We’ve seen a consistent pattern at Affirm: the team cares less about flashy theory and more about whether you can turn a prompt into working code quickly and cleanly. Multiple candidates described questions that were easy to moderate on paper but still unforgiving in execution, especially when the clock was tight. One candidate was rejected after solving a medium problem correctly but not fast enough, and another noted that even small language-specific syntax mistakes were noticed in a round that otherwise felt straightforward. That tells us the bar is not just correctness — it’s crisp implementation under pressure, in the exact stack they expect.
A recurring theme is that Affirm likes problems with a real product or operations flavor. We’ve seen log filtering, user validation, payment flows, and even a design constraint around an external bank API with a limited request window. That’s a strong signal that they value engineers who can reason through business rules and edge cases, not just generic algorithms. Candidates also reported a few rounds that leaned into their internal Python ecosystem or a specific library, which can surprise people who prepare only for standard LeetCode-style interviews.
The other non-obvious factor is consistency over a longer process. Our candidates report a polite, professional experience, but also one where the evaluation stays technical all the way through and feedback can be sparse at the end. In practice, that means Affirm seems to reward candidates who can keep their answers grounded, explain tradeoffs clearly, and stay sharp across multiple coding checkpoints rather than peaking in just one interview.
Synthesized from 8 candidate reports by our editorial team.
Had an interview recently?
Share your experience. Unlock the full guide.
Real interview reports from people who went through the Affirm process.
I got rejected in the live coding round. The questions was easy around a practical financial scenario it was for a backend role. Recruiter told me it would be language agnostic but the team was initially working on python and trying to switch to Kotlin. I chose Java to do the challenge but ig they wanted someone whos was very proficient in python and that's where i lacked.
Questions asked: Just had my live coding round at Affirm for the Software Engineer II Backend role (Card Mgmt & Transaction Processing). Wanted to share since I couldn't find anything specific about the actual format online. It's NOT LeetCode. They gave me a partially implemented Python class — already had some code in it, some methods missing, some logic broken. The domain was fraud detection for loan/ticket processing. Input was JSON with fields like loan_id, ticket_id, status, etc. My job was to fill in the missing methods to complete the fraud detection logic, and fix a bug in an existing sorting function that was ordering records incorrectly. The hard part wasn't the algorithm — it was reading unfamiliar code fast and understanding the intent before touching anything. If you jump in without reading the whole class first, you'll break what's already there.
Share your own interview experience to unlock all reports, or subscribe for full access.
Sourced from candidate reports and verified by our team.
Topics based on recent interview experiences.
Featured question at Affirm
Write a function is_subsequence to find out if string1 is a subsequence of string2
| Question | |
|---|---|
| Google Maps Improvement | |
| Hurdles In Data Projects | |
| LRU Cache 1 | |
| Reddit-like Notifications | |
| 2nd Highest Salary | |
| Employee Salaries | |
| Closest SAT Scores | |
| Empty Neighborhoods | |
| Subscription Overlap | |
| Top Three Salaries | |
| Rolling Bank Transactions | |
| Merge Sorted Lists | |
| String Shift | |
| Comments Histogram | |
| Like Tracker | |
| Bagging vs Boosting | |
| P-value to a Layman | |
| Prime to N | |
| Cumulative Distribution | |
| Find the First Non-Repeating Character in a String | |
| Over-Budget Projects | |
| Top 3 Users | |
| Total Spent on Products | |
| Find the Missing Number | |
| Over 100 Dollars | |
| Scrambled Tickets | |
| Minimum Change | |
| Maximum Profit | |
| Rectangle Overlap |
Synthesized from candidate reports. Individual experiences may vary.
The process usually starts with a recruiter phone call or LinkedIn outreach. This is a fit check covering background, salary expectations, remote work or location preferences, role details, and interview logistics, along with a few basic behavioral questions. Candidates then complete a live coding interview, often in the language for the role. Questions tend to be implementation-heavy and can range from easy to medium difficulty, including LeetCode-style problems, data manipulation, hashing, graphs, or company-specific coding tasks.
A hiring manager conversation follows in many loops and is usually more conversational than the coding rounds. It focuses on past projects, teamwork, tradeoffs, conflict handling, and overall fit for the team. For some candidates, especially more experienced or senior loops, there is a system design round. Examples included designing a payment system with external API constraints, and the discussion often mixes architecture, practical tradeoffs, and real-world constraints.
Several candidates reported a second coding interview or another technical checkpoint after the first screen. This round can be similar to the first but may be more challenging or more tied to Affirm's stack, including Python-specific libraries or practical business-rule coding. The final stage is typically a virtual onsite or panel with multiple interviewers. It may include multiple technical rounds plus a hiring manager conversation, and in some cases a culture-fit or behavioral discussion with a larger panel.
Some candidates also had a final conversation with a skip manager or another senior leader. This stage appears to be a wrap-up discussion focused on fit and experience before the final decision.