| name | africa-ussd-development |
| description | Build USSD applications for African markets — menu design, session management, multi-operator integration, and user experience patterns for feature phones. |
| version | 1.0.0 |
| last-updated | 2026-04-22 |
| model_tested | claude-sonnet-4-6 |
| category | africa |
| platforms | ["claude-code","codex","gemini-cli","cursor","copilot","windsurf","cline"] |
| language | en |
| geo_relevance | ["africa"] |
| priority | medium |
| dependencies | {"mcp":[],"skills":["africa-mobile-money"],"apis":[],"data":[]} |
| update_sources | [{"url":"https://africastalking.com/ussd","check_frequency":"yearly","last_checked":"2026-04-22"}] |
| license | MIT |
Africa USSD Development
DISCLAIMER: USSD regulations vary by country and operator. Verify with local telecom authorities.
When to Use
- Building apps for feature phone users (no internet required)
- Creating mobile money menus or services
- Designing interactive text-based interfaces
- Integrating with African telecom operators
USSD Fundamentals
USSD (Unstructured Supplementary Service Data) = real-time text session between phone and server. No internet needed. Works on ANY phone (feature phone or smartphone).
Key Constraints
| Constraint | Limit |
|---|
| Message length | 182 characters max per screen |
| Session timeout | 120-180 seconds (operator-dependent) |
| Input | Numeric only (0-9, *, #) |
| Navigation | No back button (must design "0 for back") |
| Connectivity | Real-time (not store-and-forward like SMS) |
Menu Design Patterns
Basic Menu
Welcome to MyService
1. Check balance
2. Send money
3. Buy airtime
4. My account
0. Exit
Pagination (Long Lists)
Select product (1/3):
1. Rice 5kg - 2500 CFA
2. Sugar 1kg - 800 CFA
3. Oil 1L - 1200 CFA
98. Next page
0. Back
Confirmation Pattern
Send 5000 CFA to Amadou (77X XX XX)?
1. Confirm
2. Cancel
Input Collection
Enter amount (CFA):
Then validate: numeric, min/max, divisible by denomination.
Session Architecture
Phone → *123# → Operator → Your Server (HTTP POST)
↓
Process + respond
↓
Response text (182 chars max)
↓
Phone displays
Server Response Format
Most operators expect:
CON prefix = continue session (expect more input)
END prefix = close session
CON Welcome\n1. Balance\n2. Transfer
END Your balance is 15,000 CFA. Thank you.
Multi-Operator Integration
| Provider | Coverage | API |
|---|
| Africa's Talking | 20+ countries | REST, webhooks |
| Twilio | Limited Africa | REST |
| Infobip | 15+ countries | REST |
| Direct operator | Per country | SMPP/HTTP varies |
Africa's Talking (Recommended for Multi-Country)
POST callback URL receives:
- sessionId: unique per session
- phoneNumber: caller MSISDN
- text: accumulated input (separated by *)
- serviceCode: your USSD shortcode
UX Best Practices
- Max 3 levels deep — users lose context after 3 menus
- Always offer exit — "0. Exit" on every screen
- Confirm destructive actions — money transfers, cancellations
- Short messages — 182 chars including options
- Numeric shortcuts — power users dial full path:
*123*1*2#
- Language selection first — if multilingual market
- Error messages clear — "Invalid choice. Try again:" not "Error 422"
- Session state on server — phone has no state
Testing
- Test with actual phones (emulators miss operator quirks)
- Test session timeout handling
- Test on slow networks (USSD can lag 3-5s per round trip)
- Test with different operators in target market
What This Skill Does NOT Do
- Does not provide USSD shortcodes (apply through operator)
- Does not handle SMS (different protocol)
- Does not manage telecom operator relationships
- Does not cover IVR (voice-based menus)