{
"amount": 50000,
"customer": {
"name": "Ada Obi",
"email": "ada@example.com"
},
"accountName": "Acme Checkout",
"narration": "Order #1042"
}
curl -X POST "https://api.cngn.co/v1/api/virtual-account/temporary" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "<base64 AES-256-CBC ciphertext of the plain body>",
"iv": "<base64 16-byte IV>"
}'
{
"status": 200,
"message": "Temporary virtual account created successfully",
"data": {
"reference": "DEP-8c1f2a9b",
"paymentReference": "PAY-55aa66bb",
"amount": 50000,
"amountExpected": 50075,
"fee": 70,
"vat": 5,
"currency": "NGN",
"status": "pending",
"narration": "Order #1042",
"accountNumber": "8801234567",
"accountName": "Acme Checkout",
"bankName": "Wema Bank",
"bankCode": "035",
"expiresAt": "2026-07-22T18:45:00.000Z"
}
}
{
"status": 400,
"message": "amount: Minimum amount is 100 NGN"
}
Deposits
Create Temporary Virtual Account
Create a one-time virtual account for a single customer deposit
POST
/
v1
/
api
/
virtual-account
/
temporary
{
"amount": 50000,
"customer": {
"name": "Ada Obi",
"email": "ada@example.com"
},
"accountName": "Acme Checkout",
"narration": "Order #1042"
}
curl -X POST "https://api.cngn.co/v1/api/virtual-account/temporary" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "<base64 AES-256-CBC ciphertext of the plain body>",
"iv": "<base64 16-byte IV>"
}'
{
"status": 200,
"message": "Temporary virtual account created successfully",
"data": {
"reference": "DEP-8c1f2a9b",
"paymentReference": "PAY-55aa66bb",
"amount": 50000,
"amountExpected": 50075,
"fee": 70,
"vat": 5,
"currency": "NGN",
"status": "pending",
"narration": "Order #1042",
"accountNumber": "8801234567",
"accountName": "Acme Checkout",
"bankName": "Wema Bank",
"bankCode": "035",
"expiresAt": "2026-07-22T18:45:00.000Z"
}
}
{
"status": 400,
"message": "amount: Minimum amount is 100 NGN"
}
Creates a short-lived virtual account tied to a specific expected amount, ideal for checkout flows where each customer payment needs its own account number. The account expires at
Response (decrypted
expiresAt.
Requires the Fiat Deposit permission. The request body must be encrypted.
Body parameters (plain payload, pre-encryption)
number
required
Expected deposit amount in Naira. Minimum
100.object
required
string
Custom display name for the account (3–50 characters).
string
Payment narration (max 100 characters).
Response (decrypted data)
string
Your deposit reference.
string
Provider payment reference.
number
Amount the customer should transfer.
number
Total expected including fees.
number
Processing fee.
number
VAT on the fee.
string
NGN.string
Deposit status (e.g.
pending).string
Narration attached to the account.
string
Temporary NUBAN account number.
string
Account display name.
string
Bank hosting the account.
string
CBN bank code.
string
ISO 8601 expiry timestamp. Deposits after this time are not credited.
{
"amount": 50000,
"customer": {
"name": "Ada Obi",
"email": "ada@example.com"
},
"accountName": "Acme Checkout",
"narration": "Order #1042"
}
curl -X POST "https://api.cngn.co/v1/api/virtual-account/temporary" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "<base64 AES-256-CBC ciphertext of the plain body>",
"iv": "<base64 16-byte IV>"
}'
{
"status": 200,
"message": "Temporary virtual account created successfully",
"data": {
"reference": "DEP-8c1f2a9b",
"paymentReference": "PAY-55aa66bb",
"amount": 50000,
"amountExpected": 50075,
"fee": 70,
"vat": 5,
"currency": "NGN",
"status": "pending",
"narration": "Order #1042",
"accountNumber": "8801234567",
"accountName": "Acme Checkout",
"bankName": "Wema Bank",
"bankCode": "035",
"expiresAt": "2026-07-22T18:45:00.000Z"
}
}
{
"status": 400,
"message": "amount: Minimum amount is 100 NGN"
}