What’s the difference between USSD, MMI and SS codes?
So what are the codes with those */# characters called and what is an USSD code?
Every code that you enter over your phones keypad that contains asterisk (*) or hash (#) characters is an MMI code. MMI stands for Man-Machine-Interface. Even though most of these MMI codes look pretty similar, they fall into different groups with completely different actions. Some are just used locally on the device, some are sent to the SIM, others are sent to the network.
Different kinds of MMI codes
Supplementary Service (SS) codes
Those are the codes used to control, for example, call forwarding or number presentation. With *21*123456789# <SEND> you would instruct your phone to ask the network to forward all your incoming calls to the number 123456789. But this code is not sent directly to the network. Instead, it is parsed by the phone which then constructs an ASN.1 coded request to the network. These codes are hardcoded into every GSM/UMTS/LTE device worldwide and cannot be changed by your network operator.
Unstructured Supplementary Service Data (USSD) codes
If you enter a code that at least ends in a hash sign (and press <SEND>) and is not recognized by the phones MMI parser, the code will be sent to the network verbatim. It then depends on the network if this code is supported. One of the most used cases is a code for prepaid cards to check your balance. Many networks use something like *#100#. But it is really the choice of the network operator which code to use as long as it not already taken.
To read more of the article: What’s the difference between USSD, MMI and SS codes