PORTFOLIO
Digital Banking & Core Systems
A multi-tenant banking middleware serving four licensed microfinance banks from one codebase, a core banking ledger, and the customer channels that sit on top of them.
One Platform, Four Banks
Nigerian microfinance banks face a problem the tier-one banks solved a decade ago with budgets they do not have. They hold a core banking licence and a core banking system, but no practical way to put a modern application in a customer’s hand. Buying a channel platform per bank is unaffordable, and building one per bank is worse.
Our answer was a single multi-tenant middleware that fronts the core banking system and serves every channel a bank needs. Each bank gets complete isolation — its own database, its own secrets, its own branded portal and its own NIBSS institution code — while sharing one codebase, one deployment pipeline and one security posture. Onboarding a new bank is a registry row and a portal package, not a project.
Every state-changing operation is written to an append-only, hash-chained audit log, because a bank that cannot reconstruct what happened cannot answer its examiner. Customer onboarding implements the Central Bank of Nigeria tiered know-your-customer model, with the NIBSS and NIMC interfaces for bank verification and national identity numbers.
Systems in this domain
Seven systems, four of which are in daily service at licensed banks.
NCube Banking Middleware
Platform · multi-tenant
The layer between bank channels and the NCube core. Handles tiered KYC, account services, intra-bank and NIP inter-bank transfers with name enquiry, loan products with amortisation and loss classification, HMAC-signed outbound webhooks with retry and dead-letter handling, and a hash-chained audit log. Database-per-tenant isolation behind a shared control plane.
CBA Core Banking Application
Core ledger
A microfinance core banking system with a real double-entry ledger. Customers, accounts, postings, loans and deposits are held here rather than summarised from elsewhere, which is what makes the trial balance mean anything.
Ultra Pay Microfinance Bank
Mobile + internet banking
Mobile banking in Flutter and a full internet banking platform. Customers register as individuals or businesses, complete KYC against national identity and corporate registration records, have a real account opened on the core system, then transfer, buy airtime and data, manage beneficiaries and download statements.
Tudun Wada Microfinance Bank
Mobile + internet banking
The Stark App mobile banking client and its matching internet banking platform, running on the shared middleware against the bank’s own core and its own NIBSS institution code.
Kura Microfinance Bank
Mobile banking
Flutter mobile banking on the NCube core through a middleware proxy. Accounts and balances, intra- and inter-bank transfers with name enquiry, statements, airtime, transaction PIN and identity verification.
Quantum Microfinance Bank
Digital banking + corporate web
A CBN-licensed bank running on the shared middleware, with a corporate website delivered to the bank’s own technical specification and brand guidelines, built on Drupal 11 with a fully custom theme.
Channel Proxy Middleware
Integration
A second middleware placing two upstream systems behind one self-hosted backend, so applications authenticate once and no upstream credential ever leaves the server.
Technical detail
What each system is built on and what it connects to.
| System | Stack | Integrates with |
|---|---|---|
| NCube Banking Middleware | Node.js HTTP service and worker, Postgres, database-per-tenant | NCube core, NIBSS NIP, NIMC, bank portals |
| CBA Core Banking | Next.js, TypeScript, Supabase Postgres, Docker | Double-entry ledger, loan and deposit products |
| Ultra Pay | Flutter and React Native Expo clients, Next.js internet banking | NCube via middleware, Flutterwave for value-added services |
| Tudun Wada (Stark App) | Flutter with provider, Supabase, Next.js internet banking | NCube via middleware, NIBSS code 51166 |
| Kura MFB | Flutter with Riverpod and go_router | NCube via middleware proxy |
| Quantum MFB | Drupal 11 custom theme, Next.js build | NCube via middleware, NIBSS code 50777 |
| Channel Proxy Middleware | TypeScript and Python workers, self-hosted Supabase | Two upstream cores behind one authenticated surface |
Regulatory posture
The middleware implements CBN tiered KYC, retains an append-only hash-chained audit trail of every state change, and isolates each bank at the database level. These are design decisions taken to survive examination, not features added afterwards.
Running a microfinance bank without a digital channel?
If you hold a core banking licence and a core banking system but no application your customers can use, the platform described above was built for exactly that position. Adding a bank is a configuration exercise.