Building an Idempotent Refund Flow
The first time a refund double-fired in production, it cost us about 4,200 euros before anyone noticed. A merchant's support agent clicked the refund button,...
Practical notes on engineering leadership, fintech, and building at scale.
The first time a refund double-fired in production, it cost us about 4,200 euros before anyone noticed. A merchant's support agent clicked the refund button,...
The first time I got this badly wrong, I kept a senior engineer for fourteen months longer than I should have because his throughput was extraordinary. He...
A few years ago I watched a payout run leave forty-two merchants with money debited from our settlement account but never credited to their bank. The culprit...
The first technical roadmap I ever presented to a board lasted four slides before the CFO stopped me. I was three minutes into explaining why we needed to...
A payment either happens or it doesn't. That's the story we tell customers, and it's the story regulators want to hear. But underneath, a single card...
Early in my time running engineering at a payments company, I sat in a design review for a ledger rewrite and realized, about ten minutes in, that I could not...
The meeting that decided this ran about forty minutes. We had a greenfield ledger service to build, a payments platform that would eventually touch a few...
Three years ago, a graduate engineer named Priya asked me why our payment reconciliation job ran every fifteen minutes. She had been with us for six weeks. The...
The first wallet system I inherited stored balances as a single column on the user row. A background job updated it. When two payments landed in the same 200...
A few years ago I kept a spreadsheet of everything my team shipped in a quarter, and then I ran a quiet little experiment. Next to each item I wrote two...
A few years ago we shipped a payment reconciliation job that, under load, occasionally credited a merchant twice for the same settlement. Not often. Maybe one...
The pager went off at 3:42 on a Tuesday morning. A payment reconciliation job had stalled, and the alert routed to an engineer who had been on call for eleven...