USSD (Unstructured Supplementary Service Data) is a Global System for Mobile Communications (GSM) protocol that is used to send text messages. USSD is similar to Short Message Service (SMS).
USSD uses codes made up of the characters that are available on a
mobile phone. A USSD message, which can be up to 182 characters long,
establishes a real-time communication session between the phone and
another device -- typically, a network or server.
USSD can be used for Wireless Application Protocol (WAP) browsing, mobile money services, prepaid callback service, menu-based information services and location-based content services.
With USSD, users interact directly from their mobile phones by making
selections from various menus. Unlike an SMS message, during a USSD
session, a USSD message creates a real-time connection. This means USSD
enables two-way communication of information, as long as the
communication line stays open. As such, queries and answers are nearly
instantaneous.
How USSD works
Typically, USSD involves a query from a mobile phone user, such as a
request for a bank account balance. Once the user sends the request,
the USSD gateway forwards it to the user's USSD application, which
responds to the request.
The process is then repeated in reverse, i.e., the response goes
back to the USSD gateway, which displays the content of that response on
the screen of the user's mobile phone. Generally, the responses, which
contain a maximum of 182 alphanumeric characters, are sent in a format
that's easy to display. The user sends and receives data by dialing a
specific short code -- usually, five numbers.
USSD applications run on the network, not on a user's device. As
such, they don't have to be installed on the user's phone, which is an
advantage for users with feature phones that have limited storage space.
USSD apps are instantly available to every subscriber the moment
they're deployed to a network.
How USSD is used
USSD is used for several purposes, including the following:
- Mobile banking. Unlike banking apps that need
internet access and smartphone functionality, USSD banking can work on
any mobile device, including feature phones.
- Network configuration and requests. USSD is used
to configure a user's mobile device on the network. It also provides a
menu of service options a user can choose from for such things as buying
airtime or requesting account balances.
- Customer update requests. USSD can integrate with enterprise resource planning (ERP) and customer relationship management (CRM) systems to request updated customer information. This enables better customer service and data accuracy.
- Marketing surveys. USSD can be used for mobile
marketing. For example, organizations can send basic marketing surveys
that users can respond to immediately, enabling companies to get
customer feedback in real time.
- Callback services. Service organizations, such as
insurance providers and financial services companies, can use USSD to
determine customers' interests by enabling them to request callbacks
after they present their offers.
- Order confirmations. Food delivery providers can
use USSD to enable two-way communication between customers placing
orders and the vendors to alert customers when their orders are on the
way.
- Coupons and vouchers. Retailers can use USSD to communicate special offers to customers, as well as send coupons and vouchers.
USSD payments
USSD payment processing is performed by sending a text message to a
service provider. When the service provider receives the text message,
it either charges the amount of the purchase to an online payment system
or adds the amount to the user's phone bill.
The merchant then releases the goods or services, and the money is
transferred to the company's account. The delivery of digital goods is
often conducted by Multimedia Messaging Service (MMS)
that enables files to be sent to users with SMS. If the user bought a
physical item, the receipt can be sent via SMS or MMS. Most purchases
made using USSD or SMS occur in Europe and Asia.
Technical details
Most GSM phones have USSD capability. USSD is usually associated with real-time or instant messaging (IM) services. USSD does not offer a store-and-forward capability, as is typical of other short message protocols, such as SMS.
USSD services use the existing architecture of GSM networks. A user
dialing a USSD service code begins a dialogue with a USSD app on a
mobile network. The network node
can be a mobile switching center, visitor location register, home
locator register or other network entity, such as an application
platform, which has access to the specific USSD service.
Technically, USSD enables the mobile station user and a public land
mobile network operator-defined application to communicate in a way
that's transparent to the mobile station user and to intermediate
network entities.
A typical USSD message begins with an asterisk (*) followed by
digits that comprise commands or data. Groups of digits can be separated
by additional asterisks. The message is ended with a hashtag (#).
Differences between USSD, MMI and SS codes
Every code that a user enters via the keypad on his mobile phone
that contains * or # characters is a man-machine interface (MMI) code.
Most of these MMI codes look similar, but they're classified into
different groups and have different actions. Some are only used locally
on the device, while some are sent to the subscriber identity module (SIM) and others are sent to the network.
The different type of MMI codes are the following.
Supplementary service (SS) codes
Those codes control call forwarding or number presentation. For instance, using *21*987654321# <SEND>, a
user would direct his phone to ask the network to forward all his
incoming calls to the phone number 987654321. However, this code isn't
sent directly to the network, rather it's interpreted by the phone,
which then constructs an Abstract Syntax Notation One (ASN.1) coded
request to the network.
These codes, which are hardcoded into every GSM, Universal Mobile Telecommunications System (UMTS) and Long-Term Evolution (LTE) device in the world, can't be changed by a network operator.
USSD codes
If a user enters a code that at least ends in a hashtag -- and presses <SEND> -- but it isn't recognized by the phone's MMI interpreter, the code will then be sent to the network verbatim.
It then depends on whether the network supports this code. One of
the most used cases is a code for prepaid cards that users can use to
check their balances. Several networks use something similar to *#100#. However, the network operator really decides which code to use if it's not already taken.
Therefore, entering *20*1234# <SEND> or *21*1234# <SEND> would
do two different things: The first code would be sent to the network to
be processed further -- most likely returning an error -- while the
phone would interpret the second code and send a structured request for
activation of call forwarding to the network.
Manufacturer-defined MMI codes
These codes, which are specific to the phone models, have been built
in by the manufacturers to activate service menus or reset devices, for
example. These codes also contain * and # characters.
Because the codes aren't being sent to the network, a user doesn't have to press the <SEND> key
at the end as the codes are executed as soon as the user enters the
last digit or character. However, every manufacturer of GSM/UMTS/LTE
phones must implement *#06#. This code shows a device's international mobile equipment identifier.
USSD gateway
Also called a USSD center, a USSD gateway service transmits USSD messages from the signaling network to a service application and vice versa.
A USSD gateway is based on the ability of the delivery agent or the
source to send and receive USSD messages. USSD messages travel over GSM
signaling channels and are used to query information and generate
services. Unlike similar services, such as SMS and MMS, that are based
on store-and-forward technology, USSD establishes a real-time session
between a mobile handset and the application handling the service.