How It Works
From USSD dial to Stellar settlement. Try the interactive simulator, then read the architecture walkthrough.
Session Log
Start a session to see requests.
Architecture Walkthrough
User dials *384#
On any phone — feature phone, smartphone, even a borrowed phone. No app install, no data connection. The telco routes the USSD request to Africa's Talking.
Africa's Talking forwards to Stackr
Africa's Talking sends a POST request to /ussd/callback with the session ID, phone number, and cumulative user input. IP allowlist and rate limiting are enforced.
USSD state machine processes the request
Redis stores the session state. Postgres stores user data. The state machine determines which menu to show based on the cumulative text input.
Stellar transaction executes
For financial operations, Stackr builds an XDR transaction, signs it with the user's derived keypair, wraps it in a fee bump, and submits to Stellar Horizon.
Response sent back to user
The USSD response (CON for continue, END for terminate) is sent back through Africa's Talking to the telco to the user's phone. Total time: under 3 seconds.
System Architecture
User dials *384# on any phone
│
Telco USSD Gateway
│
Africa's Talking (POST /ussd/callback)
│
┌─────▼──────┐
│ actix-web │──── IP allowlist + rate limiting (Redis)
└─────┬──────┘
│
USSD State Machine (Redis session + Postgres user lookup)
│
┌─────┼──────────────────┐
│ │ │
Stellar Postgres External APIs
───────── ──────── ─────────────
TX builder users SEP-24 anchors
transfers transactions CoinGecko (rates)
swaps anchor_orders Airbills (bills)
trustlines user_activity Africa's Talking (SMS)
fee bumps merchants