#5 USSD Protocol

- July 4, 2020

We all have used the *123# kind of service numbers to query our SIM account balance and other services. All these service codes which start with * and end with # are called MMI codes (Man-Machine-Interface).



MMI codes can be broadly classified into 4 categories:

  1. Manufacturer defined codes: As the name suggests, these are coded by the manufacturer. For example, *#06# displays the IMEI number(s) of your handset.
  2. USSD codes (Unstructured Supplementary Service Data): These are provided by the network operator and involves some direct communication with the network. For example, *121#, *99# and so on…
  3. SS codes (Supplementary Service): These codes also involve communication with the network about features like call barring, forwarding. Hardcoded into every GSM/UMTS/LTE device worldwide and cannot be changed by the network operator.
  4. SIM Control Codes: These codes are used, for example, to change your SIMs PIN code, status information, etc.

To know more about MMI codes in GSM/UMTS/LTE, refer to this document from ETSI

Now let’s get into our main topic about USSD. According to Wikipedia,

Unstructured Supplementary Service Data (USSD), sometimes referred to as “Quick Codes” or “Feature codes”, is a communications protocol used by GSM cellular telephones to communicate with the mobile network operator’s computers. USSD can be used for WAP browsing, prepaid callback service, mobile-money services, location-based content services, menu-based information services, and as part of configuring the phone on the network

Apart from offering services specific to the mobile network( like balance enquiry, VAS), in 2011-13, telcos have come forward to offer social media services like Facebook and Whatsapp via USSD at a nominal price of Rs.30-50/- per month. Back in those days, when data was quite expensive, this seemed to be a very good deal. But the idea for some reason didn’t survive long, maybe because of elementary UI provided by USSD or frequent failure of the USSD communication.

The *99# service

*99# provides UPI services via USSD without the need for a smartphone and internet connectivity. This service would really be handy to do payments when you don’t have data.

The service works perfectly well but USSD has its own limitations. UI is elementary. Query and response would take about 2-3s. Making a UPI payment would involve at least 5-8 steps and it’s not only about the time taken but also it will be really frustrating if it fails at an intermediate step. Failure becomes more probable as the no. of steps increase in a session.