Corebank

Financial infrastructure

In development · working prototype

Financial infrastructure for recording and moving money: a double-entry ledger, provider integrations, and spending policy enforced server-side before funds ever leave.

Back to all ventures

An open nineteenth-century account book, two pages of hand-ruled columns of figures.
Account Book Ledger, John Carlin · CC0, via Wikimedia Commons

Corebank in one picture

What it is

Corebank is being developed as the financial infrastructure layer for the businesses Odusipe Enterprise intends to operate. Its job is unglamorous and absolute: every movement of money is recorded as a balanced entry, balances are derived rather than stored, and a retried request can never move money twice.

It is self-hosted against the operator's own payment credentials. Corebank does not hold funds, does not take deposits and is not a licensed payment service; the deployment, the provider relationship and the regulatory obligations belong to whoever runs it.

The mechanism, not the pitch

Ledger entry · LE-4F82C1Illustrative model · sample data
Postings in ledger entry LE-4F82C1
AccountDebitCredit
agent:ops-runner-3 · wallet125,000.00—
payee:qt-logistics · settlement—125,000.00
Sum125,000.00125,000.00
Balance check
sums to 0.00 · accepted
Idempotency key
pay_2026_10_28_7f3a · unique
Posting state
immutable · corrections reverse

Development status

Built means written, tested and running. Intended means exactly that.

Built and tested today

A double-entry general ledger

Postings inside an entry sum to exactly zero or the entry is rejected. Postings are immutable, and corrections are new reversing entries, so history is append-only and auditable.

Balances that cannot drift

Balance is the sum of postings and available is balance minus active holds. Neither is ever stored. Money is integer minor units throughout; no float touches a balance.

Deny-by-default spending policy

Per-transaction ceilings, rolling daily and monthly caps, a daily payout-count ceiling, timezone-correct resets, payee allowlists, approval thresholds and freezes, all evaluated server-side before funds are held. With no limits set, every payout is refused.

Idempotency enforced by the database

One idempotency key produces at most one entry, ever, by a UNIQUE constraint rather than an application check.

Payout lifecycle with holds

Money committed to an in-flight payout is held, so it cannot be withdrawn twice; webhook settlement captures the hold, and reconciliation re-queries the provider when a notice never arrives.

Verified provider webhooks

Inbound notices are authenticated by HMAC over the raw body with a constant-time comparison, and fail closed without a valid signature.

An operations dashboard and a typed tool surface

A dashboard for the human who sets the limits, and an MCP server so an agent spends through typed tools instead of hand-rolled HTTP.

Zero third-party dependencies

Python standard library only, by design: fewer moving parts to audit, patch and trust.

Intended, not yet built

Inbound collections

Virtual-account callbacks are not implemented; the deposit path is operator-gated and stands in for them.

Live money movement, proven end to end

Provider reads are confirmed against a live key. The paths that move money wait on provider approval and a real settlement notice before they can be trusted with money.

Multi-process deployment

Correctness currently assumes one process owns the database file. Horizontal deployment needs a different storage engine behind the same interface, not a second worker.

Operational observability

Health and a reconciliation exit code exist; metrics and structured logging do not yet.

Independent review

No external security audit has been performed.

A page from an eighteenth-century account book, entries in brown ink.
Account-book of Thomas Mister · CC BY 4.0, via Wellcome Collection

Intended use cases

  • Recording transactions for a business that cannot tolerate a wrong balance.
  • Holding spending authority for automated systems and staff accounts under limits a human sets.
  • Reconciling provider notices against an internal ledger.
  • Serving as the shared financial layer for several businesses, subject to the necessary provider approvals and applicable regulation.

What an operator sees

Webhook verification · edge logIllustrative model · sample data
POST /v1/webhooks/provider  content-length=412
  signature header present ................ yes
  hmac-sha256 over raw body .............. compare_digest
  verdict ................................ accepted
  event id ............................... evt_8c1d2f  (first delivery)
  payout reference ....................... PO-91D4    (status: successful)
  hold captured .......................... 125,000.00 NGN
  ledger entry ........................... LE-4F82C1  (sums to 0.00)

POST /v1/webhooks/provider  content-length=412
  signature header present ................ yes
  hmac-sha256 over raw body .............. mismatch
  verdict ................................ 401 rejected, body never parsed

POST /v1/webhooks/provider  content-length=412   (replay of evt_8c1d2f)
  signature header present ................ yes
  verdict ................................ accepted, claim already held
  effect ................................. none · no second capture

Fails closed: an unsigned or mis-signed notice is rejected before the JSON is parsed, and a replay changes nothing.

Reconciliation, and knowing when to stop

Automatic correction of a ledger is how money disappears. Corebank re-queries the provider, records what it found, and asks for a human when the two sides disagree.

Reconciliation · 28 OctIllustrative model · sample data
Provider notices matched against ledger entries
PayoutAmount ProviderBooksState
PO-91D4₦125,000.00successfulLE-4F82C1matched
PO-91D5₦18,400.00successfulLE-4F82C4matched
PO-91D6₦72,500.00pendinghold activere-query due
PO-91D7₦9,000.00failedLE-4F82C9 reversalreturned

Exit code 2 when a human is needed. Nothing is auto-corrected on the books.

A pavement access pit opened to show coiled fibre-optic cable in a service duct.
Fibre-optic cable in a Telstra pit · CC BY-SA 2.5 AU, via Wikimedia Commons

Context

The Lagos Marina skyline seen across the water.
Lagos skyline with marina, kopee15 · public domain, via Wikimedia Commons

Talk to us about it

Corebank is in development and not generally available. Integration conversations, provider discussions and technical review are all welcome now, and they are what shapes what gets built next.

Discuss an integration

Tell us what you are building.

We answer every serious message.

Start a conversation

Expect a reply within two business days, from a person.

Email
hello@odusipe.tech
Base
Lagos, Nigeria
Working with
Businesses, providers, partners, engineers