Prerequisites
All wallet endpoints require a valid merchant Bearer token in theAuthorization header:
Create a wallet
UsePOST /wallet to create a wallet for a new customer. You must supply at least one government-issued identifier — either a BVN or NIN.
Gather customer details
Collect the customer’s name, phone number, date of birth, and at least one of BVN or NIN. The
customerId field is optional — if omitted, TagPay generates one.Request fields
| Field | Type | Required | Description |
|---|---|---|---|
firstName | string | Yes | Customer’s first name |
lastName | string | Yes | Customer’s last name |
phoneNumber | string | Yes | Nigerian phone number |
dateOfBirth | string | Yes | ISO date string (YYYY-MM-DD) |
bvn | string | Yes* | 11-digit BVN (*required if NIN not provided) |
nin | string | Yes* | 11-digit NIN (*required if BVN not provided) |
email | string | No | Customer email address |
customerId | string | No | Your internal customer ID |
currency | string | No | Defaults to NGN |
tier | string | No | TIER_1, TIER_2, or TIER_3. Defaults to TIER_1 |
address | string | No | Customer’s address |
metadata | object | No | Arbitrary key-value pairs |
Bulk wallet creation via CSV
To create wallets for many customers at once, upload a CSV file toPOST /wallet/bulk-create-customers. The file must be sent as multipart/form-data with the field name customers.
cURL
Check wallet balance
UseGET /wallet/balance to fetch your merchant settlement balance, or GET /wallet/customer to retrieve a specific customer’s wallet.
cURL
Credit a wallet
UsePOST /wallet/credit to add funds to a customer’s wallet from your merchant settlement balance.
cURL
| Field | Type | Required | Description |
|---|---|---|---|
customerId | string | Yes | The customer to credit |
amount | number | Yes | Amount in kobo (smallest unit) |
reference | string | No | Your unique transaction reference (min 10 chars) |
metadata | object | No | Arbitrary key-value pairs |
Debit a wallet
UsePOST /wallet/debit to withdraw funds from a customer’s wallet back to your merchant settlement balance.
cURL
Batch credit and debit
To credit or debit multiple wallets in a single API call, use the batch endpoints.Batch credit (by customer ID)
cURL
Batch debit (by customer ID)
cURL
POST /wallet/batch-credit-customer-via-wallet-idPOST /wallet/batch-debit-customer-via-wallet-id
walletId in each transaction object instead of customerId.
Batch reference requirements
batchReferencemust be at least 10 characters- Each
referencewithintransactionsmust also be at least 10 characters
To reverse a batch transaction, call
POST /wallet/reverse-batch-transaction with the batchReference and a description explaining the reason for reversal.Enable or disable a wallet
You can temporarily disable a customer’s wallet (for example, when suspicious activity is detected) and re-enable it when ready.| Field | Type | Required | Description |
|---|---|---|---|
customerId | string | Yes | The customer whose wallet to close or enable |
reason | string | Yes | The reason for the action |
List all wallets
Retrieve a paginated list of all customer wallets under your merchant account:cURL
| Query param | Type | Description |
|---|---|---|
page | number | Page number (default: 1) |
perPage | number | Results per page (default: 20) |
search | string | Search by name or identifier |
accountNumber | string | Filter by 10-digit account number |
phoneNumber | string | Filter by phone number |
