The retry storm that almost paid a merchant twice
Thursday 16:47. A merchant payout. The client timed out, then fired again. Then again. Ninety seconds from paying the same person three times.
SAIFCORE
Architecture guides, ADRs, and practical techniques from designing payment rails, distributed backends, and resilient platforms in Africa and beyond.
Case studies, services, and experience on saifcore.tech
Thursday 16:47. A merchant payout. The client timed out, then fired again. Then again. Ninety seconds from paying the same person three times.
Friday, the app said Paid. Monday, 15,000 XOF was missing. The callback was named SUCCESS. That was the whole problem.
Most payment bugs are vocabulary bugs. Accepted is not confirmed. Confirmed is not settled. The three-state model this blog starts from — and why your boolean is lying to finance.
Backend platforms for business-critical systems, with a focus on payments, reliability, and architectures that survive production — not slide decks. Based in Dakar, written for teams that move money.
Moving money is only the last step. The hard part is proving who acted, for whom, under which mandate, and within which limits.
Align problem, users, metrics, and explicit non-goals on a single page before anyone draws a diagram or books a sprint.