Case Study - SENDTIP — Fintech Backend Platform
SENDTIP is a mobile-first fintech platform targeting East African markets, built as a distributed system of 11 independently deployable microservices handling wallets, payments, KYC, and agent networks.
- Client
- ImageLeft
- Year
- Service
- Backend Engineering, Microservices Architecture

The Problem
Building a compliant, multi-channel payment platform in East Africa means handling real constraints: M-Pesa as a dominant payment rail, KYC requirements under Kenyan regulation, agent-based cash distribution networks, and users who may prefer SMS over email. A monolith would have made these concerns tightly coupled and impossible to scale independently.
What I Built
A distributed backend system of 11 independently deployable microservices, each owning its own PostgreSQL database. Services communicate asynchronously via Redpanda (Kafka-compatible) and synchronously through a central API Gateway.
Services I designed and implemented: User Service (registration, JWT auth, KYC via Smile Identity), Wallet Service (multi-currency wallets, M-Pesa STK push), Transactions Service (immutable ledger across Paystack/M-Pesa/Bank/Internal channels), Banking Service (deposits & withdrawals), Agents Service (document upload onboarding with approval workflow), Notification Service (SMS + email via event consumers), Admin Config Service (feature flags, runtime mobile config), Gateway Service (JWT verification, API key management, proxy routing), Loans & Savings, Redpanda broker infrastructure, and Client Service for mobile asset delivery.
Technical Decisions
Event-driven notifications: Rather than calling the notification service directly from user-service, registration events are published to Redpanda. This decouples delivery and makes it trivial to add push notifications later without touching the user service.
KYC on registration: Integrated Smile Identity to verify government IDs at signup — a hard requirement for regulatory compliance in the Kenyan market.
Gateway as the single auth boundary: All JWT validation and API key rate limiting lives in the gateway. Individual services trust the gateway's forwarded identity — no auth duplication across 11 services.
Per-service Prisma schemas: Each service manages its own migrations independently. Zero shared schema files — enforcing service boundaries and letting teams deploy on different schedules.
Stack: Node.js · Express · PostgreSQL · Prisma ORM · Redpanda (Kafka) · Redis · Docker · JWT · Swagger · Smile Identity · M-Pesa API · Paystack API · Mocha/Chai
What I did
- Backend Engineering
- Microservices Architecture
- Event-Driven Systems
- Payments Integration
- KYC Integration
- DevOps