Use this endpoint to assign a dedicated, permanent payment account to one of your end-customers. Unlike dynamic virtual accounts, a customer account is not recycled after each payment — your customer receives a static account number they can reuse for all future transactions. The system verifies the customer’s identity against the core banking system using their BVN or NIN before provisioning the account.
Endpoint
POST https://baasapi.payrepmfb.com/api/v1/account/api/create_customer_account
Sandbox
POST https://shogun-dev.xchangeboxng.com/api/v1/account/api/create_customer_account
Authentication
Include your Bearer token in the Authorization header:
Authorization: Bearer <access_token>
Obtain a token from Generate Token.
Request body
You must supply at least one of bvn or nin. If neither is present, the request will be rejected. Both fields are accepted simultaneously when available.
The sub-customer’s email address — used for identity records and notifications.
The sub-customer’s phone number in local format, for example "08012345678".
The sub-customer’s Bank Verification Number. Must be exactly 11 digits. Required if nin is not provided.
The sub-customer’s National Identification Number. Must be exactly 11 digits. Required if bvn is not provided.
A display name for the account — typically the customer’s full name. If omitted, the system derives the name from the BVN or NIN identity record.
An arbitrary JSON object you can use to store your own reference data alongside the account, for example an internal customer ID or order reference. This field is not used by Shogun for processing.
Example request — with BVN
curl --request POST \
--url https://baasapi.payrepmfb.com/api/v1/account/api/create_customer_account \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"email": "customer@example.com",
"phone": "08012345678",
"bvn": "12345678901",
"account_name": "John Doe",
"metadata": {
"internal_customer_id": "CUST-001"
}
}'
Example request — with NIN
curl --request POST \
--url https://baasapi.payrepmfb.com/api/v1/account/api/create_customer_account \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"email": "customer@example.com",
"phone": "08012345678",
"nin": "98765432101",
"account_name": "Jane Doe"
}'
Response
Success
{
"status": true,
"response_code": "00",
"message": "Customer account created successfully",
"data": {
"account_number": "8801234567",
"account_name": "John Doe",
"account_type": "virtual",
"status": "active",
"balance": "0.000000000",
"last_balance_update": null
}
}
The permanent account number for this customer. Share it with your customer as their payment address — it remains valid indefinitely.
The account holder’s name as resolved from the BVN or NIN record.
Always "virtual" for customer accounts.
"active" — the account is ready to receive funds immediately.
ISO 8601 timestamp of the most recent balance change, or null if no transactions have occurred yet.
Error — missing identity
{
"status": false,
"response_code": "02",
"message": "Either BVN or NIN must be provided.",
"data": null
}
Error — provider rejected
{
"status": false,
"response_code": "83",
"message": "Identity verification failed. Please check the BVN/NIN provided.",
"data": null
}
Error codes
| Code | Meaning |
|---|
00 | Success |
41 | Customer not found — your API credentials are invalid |
80 | Service unavailable — the core banking provider is temporarily down |
83 | Provider error — identity verification failed or the account creation request was rejected |