Nineveh sits between your bank’s virtual accounts and your product. It prices every credit, posts it to a double-entry ledger, and tells your product — in one pass, with the evidence kept.
A bank tells you money arrived on an account number. It doesn’t price your fees, keep your customers’ balances, compute a partner’s commission, deliver a reliable event, or reconcile against settlement. Nineveh is that layer — once, correctly, for every product you run.
A customer transfers to their account number. The bank credits it and notifies Nineveh — deduplicated on the session id.
Fixed institution, product and platform fees are applied. Gross-up means the customer receives a round amount.
A balanced double-entry journal is written: the customer's wallet, the fee wallets, the pass-through — in one transaction.
A signed event reaches your product with retries and replay. Your product credits the balance and acknowledges.
Ingest every credit on a virtual account number, idempotent on the bank's session id, resolved to the right customer — matched or queued, never lost.
A Nineveh-owned ledger. Customer, group and fee wallets; balances derived from balanced journals, not stored — the number always adds up.
Institution fee, product fee and your platform charge, priced per credit. Gross-up so the payer covers fees and the customer receives a round amount.
HMAC-signed webhooks with retries, dead-lettering and replay. Your product credits the customer server-side and acknowledges once.
Sync the bank's settlement, link it to the credits it covers, and surface every break between your ledger and the bank's.
Withdrawals with maker-checker, ageing, evidence and a pluggable rail — manual today, bank-hosted when you're ready.
Every product names its own world — sites and residents, matters and clients. Labels, theming and the mark are configurable per product.
Operations and finance consoles with role-based access, typed confirmations for money, and a hash-chained audit of every action.
Money sits in bank-issued virtual accounts and settles bank-to-merchant. Your product never holds funds — a cleaner licensing story.
Balances aren’t stored and hoped to be right — they’re derived from balanced journals. A daily identity check proves assets equal liabilities. Nothing is computed in a browser; totals come from the ledger.
Credits, journals and payouts are never edited. A correction is a new entry with a reason.
Assets = liabilities, checked on every cycle. When it doesn't, a reconciliation break opens.
Credit, delivery and settlement are tracked separately and never collapsed into one.
Money sits in bank-issued virtual accounts and settles bank-to-merchant. Your product holds no funds.
HMAC-signed webhooks; API keys with rotation; re-authentication and typed confirmation before money moves.
Role-based access per product, tenant isolation, server-authoritative checks — visibility is never authorisation.
Every action recorded and verifiable; PII masked; emergency access time-boxed and fully audited.
Nineveh is designed for a partner bank and a board to trust: money stays in regulated accounts, every action is authorised server-side and audited, and the ledger is the source of truth.
An API-first design with a sandbox and an OpenAPI spec. Build behind a small collections interface with a local stub, then point it at Nineveh — no rewrite. Provision an account, receive a signed credit, read the ledger.
POST /v1/accounts
{ "owner": "occ_01J9F2", "type": "STATIC" }
→ { "number": "600 123 4567", "bank": "First Bank" }
event credit.received
{ "net": { "currency":"NGN", "value":"10000.00" },
"group": "A-08", "status": "POSTED" }
200 your endpoint acknowledges onceA small fixed charge per credit — no percentage, no minimums, no lock-in. You keep the pricing you show your customers; Nineveh’s charge is transparent on every credit.
Get access to a sandbox, wire one journey end to end, and see the ledger balance itself.