case study · fintech · escrow
Kenya Escrow
Trust as a service: buyer pays into escrow, seller delivers, money moves. Built for a market where strangers transact daily.
The brief
Buying a phone from a stranger on Facebook Marketplace, paying a freelancer upfront, sending money for goods you haven't seen — Kenyan commerce runs on trust that isn't always earned. Kenya Escrow removes the leap of faith.
The design constraint was friction: nobody should need an account to close a deal. A buyer creates a transaction, shares a link, pays via M-PESA — and funds sit safely until delivery is confirmed.
What I built
- No-signup deal flow — create a transaction, share a link, both parties track status without accounts.
- M-PESA escrow holding — C2B collection into a holding account with per-transaction reconciliation.
- Condition-based release — funds move only when delivery terms are confirmed by the buyer.
- Automated B2C payouts — confirmed deals release to the seller's phone via Daraja B2C, no manual processing.
- Dispute handling — a full state machine: open → evidence → review → resolution, with admin arbitration.
- Status notifications — SMS and WhatsApp updates at every state change so nobody refreshes a page.
- Audit trail — every state transition and payment event logged for dispute evidence.
Under the hood
Money movement is the easy part — the hard part is a state machine that can't lose or double-pay. Every transaction is an explicit state with guarded transitions; callbacks are idempotent; releases happen through queued B2C requests with status verification before completion.
Where it is now
Kenya Escrow is live, holding and releasing real funds. It demonstrates the part of M-PESA integration tutorials never cover — what happens after "payment received": escrow logic, disputes, payouts and an audit trail that stands up to scrutiny.
initiate
Like what you see?
Every project here started as a conversation. Tell me what you're building — I'll show you how it ships.