Temporary Virtual Accounts
Create time limited virtual accounts for one off payments. KYC rules are identical to permanent accounts send exactly one of bvn or nin.
Generate Temporary Virtual Account
Create a time-limited virtual account (label). KYC follows the same rules as permanent generation: you must include exactly one of bvn or nin. The business must have completed verification (compliance.verificationStatus === 'completed').
Customer identifier required
You must include exactly one of
You must include exactly one of
bvn or nin. Do not send both. If both are provided, the API will use BVN.
Endpoint
Authentication
Same as permanent generation: API key, signature, and timestamp headers.
{
"x-api-key": "your_api_key",
"x-signature": "generated_signature",
"x-timestamp": "current_timestamp"
}Body Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Customer display / virtual account name |
email | string | Yes | Customer email |
duration | number | No | Expiry in minutes from creation. Default 40. Response includes expiresInMinutes and persisted expiresAt. |
bvn | string | Yes (or nin) | Customer BVN (11 digits). Required unless nin is provided. Alias: BVN. |
nin | string | Yes (or bvn) | Customer NIN (11 digits). Required unless bvn is provided. Aliases: NIN, ninNumber. |
Send exactly one of bvn or nin. If both are provided, bvn takes precedence.
Request Example
{
"name": "Jane Customer",
"email": "jane@example.com",
"duration": 60,
"nin": "12345678901"
}Response
On success, status is success and data includes the created account document (including isTemporary: true, expiresAt) plus expiresInMinutes.
{
"status": "success",
"data": {
"accountNumber": "1234567890",
"accountName": "Jane Customer",
"bankName": "Virtual Bank",
"isTemporary": true,
"expiresAt": "2024-01-01T00:40:00.000Z",
"expiresInMinutes": 60
}
}