NGN Bank78 Static Accounts (Client API)
Guide for businesses (e.g. Breeze) that need a dedicated Nigerian Bank78 static NUBAN per customer, creatable via API.
Overview
Incoming NGN transfers to that NUBAN are credited to your business’s NGN wallet pool (when treasury / central wallet pool is enabled) and attributed to the customer.
Prerequisites
- Business Client API key (live or test) with HMAC signing — see Authentication.
- Customer registered on Sznd and linked to your business (see below).
- Customer KYC completed on Sznd (
kyc_state/ identity verification cleared). - Customer BVN (11 digits) — required on every NGN create request.
What is user_id?
user_id is Sznd’s internal customer UUID. It is not an id from your external system.
You do not invent this UUID or send your own CRM id as user_id.
How the account links to your business
End-to-end flow
Step 1 — Register the customer (once)
Option A — KYC link (customer completes verification)
POST /api/v1/client/customers
Option B — Full registration (you already have KYC data)
POST /api/v1/client/customers/full
See Customers API for the full payload (address, documents, compliance fields).
Save the returned id:
That UUID is the user_id used in later steps.
Step 2 — Confirm KYC is complete
GET /api/v1/client/customers/{user_id}/onboarding-status
Proceed only when identity / KYC is completed (same rules as other virtual wallets). Incomplete KYC → 403 on virtual wallet create.
Step 3 — Create NGN Bank78 static account
POST /api/v1/client/virtual-wallets
Headers (HMAC):
Body:
Example:
Success (new account initiated):
Success (idempotent — already exists):
Creation is idempotent: one NGN static VBA per customer; repeating the call returns the existing account instead of creating another.
Step 4 — Retrieve account details
List
GET /api/v1/client/virtual-wallets?user_id={user_id}¤cy=NGN
Get by wallet / VBA id
GET /api/v1/client/virtual-wallets/{id}
Use the returned account_number, bank name/code, and account_name to show Customer A how to pay.
Step 5 — Deposits
When funds hit the static NUBAN, Sznd processes the Bank78 webhook, credits the linked wallet (business pool when configured), and can notify you via your business webhook URL (virtual wallet / transaction webhooks as configured).
Errors (common)
curl example
Checklist for go-live (ops + business)
- Business has Client API keys
- Business NGN treasury / currency activation completed if required for pooling
- Integration registers customers via Client API and stores Sznd
user_id - Integration waits for KYC completion before NGN VBA create
- Integration always sends
bvnfor NGN - Optional
account_nameset to a clear payee label (e.g.Breeze Customer A) - Webhook URL configured to receive deposit / wallet events
Related docs
- Customers API — register and KYC customers
- Create virtual wallet — request/response shapes for all currencies
- Virtual wallets overview
- Virtual wallet webhook
- Authentication