Skip to main content
Reserve virtual bank accounts so customers can pay by transferring to a unique account number. Use STATIC accounts for recurring funding (e.g. wallet top-up, rent) or DYNAMIC accounts for one-time payments.

STATIC account

Permanent account; requires BVN or NIN. Safe to store and reuse.

DYNAMIC account

Temporary, one-time use. Create when needed; do not store.

STATIC vs DYNAMIC

STATICDYNAMIC
LifespanPermanentTemporary, single use
Use caseRecurring payments, wallet funding, saved beneficiariesOne-time payment (e.g. checkout)
BVN/NINRequired (BVN or NIN)Not required
StorageCan store in your DB; customer can save as beneficiaryDo not store; create when you need it
After useStays validBecomes invalid immediately after use
DYNAMIC accounts: If a customer sends money to an expired or already-used DYNAMIC account, they will receive a refund. Always create a new DYNAMIC account per transaction when using one-time flows.

How it works

  1. You call the Reserve an Account API with customer details and account_type: STATIC or DYNAMIC.
  2. Payvessel returns one or more virtual account numbers (per partner bank).
  3. You share the account number, account name, and bank name with the customer.
  4. When the customer transfers to that account, Payvessel, the partner bank, and you (the merchant) get notified.
  5. You use the account reference / tracking reference for reconciliation and records.

Partner bank codes

BankCode
PalmPay999991
9Payment Service Bank120001
You can request accounts for one or both banks by passing their codes in the bankcode array.

When to use which

  • Single-service payments (e.g. electricity, ISP): Reserve an account per customer so they pay by transfer; you get notifications and can confirm payment.
  • Wallets / top-up (e.g. super agents, investment apps, logistics): Use STATIC accounts so each customer has a permanent account number to fund their wallet.
  • One-time checkout: Use DYNAMIC — create an account when the user chooses “Pay with bank transfer”, show the details, and do not reuse that account.

API reference (code, payload, response)

For the Create Virtual Account and Get Virtual Account endpoints — including request/response bodies, headers, and code samples — use the API reference tab:

Next steps

Create Virtual Account (API)

OpenAPI reference for create virtual account

Get Virtual Account

Fetch account details by business ID and account number

Payment notifications

Configure webhooks for payment notifications

API overview

Authentication and base URLs