The long version: why an interoperable QR is public infrastructure rather than another silo, and what it cost to decide to hold balances.
Most Nigerians hold multiple bank accounts across different banks. Every transfer means typing a 10-digit account number, choosing the right bank from a growing list, and hoping you got it right, multiplied across every account you own.
It is the single most error-prone moment in everyday payments and it scales terribly to merchants, who have no terminal and no way to get paid except by dictating account details out loud. The rails to fix this already exist. NIBSS NQR is Nigeria's national interoperable QR standard, built on the same EMVCo spec that powers India's UPI QR. The standard was there. The experience and the resolution engine beneath it was not.
Shappay's central design decision: remove manual entry completely. Scan a QR or type a name@shappay address, and the resolution engine already knows who to pay and on which rail.
The MVP ships a static merchant QR where the payer enters the amount. The cheapest path to a working loop; print it once, accept money forever.
Every user gets a name@shappay virtual address; so P2P payments work by typing an ID, not only scanning. QR and VPA resolve through the same engine.
Funding and checkout are decoupled. Banks are touched once, topping up via Mono not on every payment. Checkout clears against wallet balance.
The original plan: scan a QR, resolve the merchant, fire a real-time transfer straight from the payer's linked bank. Validation proved that bet couldn't hold.
Providers like Mono DirectPay handle account linking, authorization, and payment initiation, but not persistent, real-time orchestration across multiple banks. Every payment would have inherited bank uptime, latency, high fees, and redirects.
Separate the two flows that were wrongly fused: funding ≠ checkout. Banks are touched when a user funds their wallet: not on every scan. Payments execute against wallet balance. For a high volume transaction startup, this architecture fits perfectly.
Holding balances raises the bar; naming the costs is part of owning the decision.
Storing value pulls in a sponsor-bank partnership and stronger compliance controls.
Users now trust Shappay with balances: raising the bar on security and withdrawals.
Internal balance tracking, ledger consistency, and failed-transfer recovery.
Liquidity movement, settlement timing, reversals, and reconciliation.
The pivot resolved into a clean separation of concerns. Being able to build each layer is what let me design the UX around its real constraints.
EMVCo / NQR payload generation and parsing, plus name@shappay VPA addressing: two ways to identify any destination.
Merchant and account resolution, settlement-preference routing, and rail selection.
Wallet infrastructure, bank transfer rails, and settlement execution.
scan / VPA → resolve → wallet debit → settlement
Funding via Mono DirectPay. Wallet, ledger, and outbound payouts via Anchor.
The resolution engine outputs a routing decision on every transaction. Three cases, evaluated in order:
Destination has a Shappay wallet. Execute instant ledger transfer on Anchor: wallet to wallet. Highest success rate, lowest latency.
Destination is an external merchant. Debit customer wallet on Anchor, trigger async outbound payout to merchant's bank account.
QR payload cannot be resolved. Surface manual bank transfer entry screen: always a path forward, never a dead end.
An interoperable QR is public infrastructure, it bridges the digital divide instead of building another silo.
Interoperable QR is a form of Digital Public Infrastructure; the same pattern that took India's UPI from zero to billions of transactions. The CDPI specification is already in discussion with 30+ central banks, Nigeria among them.
Shappay builds on NIBSS NQR as Nigeria's implementation and treats the design problem as: how do you make national-scale financial inclusion feel like scanning a square?
Link banks, fund wallet, pay by scanning a QR or typing name@shappay, settling to wallet or bank.
Amount embedded in the code for point-of-sale and one-tap checkout.
Payment links, invoice-bound codes, and a merchant dashboard with analytics.
An AI powered QR Soundbox that reads out payment received, available in multiple Nigerian languages. Can also respond with transaction summary.
The temptation in fintech is to design the screens and treat the rails as someone else's problem. Shappay only works because I refused that split. Understanding the TLV format changed the product: static-first stopped being a compromise and became the obvious wedge.
The hardest decisions weren't visual; the most important was admitting the first architecture was wrong. Re-drawing the line between funding and checkout, choosing to hold a wallet, deciding where settlement lands: those are the calls that turned a fragile demo into something shippable.