Skip to main content

Tenants

Your company is a tenant. Every virtual account, ledger entry, customer record, and webhook delivery in Kanall belongs to exactly one tenant — and no tenant can ever see another's data.

You register once, get an API key, and everything you create with that key is permanently scoped to your organisation.


What a tenant owns

Bokku Supermarket (Tenant)

├── virtual_account: bokku-ikeja
├── virtual_account: bokku-lekki
└── virtual_account: bokku-abuja

Kanall's isolation is absolute. If a virtual account belongs to your tenant, no other tenant can read it, modify it, or receive its webhooks — even if they know the account reference.


Registration

Sign up at www.kanall-app.online (recommended), or via the API:

{
"name": "Bokku Supermarket",
"email": "ops@bokku.ng",
"password": "your-secure-password"
}

A verification code is sent to your email. Confirm it to receive your API key. The raw key is never stored — if you lose it, rotate it from the dashboard.


Authentication

Server-to-server (your backend → Kanall API)

Pass your API key in the X-API-Key header on every request:

X-API-Key: ten_sk_4a3b2c1d...

This is the only method your backend should use. Store it in environment variables, never in source code or client-side JavaScript.

Dashboard (browser → Kanall)

The Kanall dashboard at www.kanall-app.online uses email and password login, which sets a secure session cookie. Dashboard sessions and API key sessions are completely separate.

When the dashboard refers to an admin, it means you — the operator from your company who manages accounts and reviews KYC submissions. It is not a Kanall superuser.


Business KYC

All tenants start as unverified. To verify your business, submit your organisation details via the dashboard or POST /auth/business-kyc:

{
"businessType": "registered_business",
"cacNumber": "RC-1234567"
}

Accepted businessType values: sole_proprietor, registered_business, ngo, other.

note

Business KYC is at the tenant (company) level. Customer-level KYC tiers (CBN-mandated transaction limits) are tracked separately on each Customer record. See KYC.


Outbound webhook signing

Configure a per-tenant webhook signing secret via POST /auth/webhook-secret. Once set, Kanall signs every outbound delivery with an X-Kanall-Signature header so you can verify that notifications are genuinely from Kanall.

See Webhook Signature Verification for the verification algorithm.


Tenant status

StatusMeaning
activeNormal operation
suspendedAPI calls rejected with 403 Forbidden — contact support