How It Works

From USSD dial to Stellar settlement. Try the interactive simulator, then read the architecture walkthrough.

Stackr USSD100%
*384#Ready
Press Dial to start a USSD session.

Architecture Walkthrough

01

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.

02

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.

03

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.

04

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.

05

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