Building USSD apps

Building USSD apps

What is USSD and why should you care part 1?

Dial *165# to access mobile money menu.

You have seen that on billboards, radio Ads, SMS promos, TV commercials, web banners and elsewhere. That’s because *165# brings in on average Ugx 100 billion every day for MTN.

But what most people don’t know is that Mobile money runs on mobile tech called USSD.

USSD is a session-based mobile application standard that runs on GSM networks. Think of it as the “web for mobile”. It has gained popularity recently thanks to growth in mobile money peer-to-peer transfers like MTN Uganda Mobile money, mobile loan apps, mobile insurance like Ayo and other gov’t services such as NIRA’s ID verification system.

This is mostly because USSD is simple, fast and universally accessible across all kinds of phones and mobile networks. It just works.

Have you developed USSD apps? Do you know of the untapped potential of USSD platform?

Building USSD apps part 2

The best way to explain how ussd apps work and how to build them is by contrasting them with what developers are already familiar with — web apps.

Web apps work in a very simple way; you have a client usually a browser that renders the UI via HTML templates and a server than handles and responds to client requests. The interaction between the client and server works via http protocol which has methods that define how client retrieves or sends data to the server.

USSD works in similar ways; it’s a client-server paradigm where the client (phone) makes request via USSD code to GSM network that in turn contacts the appropriate remote application server. The server responds with data back to the phone and this interaction can go on for up to 180 seconds.

Both are stateless protocols so it’s up the programmer to figure out how to handle or maintain state between sessions.

The differences here between web and USSD is that web supports multiple content types such as text, html, json, xml etc while USSD only supports one — string.

Secondly with USSD, the programer creates and renders the content from the server-side. This content is displayed as a flash message or pop-up window on the phone. It might have an input textbox if the app expects user to enter any alphanumeric characters. This of course has to be predefined in the response text from the server-side.

With web, the programmer might create content from the server-side as html template, but the client or browser renders it in a more user-friendly way. With Single Page Applications, the client UI is updated dynamically with content retrieved from the server via Ajax.

Building dynamic USSD apps is super easy with the right tools and strategies. Do you want to learn more?

Building USSD Apps part 3

So together with Ronald, we were able to build a fully-fledged m-sacco USSD app in Node.JS using Africa’s Talking awesome USSD APIs and the full code is available on github here

USSD app is really a finite state machine. That’s how you are able to implement routes and navigation. You can do things like going to the previous menu and even implement pagination if you want. Otherwise, if you don’t think of it as an FSM, then it can be incredibly hard to build a robust USSD App.


Leave a Reply