USSD Menu Design: What a USSD Menu Is and 10 Best Practices

USSD Menu Design: What a USSD Menu Is and 10 Best Practices

USSD menu design example: a short five-option USSD menu on a feature phone beside a wordy, rejected menu screen

A USSD menu is the list of numbered options a customer sees after dialling a short code, and USSD menu design decides whether they reach the final screen or give up halfway. If you are building a balance check, a payment flow or a sign-up service, every extra word and every extra screen costs you completions.

What is a USSD menu?

A USSD menu is a text interface that runs over the mobile network rather than the internet. As CGAP puts it, when you dial a number that starts with * and ends with #, you are using USSD.

A session moves one screen at a time:

  1. The customer dials your code, for example *928*123#.
  2. A screen appears with numbered options.
  3. The customer replies with a number.
  4. Your service sends back the next screen.
  5. The cycle repeats until a final message closes the session.

Because it needs no app and no mobile data, a USSD menu works on feature phones as well as smartphones, and your customers pay nothing in data to use it. That reach makes USSD a natural fit for mobile money and self-service products. The mobile money market these menus serve is large: as reported by Ecofin Agency, citing GSMA, mobile money services in Africa handled $1.105 trillion in transactions in 2024, a 15% increase on 2023, across every channel, not USSD alone.

For the wider background, read our explainer on what USSD is and how a session works.

1. Stay well under the USSD character limit

Rule: write every screen to fit comfortably inside 182 characters, including line breaks, option numbers and navigation prompts.

The USSD character limit comes from the telecom standard itself. According to ETSI TS 123 038 (3GPP TS 23.038), a USSD message coded in the GSM 7-bit default alphabet can carry up to 182 user characters. That figure applies to the default alphabet only.

Treat 182 as a ceiling, not a target. Leave headroom, and test every screen on real low-end handsets on MTN, Telecel and AirtelTigo before launch.

Bad, 241 characters:

Welcome to PayQuick Mobile Banking Service
Please select from the following options:
1. Check your account balance
2. Transfer money to another account
3. Buy airtime for yourself
4. Pay your utility bills
5. More options
0. Exit application

Good, 69 characters:

PayQuick
1. Balance
2. Send Money
3. Buy Airtime
4. Pay Bills
5. More
USSD character limit chart: a 241-character wordy menu screen exceeds the 182-character GSM 7-bit ceiling while a 69-character short menu fits well under it

To keep screens short:

  • Count characters in your test environment, not in a text editor
  • Include “0. Back” and similar prompts in the count
  • Drop filler such as “please select from the following options”
  • Recount every translated screen, because translated text can run longer

2. Put the most-used actions on the first screen

Rule: the actions most customers came for belong on screen one, not under a category.

This is called an unbundled menu. A bundled menu nests everything under broad headings such as “Banking” or “Payments”, so the customer drills down several levels first.

MicroSave Consulting’s research with mobile money users in Malawi found that putting popular actions such as money transfer and airtime purchase in the main menu let users complete most transactions in four to five clicks, and most finished within a minute of starting the session. That finding comes from one country’s mobile money users, so treat it as a strong signal rather than a universal benchmark.

Bundled, seven screens to send money:

Screen 1: 1. Banking 2. Payments 3. Settings
Screen 2: 1. Balance 2. Transfers 3. Statements
Screen 3: 1. Send Money 2. Request Money
Screen 4: Enter amount
Screen 5: Enter recipient
Screen 6: Confirm
Screen 7: Enter PIN

Unbundled, four screens:

Screen 1: 1. Send Money 2. Balance 3. Buy Airtime 4. Pay Bills 5. More
Screen 2: Enter amount
Screen 3: Enter recipient and confirm
Screen 4: Enter PIN
Bundled vs unbundled USSD menu: seven screens vs four screens to send money

There is a cost. MicroSave notes that a more detailed unbundled menu can make it harder for novice and occasional users to find the option they need, and the chance of a session time-out rises. Unbundle the few actions most people use, and move everything else behind “More”.

Order those first-screen options by your own usage data, not by your internal department structure. Review the order regularly, because what customers use changes over time.

3. Keep each screen short and paginate the rest

Rule: show a handful of options per screen, around five, and put the rest on a “More” screen.

Five is a working rule, not a standard. Short lists are faster to scan on a small display, and they leave room under the character ceiling for your navigation prompts.

Screen 1:
1. Send Money
2. Balance
3. Buy Airtime
4. Pay Bills
5. More

Screen 2 (after "More"):
1. Loans
2. Savings
3. Settings
0. Back

Each screen stays scannable, and you still offer the full set of services.

4. Design for a USSD session timeout you do not control

Rule: assume the customer has little time on each screen, and design so they rarely need it.

No single USSD session length applies everywhere. According to ETSI TS 123 090 (3GPP TS 23.090), the USSD specification sets no fixed session length: the network entity controlling a USSD transaction releases it, and may end it before a response arrives if an application timer expires. In practice, the network and your platform decide when a session drops.

Field research points the same way. The MicroSave study observed that depending on the provider, USSD users get less time to type their responses than on SIM toolkit or other interfaces, which deters novice users.

Design choices that respect a short window:

  • Use numbered choices instead of free-text typing wherever you can
  • Pre-fill what you already know, such as the account holder’s name or a saved recipient
  • Put the key information at the top of each screen
  • Combine related inputs on one screen when the character limit allows
  • Cut any screen that does not move the customer closer to finishing

5. Offer shortcut strings for repeat users

Rule: let frequent users skip the menu tree with a single dial string.

Shortcut strings pack the whole request into one dial. Instead of dialling *123# and moving through four screens to send money, a regular user dials, for example:

*123*1*500*0241234567#

That string carries the service (*123), the action (1 for Send Money), the amount (GHS 500) and the recipient (0241234567). Your service reads it and takes the customer straight to the confirmation screen.

Anatomy of a USSD shortcut string *123*1*500*0241234567# showing service code, action, amount in GHS, recipient number and end marker

Shortcuts matter most for people who repeat the same task every day, such as mobile money agents and shop owners buying airtime. If you have already set up a USSD shortcode for your business, shortcuts give those customers a faster route.

When you add them:

  • Publish the format clearly, on printed cards or in an SMS
  • Validate each part of the string and return a helpful message when one is missing
  • Always show a confirmation screen before a payment
  • Support partial strings, such as *123*1# to jump straight to the amount screen

6. Handle errors without ending the session

Rule: when input is wrong, say what went wrong and ask again on the same screen.

Customers will type the letter “O” instead of zero, enter more than their balance, or use the wrong number format. If every mistake sends them back to the start, many will not try again.

Bad:

Invalid input. Session ended.
Please dial *123# to try again.

Good:

Invalid amount. Enter a number
between 1 and 5000:

Also store progress on your server: the current screen, the inputs collected so far and a timestamp. If the network drops the session, a customer who redials can pick up where they left off:

Continue GHS 500 transfer to Kofi?
1. Yes
2. Start over

Resuming saves the most value in USSD mobile money services, where an abandoned transfer is lost revenue.

7. Use the same navigation keys on every screen

Rule: pick one navigation scheme and use it everywhere.

Every screen after the first needs a way back. One workable scheme:

  • 0 goes back one screen
  • 00 returns to the main menu
  • * shows the next page of a long list
Enter recipient number:
0. Back

Consistency matters more than the exact keys. Customers learn the scheme once and stop thinking about it. Always include a back option on confirmation screens, so a customer who spots a mistake can fix it without starting over.

8. Design for more than one language and for low literacy

Rule: offer language choice first, and write in the plainest words that still mean the right thing.

For a Ghanaian audience, that might mean a first screen like this:

Select language
1. English
2. Twi
3. Ga
4. Ewe

Save the choice so customers are not asked again next time. Then check every translated screen against the character ceiling, and have a native speaker confirm each abbreviation. The 182 figure covers the GSM 7-bit default alphabet only, so a screen that needs characters outside that alphabet is not covered by it and must be tested on real handsets.

Many people who rely on USSD read with difficulty or have trouble seeing small text, particularly where feature phones are common. Menus that work for them work faster for everyone:

  • Use short, familiar words: “Send” instead of “Transfer Funds”, “Pay” instead of “Make Payment”
  • Keep menu labels to one or two words where you can
  • Avoid abbreviations that take effort to decode
  • Keep terms consistent: if screen one says “Send Money”, screen three should not say “Remittance”
  • Prefer numbered choices over typed answers

If you are still weighing channels for these customers, our comparison of USSD vs mobile apps in Africa covers the trade-offs.

9. Protect PIN and confirmation screens

Rule: confirm before anything irreversible, ask for the PIN last, and keep sensitive steps short.

USSD offers little protection for sensitive credentials. CGAP warns that someone using a laptop near a cell tower can capture the USSD sessions, including PINs, of everyone using that tower. Your menu design cannot fix that alone, but it can limit exposure:

  • Place PIN entry as the final step, straight after confirmation
  • Never repeat the PIN back on any screen
  • Lock the PIN step after a small number of failed attempts, for example three, with a wait before retrying
  • Send an SMS receipt after every completed transaction, so customers spot activity they did not start

Every payment or account change needs a confirmation screen showing the action, the amount and the recipient, with a clear way to cancel or go back:

Send GHS 500 to Kofi Mensah
(0241234567)?
1. Confirm
2. Cancel
0. Back to edit

If you are a bank or payment provider regulated by the Bank of Ghana, you have your own duties too. The Bank of Ghana Cyber and Information Security Directive requires regulated financial institutions to define session time-out criteria based on risk and technology, and requires their software to lock access temporarily after consecutive failed login attempts. Both duties apply to their IT systems generally, not to USSD alone.

The directive sets no specific numbers, so you set and document your own. For the full picture, read our guide to USSD security.

10. Measure completion and change one thing at a time

Rule: track where customers drop off, fix the worst screen first, and test one change at a time.

Good USSD menu design is never finished on launch day. Track these for every flow:

  • Completion rate: the share of sessions that reach the final screen
  • Drop-off by screen: the screen that loses the most people is your first fix
  • Error rate by screen: high errors point to unclear wording or input formats
  • Redials: a customer dialling back within minutes likely hit a timeout or an error

To test a change, split customers by phone number so each person always sees the same version. Start with the menu order, then screen wording, then the number of screens in a flow. Run each test until completion rates settle, and change only one thing at a time.

How do you build a USSD menu?

A USSD menu builder, in practice, is your own code answering each screen. Here is how that works with the Arkesel USSD API in Ghana:

  1. Get a test code. Arkesel lets you start on a shared USSD short code for testing and move to a dedicated code for production.
  2. Point the code at your webhook. Set up an endpoint on your server that accepts incoming requests.
  3. Return a screen for each request. With Arkesel’s USSD API, your server receives a POST request for each user interaction and replies with the next menu or a final message.
  4. Dial and iterate. Run through every flow on a real handset, recount characters, and fix the screens where you stumble.
  5. Move to a dedicated code. When the menu is ready, switch to your own code for your production service.

Because the menu lives in your code, you can apply every USSD menu design practice above directly: reorder options from your usage data, pre-fill known details, and return inline errors. Arkesel’s USSD session management tracks sessions automatically with configurable timeouts and can resume interrupted sessions without losing user context, which supports the recovery flow in practice 6.

Arkesel’s USSD API works across MTN, Telecel and AirtelTigo with a single integration. For request and reply details, see the USSD API page, and for server-side code, our developer guide has code examples for handling each USSD request.

Ready to try your menu on a real phone? Create an Arkesel account, get a shared test code and point it at your webhook. When you are ready for your own code, see how to choose a USSD shortcode provider in Ghana.

USSD menu design checklist

Screens

  • Keep every screen well under 182 characters, counting line breaks and prompts
  • Show around five options per screen and paginate the rest
  • Test every screen on low-end handsets on MTN, Telecel and AirtelTigo

Flow and timeouts

  • Put the most-used actions on the first screen
  • Use numbered choices instead of typing
  • Pre-fill known information
  • Store progress on your server so a redial can resume

Navigation and errors

  • Use the same back and home keys on every screen
  • Re-prompt on the same screen after an error
  • Offer shortcut strings for repeat users

Languages and accessibility

  • Offer language choice first and save it
  • Use short, familiar words
  • Recount every translated screen

Security

  • Confirm before every irreversible action
  • Ask for the PIN last and never repeat it back
  • Lock the PIN step after repeated failed attempts
  • Send an SMS receipt after each transaction

Measurement

  • Track completion, drop-off, errors and redials by screen
  • Order menus by usage and review the order regularly
  • Test one change at a time

Frequently asked questions

What is a USSD menu?

A USSD menu is the set of numbered text options a customer sees after dialling a code that starts with * and ends with #. The customer replies with a number, and the service returns the next screen until the session ends. It works on any phone without mobile data.

How do I build a USSD menu?

In practice, your USSD menu builder is your own server code. Get a USSD code, point it at a webhook on your server, and have your code return the next menu or a final message for each request. On Arkesel in Ghana, you can test on a shared code first and move to a dedicated code for production.

What is the character limit for a USSD screen?

The telecom standard allows up to 182 characters in a USSD message using the GSM 7-bit default alphabet. That figure covers the default alphabet only, so keep screens well under the ceiling and test on real handsets.

How long does a USSD session last before it times out?

The USSD standard does not set a fixed session length. The network and the platform decide when a session ends, and customers often have little time to respond on each screen. Design short flows with numbered choices so they rarely hit that limit.

How many options should a USSD menu screen have?

Around five is a sensible working rule. Put the most-used actions on the first screen and move the rest behind a “More” option.

How do I stop users dropping out of a USSD session?

Put popular actions first, cut unnecessary screens, re-prompt on the same screen after an error, and store progress on your server so a customer who redials can resume. Then track drop-off by screen and fix the worst one first.

What are USSD shortcut strings?

They let a frequent user bypass the menu with one dial string that carries the action, amount and recipient, for example *123*1*500*0241234567#. Your service reads the string and goes straight to the confirmation screen.

How do I secure a USSD transaction?

Show a confirmation screen before every irreversible action, ask for the PIN as the last step, never repeat the PIN back, and lock the PIN step after repeated failed attempts. Send an SMS receipt after each completed transaction.

Related articles

Build USSD menus your customers finish

Good USSD menu design comes down to short screens, popular actions first, and flows that survive a timeout you do not control. Build your menu on the Arkesel USSD API, test it on a shared code, then move to a dedicated code for your service in Ghana.

Have a larger rollout in mind? Talk to our team about your USSD requirements.

Scroll to Top