
There is a quiet assumption baked into most wallet roadmaps: that "mobile" means "smartphone app." In the markets where mobile money matters most, that assumption writes off the majority of the addressable population on day one. A large share of customers still carry a feature phone. Many who own a smartphone ration their data so carefully that an app they cannot afford to refresh is an app they do not use. If your wallet ships only as an app, you have not built for your market — you have built for the slice of it that already looks like you.
USSD is how you reach the rest. It is unglamorous, constrained, and decades old, and it is the single most important channel decision an inclusion-focused operator makes. Here is what it is, why it works, and what it takes to do it properly.
What USSD actually is
USSD — Unstructured Supplementary Service Data — is the technology behind the *123# codes you dial to check airtime. Unlike SMS, it is session-based and real-time: when a customer dials a code, the network opens a live session between the handset and a backend service, and a short conversation happens — menu, choice, menu, choice — until the task is done. It runs on the signalling channel that every GSM phone has had since the 1990s, which is exactly why it works on a twenty-dollar handset with no internet and no app.
The customer experience is a sequence of numbered menus. Dial the code. 1 for Send Money. Enter the number. Enter the amount. Confirm with your PIN. No download, no data bundle, no account setup beyond the wallet itself. For a huge population, this is not a fallback — it is the primary, and often only, way they will ever touch a digital financial service.
The whole wallet, on a dial-code
The mistake operators make is treating USSD as a cut-down menu — balance check and maybe a send, with "the real product" reserved for the app. Done properly, USSD runs the entire wallet: send money, withdraw at an agent, Pay Bill, Buy Goods, buy airtime and bundles, check balance, pull a mini-statement, even open savings or request a loan. Every step is PIN-gated and confirmed before it posts.
The detail that matters most is invisible to the customer: a USSD send and an app send are the same transaction, on the same ledger, with the same limits, the same KYC tier and the same audit trail. The channel is a different door into one house. This is not an implementation convenience — it is a correctness guarantee. If USSD and the app were separate code paths with separate rules, they would drift, and a customer's limit on one channel would differ from the other, which is exactly the kind of gap that becomes a fraud vector and a compliance finding.
The constraints that shape good USSD design
USSD is a hostile design medium, and respecting its constraints is what separates a channel people use from one they abandon mid-session.
- Tiny screens, short strings. A USSD page is a handful of lines of plain text. There is no scrolling on many handsets, no images, no styling. Every menu has to earn its characters. Long option lists must paginate with a "0. Next" convention that feels native to users who have done this for years.
- Sessions time out. Networks close idle sessions after a short, operator-controlled window — often well under a couple of minutes. A flow that asks too many questions will time out before the customer finishes, dropping them with no feedback. Good USSD design ruthlessly minimises steps and never makes the customer fetch information mid-flow that the system already knows.
- Latency is felt. Between each menu, the customer is staring at a "loading" state on a slow signalling channel. Every backend round-trip the menu engine makes is time the customer spends wondering if it broke. The engine has to be fast and has to fail clearly.
- State lives server-side. The handset is dumb; it remembers nothing between pages. The menu engine must hold the conversation state — where the customer is, what they have entered — keyed to the session, and reconstruct it on every step. Get the state machine wrong and customers re-enter data or land on the wrong screen.
How it fits the wider network
USSD does not stand alone; it is one corner of a system that has to hang together.
- The gateway. A telco or USSD aggregator forwards each session step to a single backend endpoint. The menu engine interprets the input, advances the state machine, and returns the next screen — or a final confirmation. Supporting multiple aggregators behind one engine is what lets the same wallet run across countries and networks.
- The agent network. A digital balance is only useful if it can become cash and back. Agents are what make USSD complete: a customer cashes in at an agent, transacts over USSD, and cashes out at another agent. Without the float network, USSD users are stranded with value they cannot spend in the physical economy most of them still live in.
- Language. Menus must meet customers in the language they think in. Multilingual menu trees are not a nice-to-have in a market with several major languages; they are the difference between a channel that includes people and one that quietly excludes them.
USSD versus the app: not a hierarchy, a portfolio
It is tempting to rank channels — app best, web next, USSD last. That ranking encodes the bias that caused the problem. The right framing is a portfolio where each channel serves a population and a moment. The app is richer for those who have the device and the data. The web serves desktop and corporate users. USSD serves the feature phone, the rationed data plan, the patchy-coverage moment when an app will not load but a signalling session will. A serious operator runs all of them onto one core and lets customers self-select. The platform's job is to make sure they are the same wallet underneath.
Inclusion is an architecture decision
"Financial inclusion" appears in every mobile money pitch deck, usually as a value, rarely as a constraint that shapes the build. But inclusion is not a tagline you add at the end — it is a decision you make at the start, when you choose whether USSD is a first-class channel with the full product behind it or an afterthought with a balance check. The markets that leapfrogged into mobile money did so on USSD, because that is what was in people's hands. Building for them means building the channel they actually have.
PesaBridge treats USSD as a first-class citizen: a full menu engine over a pluggable gateway, multilingual, agent-backed, and running the exact same balanced ledger as every other channel — so the customer on a feature phone gets the whole wallet, not a polite subset of it.



