Skip to main content
POST
Create a virtual account
POST /v1/virtual-accounts Pass a banks array instead of a single provider string to request accounts on multiple networks at once. Each provider is attempted independently — if one fails (e.g. PalmPay rejects a duplicate identity document), the other’s account is still returned rather than the whole call failing.
string
required
Full name of the customer
string
Required if paga is one of the requested providers
string
Required if paga is one of the requested providers
array
required
Array of provider names to request, e.g. ["paga", "palmpay"]
Response — all succeeded
Response — partial failure
A 422 is only returned if every requested provider failed. A partial success still returns 201 — always check the errors array, don’t assume success just because the HTTP status is 2xx.

Authorizations

Authorization
string
header
required

sk_live_... or sk_test_... — can call every endpoint. Server-side only.

Body

application/json
customer_name
string
required
Example:

"Jane Doe"

customer_phone
string

Required if provider/banks includes paga

Example:

"+2348012345678"

customer_email
string

Required if provider/banks includes paga

Example:

"jane@example.com"

bvn
string
Example:

"12345678901"

funding_limit
number
Example:

100000

provider
enum<string>
default:paga
Available options:
paga,
palmpay
banks
enum<string>[]
Available options:
paga,
palmpay
Example:

Response

Created

message
string
customer_name
string
accounts
object[]
errors
object[]