Skip to Content
👋 Welcome to 100Pay Developers
DocsCustomersOverview

Customers & Virtual Bank Accounts

The Customers API lets you onboard your end users as first-class customers, verify their identity with BVN, and issue each one a dedicated NGN virtual bank account (VBA). Deposits into a customer’s account are credited to a dedicated ledger wallet that you can query, pay out from, or sweep to your own wallet.

Use it to power:

  • Neobank & wallet apps — every user gets a real, permanent NGN account number
  • Marketplaces — collect seller or buyer funds into isolated per-customer balances
  • Payroll & disbursement products — hold and pay out per-customer funds with full audit history

All customer endpoints require your secret key (LIVE;SK;...). Public keys are rejected. All create operations require an Idempotency-Key header — retrying with the same key safely replays the original response.

The Lifecycle

  1. Create a customer with your own externalReference
  2. Verify their identity (BVN) — required before an account can be issued
  3. Create a virtual bank account — a dedicated NGN account number plus a ledger wallet
  4. Receive deposits — credited automatically; you get a customer.deposit.credited webhook
  5. Check balances, pay out, or transfer — withdrawals to any bank, or internal transfers to your merchant wallet

What You Can Do

Key Concepts

ConceptMeaning
CustomerYour end user, scoped to your app, identified by your externalReference
Identity verificationA BVN check that must be verified and eligible before a VBA can be created
Virtual bank accountA permanent SafeHaven NGN account number owned by one customer
Customer walletThe platform ledger wallet behind each VBA — the authoritative balance
Sweep destinationWhere deposited funds physically settle (platform, your settlement account, your VBA, or kept in the customer VBA)
Fee bearerWho pays deposit processing fees — the customer (default) or you as sponsor
Last updated on