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.
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 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.
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.
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.
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.