USSD API

USSD Shortcodes and API for Businesses in Ghana

Build USSD apps in Ghana with a shared or dedicated shortcode. Multi-level menus, session management and webhook callbacks, with the payment gateway of your choice. Reach every phone on MTN, Telecel and AT, 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 and AT. 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 and AT.

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.

USSD API: handle 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
Read the USSD API docs →
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 pay bills and check balances from any phone, without an app, through the payment gateway of your choice.

How USSD powers mobile money →

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.

Shared shortcode pricing

Get started with a shared extension on *928#. All prices include coverage on MTN, Telecel and AT.

*928*5#
1 Digit Extension
GHS 900
per month
All networks included. Billed monthly.
*928*624#
3 Digits Extension
GHS 300
per month
All networks included. Billed monthly.

Need your own dedicated shortcode? Get a custom *XXX# for your business.

Contact Sales →

Getting a USSD code with Arkesel

Shared extension

Arkesel already holds the *928# code on MTN, Telecel and AT. We give your business an extension on it, such as *928*24#. You make no application of your own, and your code can go live the same day.

Dedicated shortcode

A code of your own, such as *XXX#, which belongs to your business. Arkesel applies to the networks on your behalf. If you already hold an NCA certificate for the code, share it with an authorisation letter and we complete the forms. If you don't, we help you apply for one. Approval takes 1–2 months, because each network must approve the code.

Why you need a USSD aggregator

Every USSD code in Ghana, shared or dedicated, runs through a licensed value-added service (VAS) provider that connects it to the networks. Arkesel is that provider, so one integration covers MTN, Telecel and AT.

Available across Ghana

USSD works on every mobile network in Ghana.

MTN
MTN Ghana
Telecel
Telecel Ghana
AT
AT Ghana

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 extension to go live the same day, or request a dedicated short code. Network approval for a dedicated code takes 1–2 months.

3

Build Your Menu

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

USSD questions

What is the difference between a shared and a dedicated USSD code?

A shared code is an extension on Arkesel's *928# code, such as *928*24#. A dedicated code is a code of your own, such as *XXX#, which belongs to your business.

How long does it take to go live?

A shared extension can go live the same day. A dedicated shortcode takes 1–2 months, because each network must approve it. Arkesel handles the application for you.

Do I need a USSD aggregator?

Yes. Every USSD code in Ghana runs through a licensed value-added service (VAS) provider that connects it to the networks. Arkesel is that provider, for both shared and dedicated codes.

Which networks does it work on?

MTN, Telecel and AT.

Do my users need internet?

No. USSD runs over the mobile network itself, so it works on any phone, including feature phones, with no data connection.

If I leave Arkesel, do I keep my code?

A dedicated shortcode belongs to your business, so you keep it. A shared extension sits on Arkesel's *928# code.

Can my USSD menu take Mobile Money payments?

Yes, through the payment gateway of your choice. Your developer connects the gateway to your USSD menu.

How much does it cost?

See current prices on our pricing page →

Start building USSD apps today

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

Scroll to Top