Got the rejection email last Tuesday. Four rounds including the final onsite, so this stings more than the early ones. Writing this up while the memory is fresh because I genuinely think it'll help someone, and honestly it helps me too.
Quick background: I was going for an L4 SWE role on their payments infrastructure team. Recruiter was communicative, process felt organized. I liked that.
Where I think I lost it
The coding round was fine. Not easy, but I handled two medium-difficulty problems and got follow-ups on time complexity. I'm comfortable with that stuff.
The system design round is where I fumbled. The question was essentially: design a payment retry system that handles exponential backoff, idempotency, and failure classification. I know this stuff at a conceptual level but I went too shallow too fast. I jumped to a high-level diagram before I nailed the requirements. The interviewer kept asking "what are you optimizing for" and I kept trying to answer by drawing more boxes.
I learned afterward (from a friend who got an offer there) that Stripe really wants you to demonstrate that you understand the actual problem, not just that you know distributed systems vocabulary. They want to see you think through failure modes slowly, not race to a solution.
The behavioral round
I thought this went well. Looking back, my answers were probably too vague. I defaulted to "we" a lot when I should have been saying "I." That's a classic tell that you're hedging. Stripe's STAR questions seemed to weight impact heavily. "What was the actual result" got asked in some form three times.
What I'd do differently
For system design: spend the first 5-10 minutes on requirements and constraints, out loud. Don't draw anything until you've asked at least 3 clarifying questions. Think about failure modes before you think about the happy path.
For behavioral: write out 6-8 specific stories before your first interview. Not just bullet points. Actual prose you can speak. The difference between a story you "have" and one you've practiced out loud is enormous.
Take-home wasn't in my loop, but I've heard Stripe uses one for some roles. Treat it like production code, not a coding challenge.
I'm already at peace with it, mostly. Rejection from Stripe at L4 after making it to final round is not nothing. But knowing specifically why helps more than vague feedback like "we went with another candidate."