Back to Technical Articles
Engineering⚙️ Technical#USSD#Nigeria#financial inclusion#mobile#Africa Tech Stack#telecoms#feature phones#Africa-first

USSD Is Not Dead: Building Inclusive Applications for Every Nigerian Phone

Ekfix TeamVerified Feb 19, 2026

USSD reaches every GSM handset in Nigeria — from a ₦5,000 feature phone to a ₦700,000 smartphone. It works without internet. It works without a data plan. For Nigerians outside the smartphone norm or in areas with unreliable data, USSD is not a legacy technology. It is the only technology.

EngineeringUSSD Is Not Dead: BuildingInclusive Applications forEvery Nigerian PhoneEkfix

USSD Is Not Dead: Building Inclusive Applications for Every Nigerian Phone

The technology world's narrative around digital inclusion in Africa typically invokes smartphones, mobile data, and applications. The implicit assumption is that the inclusion problem is about getting people onto smartphones so they can access modern software.

This narrative is partly correct and partly a problem. In 2026, Nigerian smartphone penetration is around 40–45% of the adult population. The 55–60% of adults who primarily use feature phones are not accessing financial services, agricultural information systems, healthcare registration portals, or business automation through mobile apps. They are accessing them — where those systems exist — through USSD.

USSD (Unstructured Supplementary Service Data) is the protocol that powers *737# (GTBank), *966# (Zenith), *901# (Access Bank), and hundreds of other session-based interactive menus that work on any GSM handset, with or without data, with or without a data plan. The session is carried over the signalling channel of the GSM network — not data. It works with 100% of active SIM cards.


How USSD Works

USSD is a session-based, request-response protocol. A user dials a USSD code (7371# or *820#, for example). The telecom operator's network receives the code, identifies which registered application it maps to, and sends an HTTP request to the application's USSD gateway. The gateway processes the request and returns a text response with a menu of options or a final message.

The session persists until either the application sends a response marked "release" (session ended) or the user terminates the session. Within the session, the user selects options (pressing 1, 2, 3) or enters data (typing account numbers, amounts) and the gateway forwards each input to the application.

Technical flow:

  1. User dials short code
  2. MNO receives the request and sends an HTTP POST to the registered callback URL with: session ID, phone number, USSD input
  3. Application processes input and returns: response text + action (continue session or release)
  4. MNO sends response text to the user's handset as a new menu screen
  5. Repeat until session release

The USSD application is, architecturally, a simple state machine: given the current session state and the user's input, determine the next response.

Session constraints:

  • Each USSD response has a maximum length (typically 182 characters)
  • No images, no formatting beyond text and line breaks
  • Sessions time out if there is no user input (typically 30–60 seconds)
  • Most MNO networks charge the user nothing for USSD sessions (network cost to business is small)

Access Options for Developers

Nigerian MNOs do not provide direct USSD gateway API access to individual developers. Access is through USSD aggregators who have licensed short codes and gateway agreements:

Africa's Talking: Supports Nigeria (MTN, Airtel, Glo). REST API for USSD. Well-documented, sandboxed development environment, pay-per-session pricing. The leading choice for Nigerian USSD development.

Termii: Nigerian company with USSD, SMS, and voice APIs. Coverage from major Nigerian MNOs. Competitive pricing, local support.

Twilio / Vonage: Twilio acquired USSD capability in some African markets but Nigerian coverage is more limited than Africa's Talking.

Short code types:

  • Branded short codes (*900#, *800# style): Exclusive to one service, directly dialled. Application must clear code with NCC and allocate through an MNO agreement. Requires significant volume commitment.
  • Shared USSD access codes: Aggregator provides a shared code with a unique sub-code for each application (384YOUR_CODE#). Lower barrier to entry, suitable for most B2B applications.

Where USSD Beats Smartphone Apps

Rural and semi-urban Nigeria: Smartphones with app stores, data plans, and reliable connectivity. Outside Lagos, Abuja, Port Harcourt, Kano, and Ibadan urban areas, feature phones with USSD are the primary mobile interface for hundreds of millions of Nigerians.

Low-literacy users: A USSD menu with numbered options (1. Check Balance, 2. Transfer Money, 3. Buy Airtime) requires less literacy and cognitive load than a touchscreen application. Voice prompts can further reduce literacy dependency but add complexity.

Transactions without internet: A farmer in Kaduna checking crop price information, making a mobile money transfer, or reporting a field activity against a data collection programme can do all of this on USSD without internet. The same farmer with a smartphone but no data bundle cannot access any of these services.

High-security transactions: Some bank customers prefer completing high-value transactions on USSD rather than mobile apps because USSD is session-isolated — there is no persistent application with a session token, no stored credentials, and the transaction is initiated by the user's deliberate dial. USSD is less exposed to in-app malware that targets stored credentials.

Operational applications in constrained environments: Warehouse staff with basic handsets doing stock confirmation. Field agents confirming visits. Agricultural extension workers recording farm activity data. Factory floor workers confirming production counts. These operational touch-points work on USSD without requiring device procurement, app installation, or data plans.


Practical Applications

Mobile money and banking: The established use case. Every major Nigerian bank and mobile money provider offers USSD. This is not where custom development opportunity lies — it is the example that proves the infrastructure works.

Agricultural data collection systems: Smallholder farmers reporting harvest quantities, accessing market prices, receiving agronomic advice, confirming input deliveries. This market is deeply underserved by smartphone applications and well-served by USSD.

Health system integration: Community health workers in primary care settings confirming patient registrations, reporting vital statistics, accessing drug stock information — all without internet connectivity.

Loyalty and verification: Retail chains with coverage across urban and rural Nigeria using USSD for loyalty point redemption and product authenticity verification (*code# + product serial number → "Genuine product, registered to Lagos retailer, valid until 2027").

Microfinance and savings groups: Group savings (ajo/esusu) management — contribution confirmation, balance check, payout scheduling — accessible to all group members regardless of smartphone ownership.


Building a USSD Application

A USSD application is built as a stateless HTTP endpoint that receives POST requests from the aggregator and returns text responses. State must be stored server-side (using the session ID as the key) because USSD sessions carry no state information beyond the current input.

Basic Node.js USSD handler structure:

app.post('/ussd', async (req, res) => {
  const { sessionId, phoneNumber, serviceCode, text } = req.body;
  
  // text contains all previous inputs joined by '*'
  // e.g., '' = first access, '1' = selected option 1, '1*0711234567' = option 1 then entered number
  const inputs = text ? text.split('*') : [];
  const level = inputs.length;
  
  let response = '';
  
  if (level === 0) {
    // Welcome menu
    response = 'CON Welcome to MyService\n1. Check Balance\n2. Transfer\n3. Exit';
  } else if (inputs[0] === '1') {
    // Balance check
    const balance = await getBalance(phoneNumber);
    response = `END Your balance is ₦${balance.toLocaleString()}`;
  } else if (inputs[0] === '2' && level === 1) {
    response = 'CON Enter recipient phone number:';
  } else if (inputs[0] === '2' && level === 2) {
    response = 'CON Enter amount (₦):';
  } else if (inputs[0] === '2' && level === 3) {
    const [, recipientPhone, amount] = inputs;
    // Process transfer
    response = `END Transfer of ₦${amount} to ${recipientPhone} initiated.`;
  }
  
  res.set('Content-Type', 'text/plain');
  res.send(response);
  // CON continues the session, END releases it
});

The session state pattern (tracking level through input history) is the core of USSD development. For complex applications with branching, a state machine library or a session state stored in Redis/database is cleaner than string parsing.


The Combined Architecture: USSD + API + Smartphone App

The modern architecture for inclusive Nigerian applications combines:

  • USSD for feature phone users and no-data scenarios
  • PWA or native app for smartphone users
  • A single backend API that both interfaces call

The same user might check their balance on USSD while their data is off and use the mobile app when they have WiFi. The same operational data is available through both interfaces. Building the USSD and app as separate systems with separate data sources creates maintenance cost and data inconsistency — building them as interfaces to the same API backend is the correct architecture.

The incremental cost of adding a USSD layer to a mobile application backend is primarily integration and state management logic. The reach it adds — to 55% of mobile users who cannot or do not use smartphone applications — is substantial for products where rural or low-income market penetration is a strategic objective.


Related Articles