Skip to Content
NigeriaVirtual Account (Nigeria)

Virtual Account (Nigeria)

One reusable Nigerian bank account per Transacty merchant. BVN Basic is required once to provision it (bvn + name; no face image).

Live API keys only. Scope: payin:create.

There is no expiryDate and no amount on the virtual account. Payers transfer any amount; pay-in limits apply when a credit settles.

Get status / details

GET/v1/ngn/virtual-accountpayin:create

No body. Sign with {timestamp}..

curl -X GET https://api.transacty.ai/v1/ngn/virtual-account \
  -H "X-Transacty-Key: $TRANSACTY_KEY" \
  -H "X-Transacty-Timestamp: $TS" \
  -H "X-Transacty-Signature: $SIG" \
  -H "Content-Type: application/json"
statusreadyAction
bvn_requiredfalseCall POST with BVN Basic fields
pendingfalsePoll GET
active (or bank details present)trueShow details to payers; accept transfers

Provision (BVN Basic + VA)

POST/v1/ngn/virtual-accountpayin:create

Idempotency-Key is required. Replaying the same key + same body returns the first response.

Request fields

FieldTypeRequiredNotes
bvnstringYes11 digits. Encrypt in transit; do not store raw BVN at rest in your systems if avoidable
firstNamestringYesBVN Basic name match
lastNamestringYesBVN Basic name match
phoneNumberstringNoe.g. +2348012345678
dateOfBirthstringNoYYYY-MM-DD
customerEmailstringNo
faceImageNot supportedOmit always

Example

{ "bvn": "22123456789", "firstName": "Ada", "lastName": "Okafor", "phoneNumber": "+2348012345678", "dateOfBirth": "1990-01-15", "customerEmail": "ada@example.com" }

Response shape matches GET. When ready: true, share accountNumber / bankName / accountName with payers.

After the VA is ready, payers transfer NGN to those bank details. Transacty creates the pay-in and credits your NGN wallet, then sends payin.completed. There is no create-per-payment endpoint.

Next steps

Last updated on