Banking on any phone, no data needed: a USSD platform handling 2M+ sessions a month for an East African financial institution.

2M+Monthly sessions
99.9%Uptime (18 months)
<800 msAvg. response
0Data-loss incidents

Project Summary

  • Client: East African financial institution
  • Industry: banking
  • My role: Backend Engineer
  • Core tasks: USSD framework, Core-banking integration, Session management, Operations
  • Appointed date:
  • Completion:

Smartphones aren't universal and mobile data isn't free. For millions of East Africans, the most reliable way to reach their bank is a USSD code on any phone. A financial institution needed its USSD banking channel to keep up with fast-growing traffic, on networks where sessions time out and connections drop.

The problem

  • Unforgiving sessions. Mobile networks give each USSD screen only seconds, and one slow core-banking call ends the session.
  • Unreliable networks. A connection dropped mid-transaction must never leave money in an unknown state.
  • Growth. Session volumes were climbing faster than the existing setup could handle.

What I built

  • A Node.js USSD framework for menus, input validation and transaction flows.
  • Redis-backed sessions that survive dropped connections, with graceful timeouts and session recovery.
  • Real-time core-banking integration through ESB middleware to Temenos T24.
  • Clustered processes with PM2 on Ubuntu for throughput and zero-downtime restarts.

The result

The platform processed 2M+ sessions a month with 99.9% uptime over 18 months, average responses under 800 ms and no data-loss incidents.

Tech stack

Backend
  • Node.js
  • Redis
  • PM2
Infrastructure
  • Ubuntu
Integrations
  • Temenos T24
  • ESB middleware
  • USSD gateways

What I did

  • Built the USSD framework and transaction flows
  • Designed Redis session management and recovery
  • Integrated with T24 core banking through the ESB

Key decisions

  • Redis-backed sessions so a dropped connection can resume
  • PM2 clustering for throughput and zero-downtime deploys

Challenges

  • Answering within USSD timeouts while calling core banking
  • Recovering sessions after dropped connections

Have a similar problem to solve? Let's talk.

Start a conversation