

2023 · Nigeria Currency Crisis
Ticket IT
Cash, without the cash.
A disposable 9-digit bearer instrument for a country where connectivity isn't guaranteed. No account. No wallet. The code is the money.
No real money · *920# emulator
- Instrument
- 9-digit bearer code
- Custody
- None — no wallet
- Rails
- Bank → code → bank
- Access
- Web + USSD *920#
- Keyspace
- 1,000,000,000
- Status
- Shelved · Demo live
The founding constraint
Money that had moved on a screen was not money anyone would take.
In late 2022 the Central Bank of Nigeria redesigned the 200, 500, and 1,000 naira notes and tried to kill the old ones on a tight deadline. New notes did not arrive. Banks capped withdrawals. Markets froze. I was in my fourth year of Economics at Obafemi Awolowo University. I queued for two weeks and watched branches run out of cash before noon.
Opay, Moniepoint, Kuda, and a wave of POS agents filled the vacuum — and built Nigeria's current fintech boom on the back of that forced migration. Every one of those rails still assumed a smartphone, a stable connection, and a shared provider. Cash never had those requirements. That is why cash was so hard to replace, and why the people the crisis hurt most were the last to be served.
I stood in a market for two hours because a transfer I'd sent — receipt and all — meant nothing to a seller who didn't trust the alert and didn't have the receiving bank's app.
What the new rails required
Ticket IT had to work where those assumptions failed.
- 01
A smartphone
capable of running an app
- 02
A stable connection
in a market 4G never reaches
- 03
The same provider
or a shared trust in one app
The instrument
Bank to code to bank. Value never sits in the middle.
Flutterwave moves naira in on generate and out on cash out. There is no Ticket IT account and no Ticket IT wallet. The 9-digit code is the only thing that travels between people — said aloud, written down, or typed. Web and USSD run the same five operations.
- 01
Generate
Enter an amount and pay from your bank via Flutterwave. When the transfer clears, Ticket IT mints a 9-digit bearer code. That code is the money until someone cashes it out. No signup.
- 02
Hand off
Give the code like cash: say it aloud, write it down, or type it. The other person does not need a Ticket IT account, a smartphone, or the same bank.
- 03
Check
Anyone can look up a code to see if it is valid and what value it holds — without claiming it. A seller can confirm payment before handing over goods.
- 04
Revalidate
If a code was overheard or shared too early, the holder can destroy it and mint a fresh 9-digit code with the same value. The old digits die. This is protection, not cash out.
- 05
Cash out
The recipient enters the code and their bank details. One successful payout pays the bank and destroys the code permanently. It does not mint a new code in their name.
In the field
The product had to survive a stall and a keypad.
Field frames for the handoff. The live mockup is where you walk the five operations yourself.

Hand off
Say it, write it, type it. The other person does not need an account, a smartphone, or the same bank.

Channel · Try it
*920# is not a lite version. It is the product.
Same five operations on web and USSD — generate, cash out, check, revalidate, exit. The React mockup walks both channels with test codes and simulated Flutterwave. No real naira. No leased carrier.
Open the live mockupDiligence
A bearer instrument has to survive two attackers.
Whoever holds the digits can cash them out. Guardrails had to cover live guessing against the session, and an offline dump of the table. A single hash does not do both.
01 — HMAC, not a plain hash
The 9-digit code was generated from a cryptographically secure random source and stored as an HMAC keyed with a server-side secret held outside the database. A plain hash of a 9-digit code is still brute-forceable offline if a database ever leaked — a billion values is hashable on ordinary hardware. Keying the hash with a secret the database doesn't contain closes that gap. Combined with session lockouts, it resisted both online guessing and offline dumps.
02 — Why not a QR code?
QR would have removed the type-it-in friction, but it broke the constraint that mattered most: universal access. Many people in the informal economy carry phones with no camera, and USSD can't render a QR at all. Generating or scanning a QR would require an app or website — exactly the dependency Ticket IT existed to remove. A numeric code can be read aloud, typed into *920#, or entered on the simplest phone.
03 — Why 9 digits — not 12, not two codes
A longer code would have added security and a real amount of friction — more to read over the counter, more to mistype on a USSD keypad. Nine digits stayed short enough to communicate face-to-face the way a price does, while still giving a billion-value keyspace so guessing stayed impractical. Length was not asked to do the security work alone.
Why it did not ship
The product was solvable. The capital structure was not — not from a student desk.
I built Ticket IT because I had stood in that market, not because I was chasing a round. Solving it for real meant costs that had nothing to do with whether the idea was any good. Each wall was large enough on its own. Together they closed the window.
USSD lease
₦600k+
Down payment to an MNO for a functioning short code — before a single ticket moved.
Keep-alive
~₦600k / mo
Maintenance just to keep *920# on the air. The access channel was also the burn.
Processing
Fee on every hop
Flutterwave on generate and on cash out. A product that had to feel like cash carried a rail tax on both ends.
Legal surface
Bearer risk
A code anyone can claim is attractive to laundering and advance-fee fraud. A solo founder is a poor absorber of that exposure.
The regulatory wall
Ticket IT never held a wallet. It still moves customer money. CBN does not treat that as a prototype.
PSSP
Payment Solution Service Provider
₦250m
Not enough
Lightest CBN tier. Does not authorize moving customer funds at the scale this product needs.
MMO
Mobile Money Operator
₦2bn + ₦2bn escrow
The actual license
Covers the wallet-adjacent function Ticket IT needs. Under the holding-company structure, the ₦2bn minimum applies per subsidiary — not once.
PSB
Payment Service Bank
₦5bn
Institutional
A different company class. Not seed-stage capital.
Application fees sit on top of the headline deposit. The deposit is refundable only if the license is granted. I underweighted this early. Investors who stayed lukewarm were pricing a market already being absorbed by licensed fintechs — and an infrastructure cost that wanted a financial model, not a working prototype. The crisis eased. Banks restocked. The window closed.
What it taught me
Three lessons that still set the standard.
01
The constraint is the product
USSD was not a feature bolted on later — it was why Ticket IT existed. Design for the user the obvious solution quietly excludes.
02
Built is not the same as fundable
The code solved the trust gap. The business needed unit economics and a regulatory path — ₦600k/mo rails plus CBN capital in the billions. I had validated the problem, not the business.
03
Urgency expires. Spend it.
Ticket IT answered a six-week emergency. I kept fundraising after banks restocked. Now a narrowing window forces scope: ship the smallest proof inside the window.
Sources — the 2023 naira crisis
