Digital banking channel · self-hosted

Keep your core. Replace the app your customers see.

Bank-in-a-Box is web banking software for banks and credit unions. The app talks to one canonical Banking API; an adapter translates each call to the core you already run. You install it in your own Kubernetes cluster. We sell the software. You run it.

One request from the appapps/web
GET /api/v1/accounts/{accountId}/balance
  1. Kesef Bank Fictional bank adapter mambu-v2 GET /deposits?accountHolderType=CLIENT&accountHolderId={clientId}
  2. Riverbank Fictional bank adapter cdr-banking GET /cds-au/v1/banking/accounts/balances
Same response shape either way
{ "currency": "AUD",
  "currentBalance": "1250.30",
  "availableBalance": "1250.30",
  "asOf": "2026-09-12T01:54:23Z" }

The showcase

Two fictional banks. One build. Two unrelated cores.

Same container images, same web app. Each bank is a tenant config: a name, a logo, a color, a typeface and an adapterId. The features each bank shows follow what its core can actually do.

Fictional bank Core Mambu

Kesef Bank

Your money, clearly.

Illustration of the demo app’s navigation for this bank. “Move money” appears because the Mambu adapter declares transfers.
Adapter
mambu-v2 → Mambu v2 API
In the app
Accounts and balances · Transactions · Loans · Transfers between own accounts
Voice
Measured, formal, a little old-world. Navy and a serif.
Try the live demo: Kesef Bank

Hosted sandbox with synthetic customers. If it’s offline, you’ll see screenshots of the running app instead.

Fictional bank Core CDR

Riverbank

Good banking, no fuss.

Illustration of the demo app’s navigation for this bank. No “Move money” and no cards: CDR Banking is read-only, so the app leaves those out instead of greying them out.
Adapter
cdr-banking → Australian CDR Banking API
In the app
Accounts and balances · Transactions · Loans
Voice
Plain, warm, first-name terms. Deep green and rounded type.
Try the live demo: Riverbank

Hosted sandbox with synthetic customers. If it’s offline, you’ll see screenshots of the running app instead.

Your core next. Every adapter implements the same Go interface, so adding a core doesn’t touch the app. Tell us which core you run and we’ll walk through the mapping with you.

Name your core 

What changes, what doesn’t

Brand and core are configuration. Everything else is the product.

Set per bank

  • Brand. Name, logo, primary color, support and privacy links.
  • Core. integration.adapterId picks the adapter at startup. An unknown value stops startup rather than guessing.
  • Capabilities. The adapter declares what the core supports. Features it doesn’t declare are hidden, not shown disabled.

Identical everywhere

  • The app. Accounts, balances with source freshness, transactions, statements, loans, and own-account transfers where the core supports them.
  • Sign-in. Email link plus passkeys. A sign-in link alone can’t approve a transfer.
  • Money movement safety. One stable reference per transfer. After a crash or timeout the worker looks up the original instead of resubmitting.
  • Audit. Access denials and transfer decisions are written to the audit trail in your database.

What you license

Software you install. Not a hosted service.

Licensing is scoped per institution. We don’t publish prices; we’ll talk through packaging once we understand your core and your volumes.

  1. 01

    The channel

    Web banking app, canonical Banking API and background worker, as container images.

  2. 02

    An adapter for your core

    Mambu v2 and Australian CDR Banking. The Mambu adapter is built and tested against a contract mock from Mambu’s published v2 API specification; validation against a live Mambu sandbox is in progress. Other cores are scoped per engagement.

  3. 03

    A Helm chart

    Installs into your cluster against your PostgreSQL (or DynamoDB). Secrets stay in your Kubernetes Secrets.

  4. 04

    Signed images and an SBOM

    Every release is signed with cosign and ships an SPDX SBOM, so you can verify both before anything runs. How to verify

What we don’t do: host your channel, hold your customers’ data, or keep a connection into your cluster. What stays with you

Bring your core. We’ll show you the mapping.