USSD API

Build Interactive Mobile Menus

Build USSD apps in Ghana with shared or dedicated shortcodes. Mobile money integration, multi-level USSD menus, and session management — reach every phone on every network, no internet required.

MTN GH 4G  12:34
*928*123#
Welcome to MyApp
1. Check Balance
2. Make Payment
3. Account Info
4. Transaction History
Reply with 1, 2, 3 or 4

Trusted by 10,000+ businesses in Ghana, Nigeria, Tanzania & South Africa

Ebits Arkbank OyaGhana UDS AppSol ShrinQ Ashfoam Tospino

Works on All Phones

Feature phones, smartphones, and everything in between. No app install required.

Zero Internet Needed

USSD runs on the GSM network. Users need only a basic cellular signal to interact.

All Major Networks

MTN, Telecel, AirtelTigo, and all other carriers. One integration, full coverage.

Real-time Sessions

Instant back-and-forth communication. Each request-response happens in under 2 seconds.

From dial to done in seconds

USSD creates a real-time session between the user's phone and your server. No app downloads, no internet -- just instant interaction.

1

User Dials Code

User dials your USSD short code from any phone on any network.

2

Server Receives Request

Arkesel sends a webhook to your server with the session data.

3

You Return a Menu

Your server responds with menu text. We display it on the user's phone.

4

User Navigates

User selects an option. The cycle repeats for multi-level menus.

5

Session Completes

When done, your server sends the final response and the session ends.

Everything you need to build USSD apps

A complete toolkit for building, managing, and scaling interactive USSD services.

Multi-level Menus

Build nested menus with unlimited depth. Guide users through complex flows with simple numbered options.

Session Management

Automatic session tracking with configurable timeouts. Resume interrupted sessions without losing user context.

All Network Support

Single integration works across MTN, Telecel, AirtelTigo, and all other carriers in your coverage area.

Webhook Callbacks

Receive real-time notifications for session events. Your server controls the flow with simple HTTP responses.

Dynamic Responses

Generate menu content on the fly. Pull data from your database, APIs, or any source to personalize each session.

Shared & Dedicated Codes

Start with a shared short code for testing, then upgrade to a dedicated code for your production service.

Handle USSD sessions with simple webhooks

Your server receives a POST request for each user interaction. Respond with the next menu or a final message. That's the entire integration.

  • Simple request/response pattern
  • Session ID tracks multi-step flows
  • Works with any language or framework
  • No SDK required -- just HTTP
ussd_callback.py
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/ussd/callback", methods=["POST"])
def ussd_callback():
    session_id = request.form["sessionId"]
    service_code = request.form["serviceCode"]
    phone = request.form["phoneNumber"]
    text = request.form["text"]

    if text == "":
        # First request -- show main menu
        response = "CON Welcome to MyApp\n"
        response += "1. Check Balance\n"
        response += "2. Make Payment\n"
        response += "3. Account Info"
    elif text == "1":
        # End session with balance
        response = "END Your balance is GHS 150.00"
    else:
        response = "END Invalid option"

    return response
const express = require("express");
const app = express();

app.use(express.urlencoded({ extended: true }));

app.post("/ussd/callback", (req, res) => {
  const { sessionId, serviceCode,
          phoneNumber, text } = req.body;

  let response = "";

  if (text === "") {
    // First request -- show main menu
    response = `CON Welcome to MyApp
1. Check Balance
2. Make Payment
3. Account Info`;
  } else if (text === "1") {
    // End session with balance
    response = "END Your balance is GHS 150.00";
  } else {
    response = "END Invalid option";
  }

  res.send(response);
});

app.listen(3000);
<?php

$sessionId   = $_POST["sessionId"];
$serviceCode = $_POST["serviceCode"];
$phone       = $_POST["phoneNumber"];
$text        = $_POST["text"];

if ($text == "") {
    // First request -- show main menu
    $response  = "CON Welcome to MyApp\n";
    $response .= "1. Check Balance\n";
    $response .= "2. Make Payment\n";
    $response .= "3. Account Info";
} elseif ($text == "1") {
    // End session with balance
    $response = "END Your balance is GHS 150.00";
} else {
    $response = "END Invalid option";
}

header("Content-type: text/plain");
echo $response;

What you can build with USSD

USSD powers critical services in Ghana, Nigeria, Tanzania & South Africa. Here are the most common applications.

Mobile Money & Payments

Let users send money, pay bills, and check balances from any phone without downloading an app.

Surveys & Feedback

Collect structured data from users in the field. Higher completion rates than SMS-based surveys.

Balance Inquiries

Give customers instant access to their account balance, data usage, or loyalty points via a short code.

Customer Self-Service

Reduce call center volume by letting customers update profiles, reset PINs, and manage subscriptions.

Airtime Top-up

Enable airtime purchases and data bundle subscriptions directly through USSD menus.

Appointment Booking

Let patients, clients, or customers book and confirm appointments without internet access.

Reach users that SMS and apps can't

USSD is the most inclusive communication channel in Africa. While apps require smartphones and internet, USSD works on every phone with a SIM card.

  • No internet connection required

    USSD runs on GSM signaling, not data. Users in areas with no internet coverage can still interact with your service.

  • Works on feature phones

    Over 40% of mobile users in Africa use feature phones. USSD is the only way to reach them with interactive services.

  • Higher engagement than SMS

    USSD sessions are interactive and real-time. Users navigate menus, make choices, and get instant responses -- unlike one-way SMS.

  • No app install friction

    No download, no updates, no storage space. Users dial a code and start using your service immediately.

100%

Phone Compatibility

Works on every phone with a SIM card, from the simplest feature phone to the latest smartphone.

0 MB

Data Required

Zero internet needed. USSD sessions use GSM signaling, not mobile data or Wi-Fi.

<2s

Response Time

Real-time, synchronous sessions. Each menu response arrives in under 2 seconds.

40%+

Feature Phone Users

Percentage of mobile users in Sub-Saharan Africa on feature phones -- unreachable by apps.

Go live in 3 steps

From sign-up to your first USSD session in minutes. No sales calls, no contracts.

1

Create Your Account

Sign up for free, get your API key, and access the developer dashboard instantly.

2

Get a USSD Code

Choose a shared code to start testing immediately, or request a dedicated short code for production.

3

Build Your Menu

Set up your webhook endpoint, define your menu logic, and start receiving live USSD sessions.

Start building USSD apps today

Free to sign up. Get a shared USSD code and start testing your menus in minutes.

Scroll to Top