The customer object
When you create or retrieve a customer, the API returns an object with the following shape:KYC tiers
Dubu Pay uses a two-tier KYC system. Each tier unlocks additional account features and higher transaction limits.- Tier 1 — Basic identity
- Tier 2 — Advanced identity
Tier 1 verifies a customer’s identity using their BVN (Bank Verification Number) and a selfie image. You submit both when calling
POST /customers/:id/tier1-verification.What you need:bvn— exactly 11 digitsimage_url— a URL pointing to the customer’s selfie
- Issuing NGN virtual bank accounts (onramps)
- Standard deposit limits
You can also initiate KYC via
POST /customers/:id/kyc/initiate if you want Dubu Pay to drive the verification flow on your behalf — just supply the customer’s BVN.Customer lifecycle
1
Create the customer
Call
POST /customers with the customer’s email, first_name, and last_name. You receive a customer id in the response.2
Submit KYC verification
Submit Tier 1 verification to unlock virtual account issuance. Pass the customer’s BVN and a selfie URL.
3
Issue a virtual account
Once the customer is verified, create an NGN virtual bank account for them via
POST /customers/{id}/ngn-virtual-account. For a permanent account, the customer must be Tier 2 verified.4
Track balance and ledger
Poll
GET /customers/{id}/balance to see the customer’s current USDT balance, or GET /customers/{id}/ledger to retrieve a full transaction history.How customers relate to other resources
Each customer can have:- One permanent NGN virtual account — linked for receiving deposits long-term
- Multiple temporary virtual accounts — short-lived accounts tied to a specific payment
- Crypto wallets — destination addresses on supported chains (APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, TRON)
- A balance — aggregated USDT value of settled deposits
- A ledger — paginated chronological record of all credits and debits
Endpoint overview
List customers with pagination
List customers with pagination
The
GET /customers endpoint uses cursor-based pagination. Pass cursor from the previous response to fetch the next page, and use limit (max 200) to control page size.Filter customers by email
Filter customers by email
Pass
email as a query parameter to look up a specific customer without knowing their ID.Supported crypto chains for wallets and funding
Supported crypto chains for wallets and funding
When creating a crypto wallet or crypto funding request,
chain must be one of:APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, TRONThe asset field accepts USDC or USDT.