Problem
Building CreditVeto's financial infrastructure from the ground up, with three non-negotiables: AML screening and CBN-compliant KYC, an auditable ledger that could survive regulatory scrutiny, and core banking rails resilient enough for real transaction volume.
Each of those pulls the architecture in a different direction. Compliance logic changes whenever the regulator does. Ledger correctness can never change. And transaction throughput cares about neither — it just needs to stay fast while the other two evolve underneath it.
Architecture
Three decisions did most of the work — each one trading a simpler implementation for a property the system couldn't afford to lose.
-
Microservices over monolith
Isolated KYC/AML, ledger, and transaction services independently, so compliance logic could evolve without risking transaction-processing stability — and so each service could scale on its own.
-
Double-entry ledger over a single balance field
Every transaction recorded as a debit/credit pair rather than a mutable balance. Harder to falsify, trivially auditable, and the industry-standard pattern for financial systems that need to survive an audit.
-
Optimistic response + async queuing
User-facing requests return fast while heavier processing — compliance checks, downstream settlement — runs behind a queue, with dead-letter queues and backoff/retry logic so failed jobs don't silently disappear.
Outcome
- Onboarding significantly faster than the prior manual / semi-manual flows.
- Recognized as a top-performing platform in the country, based on founder assessment and user feedback.
- Transaction processing at seamless, production-grade speed.
Private production system — source and demo unavailable.