Candidates Experience With Us + Latest Updates
Personalized Support for Your Success
Upcoming Trainings & Events
Staff Software Engineer Job Share
IT Jobs. Share Jobs.
About the Role
We are hiring a Staff Software Engineer to take ownership of the platform’s most critical technical domains: the payments pipeline (collections, revenue splitting, treasury operations), the billing engine (subscription lifecycle, cycle management, automated renewals), and the integration layer (BSS/OSS sync with partner systems). You will work directly with the CTO and a small team of engineers to ship production systems that handle real financial transactions for real ISP partners.
This is the most senior individual contributor role on the engineering team. You are expected to make architectural decisions, write production code, review others’ work, and unblock the team when they hit technical walls. You will not manage people. You will build systems.
What You’ll Own
- Payments domain: SasaPay collections integration (C2B API, STK push, IPN handling), revenue split engine (per-partner, per-BNG percentage logic), ChoiceBank treasury operations (withdrawals, internal transfers, OTP flows), and the payment completion handler that bridges payment confirmation to subscriber activation.
- Billing engine: Subscription and BillingCycle lifecycle, automated renewal cron, grace period enforcement, plan change mid-cycle logic, and the event-driven communication triggers that notify subscribers at every billing moment.
- Integration layer: Splynx adapter (plan sync outbound, subscriber sync inbound, activation webhooks), custom webhook delivery engine, and the event routing that connects domain events to external system notifications.
- Architecture decisions: Service boundaries, event contracts (Kafka), data model evolution (Prisma/PostgreSQL), API design for both public and private endpoints, and the migration strategy from the legacy Next.js monolith to the NestJS microservices platform.
Technical environment
Backend (where you will spend most of your time)
- NestJS monorepo with 7 microservices (CRM, Billing, Payments, Ledger, Communications, Provisioning, Integrations)
- TypeScript end-to-end
- PostgreSQL with Prisma ORM (shared database, service-scoped access)
- Kafka message bus (migrating from RabbitMQ) for inter-service communication (send/emit patterns)
- Redis for caching, queues, rate limiting, and idempotency
- REST API gateway with Swagger documentation
Payments and financial systems
- SasaPay (OAuth 2.0, C2B collections, B2B transfers, IPN webhooks)
- ChoiceBank BaaS API (KYC, internal transfers, OTP-based withdrawal confirmation)
- Revenue split engine with per-partner/per-BNG/per-plan configuration
- Double-entry ledger (AccountTransfer, AccountLedgerEntry, AccountRevenueSplit)
- M-Pesa STK push integration via SasaPay as collections gateway
Infrastructure and tooling
- GitHub Actions CI/CD, SSH deployment to VMs
- Sentry for error monitoring, Loki + Pino for structured logging (being implemented)
- Circuit breaker patterns, provider failover, webhook signature verification
- FreeRADIUS integration for network subscriber provisioning (PPPoE credentials, plan attributes)
Legacy system (active, being migrated)
- Next.js application with API routes (the payments module you’ll be refactoring lives here today)
- Shared Prisma schema with the new platform
- Active development continues on both repos simultaneously during migration
Qualifications & Experience
Non-negotiable
- 7+ years of professional software engineering experience, with at least 3 years in backend systems handling real financial transactions (payments, billing, ledger, or treasury)
- Deep TypeScript/Node.js expertise. You should be able to design a NestJS microservice from scratch, not just work in one.
- Production experience with payment gateway integrations (M-Pesa, Stripe, Adyen, or similar). You understand STK push flows, webhook idempotency, callback signature verification, and reconciliation.
- Strong PostgreSQL skills. You can design schemas for financial data, write migrations, and reason about transaction isolation and locking.
- Experience with event-driven architectures (Kafka, RabbitMQ, or similar). You understand the difference between request-reply and fire-and-forget patterns and when to use each.
- You ship. You can take a spec document and turn it into production code without waiting for someone to break it into small tasks.
Strong preference
- Experience in East African fintech or mobile money ecosystems (M-Pesa, SasaPay, Airtel Money). Understanding of Kenya’s payment infrastructure and regulatory environment.
- Experience with ISP billing systems, RADIUS protocols, or telecommunications platforms.
- Experience with Prisma ORM and NestJS specifically.
- Production experience with multi-tenant SaaS platforms (provider-scoped data, API key auth, webhook delivery).
- Track record of migrating monolithic systems to microservices while keeping production running.
How to Apply
🚨 Before You Apply for This Job. Need Help With Your CV?
This job will attract 1000+ applicants.
Many qualified professionals miss out on getting shortlisted and interviews — not because they lack experience, but because their CV doesn’t clearly show how they fit this specific job.
🎯 Want to get an interview fast? Customize your CV specifically for this job.
Using the same CV for every application will not get you interviews.
Email your CV today to our Client Service Manager, Rose, using cvwriting@corporatestaffing.co.ke
Subject: CV Review & Upgrade.
Rose and our recruiters will review your CV and show you exactly how to improve it for the job you are targeting.
Using an A.I-generated CV but not getting interviews? Get it reviewed here by our recruiters today.

