Affirm Senior Software Engineer Interview Questions
30 real practice questions for the senior-level Senior Software Engineer role at Affirm (Fintech), spanning behavioral, technical, system design, leadership, and problem solving. Lead technical projects and mentor junior engineers. The first 3 questions below include what Affirm interviewers actually listen for, plus likely follow-ups.
- Questions
- 30
- Categories
- Behavioral (6), Technical (6), System Design (6), Leadership (6), Problem Solving (6)
- Difficulty mix
- 10 easy · 10 medium · 10 hard
- Avg. answer time
- ~4 min
Behavioral Questions (6)
1.Tell me about a system you owned that was a black box to the engineers or stakeholders around you. How did you know it was a problem, and what did you actually do about it?
easy~3 minWhat interviewers look for
- Candidate proactively recognized opacity as a defect, not just a documentation gap — aligning with Affirm's 'Honest Engineering' principle that hidden complexity is a first-class bug.
- Concrete steps taken: added observability, rewrote confusing interfaces, created runbooks, or refactored logic so behavior was auditable without needing tribal knowledge.
- Candidate solicited feedback from non-engineering stakeholders (product, ops, compliance) to validate whether the clarity improvements actually landed — not just assuming their fix was sufficient.
Likely follow-ups
- How did you measure whether the system was actually more understandable afterward — did you validate it with anyone who hadn't worked on it before?
- If a regulator or compliance team had needed to audit the system's behavior during the period it was a black box, what would they have found?
Company context
Affirm's 'No Fine Print' brand promise is not just a marketing tagline — it's an engineering constraint. A system at Affirm whose behavior can't be explained or audited is directly at odds with the company's regulated-lender identity. Affirm engineers are expected to internalize that hidden complexity in underwriting, ledger, or payment flows isn't just technical debt; it's a compliance and trust risk. This question probes whether candidates treat opacity as a defect worth fixing, which is the core of Affirm's Honest Engineering principle.
2.Walk me through a production incident where the root cause lived in a system or service that wasn't yours to own. How did you find it, and how did you work with the team that did own it?
easy~3 minWhat interviewers look for
- Candidate crossed service or team boundaries to trace the root cause rather than stopping at the edge of their own system — demonstrating Vertical Ownership without waiting for someone else to escalate.
- Used concrete debugging techniques to trace across boundaries: distributed tracing, log correlation, Kafka consumer lag inspection, or gRPC call graph analysis — not just intuition.
- Collaborated constructively with the owning team without creating blame dynamics — framed the finding as shared information rather than an accusation, enabling faster resolution.
Likely follow-ups
- At what point in the investigation did you realize the root cause wasn't in your system — what was the signal that made you cross that boundary?
- What did the post-mortem or COE document say about ownership gaps, and did it change how your team monitors that boundary going forward?
Company context
Affirm runs a vertically integrated stack spanning underwriting, payment processing, loan servicing, and capital markets — all deeply interconnected via microservices, Kafka, and gRPC. A bug in the underwriting service can silently corrupt ledger entries; a Kafka consumer lag can delay repayment state transitions. Affirm's Vertical Ownership principle exists because engineers who stop debugging at their service boundary create systemic blind spots in a regulated financial system where the full transaction lifecycle must be correct end-to-end. This easy question establishes a baseline for whether the candidate understands cross-boundary ownership at all.
3.Tell me about a time you caught a risk in a system design that the rest of your team had missed. What was the risk, how did you surface it, and what actually changed because of it?
medium~4 minWhat interviewers look for
- The risk identified was non-obvious — not a missing null check, but something requiring cross-domain reasoning: a race condition in a financial state machine, a fraud vector introduced by a new payment flow, an edge case with regulatory reporting implications, or a credit risk amplified at scale.
- Candidate surfaced the risk through a specific artifact — a written design doc comment, a COE retrospective, a pre-launch risk review, or a direct async message — demonstrating that risk-awareness was communicated clearly, not just privately noted.
- The outcome was concrete: the design changed, a mitigation was added, or the team adopted a new review gate — not just 'they acknowledged it and we moved on.'
- Candidate demonstrates awareness of Affirm-relevant risk dimensions — credit, fraud, regulatory, or ledger correctness — rather than generic reliability concerns like latency or availability.
Likely follow-ups
- How did you convince the team the risk was real — did you have to model the failure scenario, build a proof of concept, or bring in external data?
- In hindsight, was the risk actually mitigated, or did something similar surface later? What would you do differently in the review process?
Company context
At Affirm, every feature ships with implicit credit, fraud, and regulatory risk that engineers must treat as first-class concerns, not afterthoughts for a compliance team to catch. Affirm's 'Risk-Aware by Default' principle means a Senior Engineer is expected to proactively reason about how a new Adaptive Checkout flow could introduce a credit concentration risk, how a payment retry mechanism could be exploited for fraud, or how a state machine change could create a regulatory reporting gap. This medium question probes whether candidates have the financial-domain intuition to see around corners on risk, not just build reliable services.
4.Tell me about a time you disagreed with a senior engineer or manager on a technical decision that had already been made. What did you do, and how did it end?
medium~4 min5.Describe a time when a financial calculation, fee, or state in your system was producing results that looked correct on the surface but were wrong in ways that mattered to users or compliance. How did you discover it, and how did you fix it without making things worse?
hard~5 min6.Tell me about a time a customer-facing bug turned out to have roots in three or more services you didn't all own. How did you coordinate the investigation, and who owned the resolution?
hard~5 min
Technical Questions (6)
7.You're writing a Python function that applies a repayment to an installment loan. Walk me through how you'd represent the loan state and handle the money arithmetic safely.
easy~3 min8.We publish loan events to Kafka so downstream services can react — things like 'loan created', 'payment received', 'loan settled'. What are the delivery and ordering guarantees you'd need, and what breaks if you get them wrong?
easy~3 min9.Adaptive Checkout needs to show a personalized loan offer — term, APR, down payment — within the merchant checkout page in under 300ms. Walk me through how you'd architect the backend path from the merchant's API call to the offer response.
medium~4 min10.You're designing the Affirm Card's transaction authorization flow. A user taps their card at a merchant, and within 2 seconds you need to decide: approve, decline, or redirect to BNPL repayment. How do you design this to be both fast and financially correct?
medium~5 min11.Our underwriting model is scoring loan applications using a feature store backed by Spark jobs running on Airflow. A team notices the model's approval rate has drifted down 8% over two weeks with no code changes. How do you debug this?
hard~5 min12.We need to support merchant-initiated refunds on Affirm Pay-Over-Time loans. A merchant refunds a consumer mid-repayment — they've made two of six payments. Design the ledger and state transitions to handle this correctly.
hard~5 min
System Design Questions (6)
13.Design a payment schedule generation service for Affirm Pay-Over-Time. Given a loan amount, APR, and term, the service needs to produce an amortization schedule that's shown to the consumer at checkout and stored for the life of the loan. What does the data model and API look like?
easy~3 min14.The Affirm Money Account needs to display a user's real-time available balance, which is affected by pending card transactions, scheduled loan payments, and holds. How do you design the balance computation layer so it's fast, accurate, and doesn't lie to the user?
easy~4 min15.We want to build a consumer-facing loan statement and payment history service — something like the 'your account' view in the Affirm app that shows all your loans, payment history, upcoming payments, and total interest paid. It needs to handle users with dozens of concurrent loans. How do you design this?
medium~4 min16.Design the autopay scheduling and execution system for Affirm Pay-Over-Time. Millions of payment due dates are distributed across every calendar day, and we need to initiate ACH debits reliably, handle failures gracefully, and notify users — all without double-charging anyone. Walk me through the architecture.
medium~5 min17.Design Affirm's fraud signal aggregation service. When a user applies for a loan or initiates a transaction, we need to evaluate dozens of real-time and near-real-time fraud signals — device fingerprint, velocity checks, network graph features — and produce a fraud score in under 100ms. How do you build this?
hard~5 min18.Design the merchant integration layer that lets Affirm onboard a new e-commerce merchant — from API key provisioning through live transaction processing. The system needs to handle thousands of merchants at different integration maturities: some use our hosted checkout SDK, some call our APIs directly, and some are large retailers with custom integrations. How do you architect this?
hard~5 min
Leadership Questions (6)
19.Tell me about a time you had to get engineers from other teams to adopt a standard or practice you cared about. How did you make it happen without having any formal authority over them?
easy~3 min20.Describe a time you had to deliver feedback to a peer that they didn't want to hear — maybe about their code, their design, or their approach. How did you do it, and what happened?
easy~3 min21.Tell me about a time you had to slow down or stop a project you were excited about because the risk wasn't acceptable. What was the risk, who made the final call, and do you think the right decision was made?
medium~4 min22.Have you ever written a design doc or RFC that changed the technical direction of a project or team? Walk me through what you wrote, what resistance you got, and how it ended.
medium~4 min23.Tell me about the most consequential technical decision you made at a previous company that you'd make differently today. What were you optimizing for then, and what would you optimize for now?
hard~5 min24.You're a senior engineer on a team that's about to launch a new Affirm feature, and you've discovered that the product definition has a gap that will harm some users — not catastrophically, but in a way that violates the 'no hidden costs' promise. PM is pushing to ship on schedule. What do you do?
hard~5 min
Problem Solving Questions (6)
25.Rough estimate: how many Affirm loan applications do you think we process on a peak day like Black Friday, and what does that imply about our underwriting API's throughput requirements?
easy~3 min26.A consumer calls support saying their Affirm loan balance looks wrong — they believe they overpaid. How do you investigate this as an engineer, and what systems would you look at?
easy~3 min27.Estimate how much revenue Affirm loses annually if our loan repayment confirmation notifications — the SMS and push messages after a payment — have a 1% delivery failure rate. Walk me through your reasoning.
medium~4 min28.Affirm's checkout conversion rate at a major merchant dropped 3% over two weeks. Engineering says nothing shipped to the checkout flow, and there's no incident. How do you structure your investigation?
medium~5 min29.Estimate the total interest Affirm collects annually from consumers on 0% APR loans — and explain why that number isn't zero.
hard~5 min30.Design a system to detect when a consumer's Affirm loan payment has failed due to insufficient funds, determine whether to retry it, and decide what to show the consumer — all without charging a late fee. What does the retry logic, state machine, and consumer communication look like?
hard~5 min