---
title: "Create Virtual Account"
method: POST
path: "/pms/api/external/request/customerReservedAccount/"
tags: ["Virtual Accounts"]
---

# Create Virtual Account

`POST /pms/api/external/request/customerReservedAccount/`

Create a reserved virtual bank account for a customer. Each reserved account is unique per customer, supports static and dynamic modes, and triggers notifications when funded. Use static accounts for recurring funding and dynamic accounts for one-time payments.

## Headers

- `api-key` string, required
- `api-secret` string, required
- `Content-Type` 'application/json', required

## Request body

- CreateVirtualAccountRequest
  - `email` string, email, required — Customer email address
  - `name` string, required — Customer full name (first name and last name)
  - `phoneNumber` string, required — Customer phone number in international format
  - `bankcode` string[], required — List of partner bank codes to provision the virtual account with
  - `account_type` 'STATIC' | 'DYNAMIC', required — Type of virtual account to create
  - `businessid` string, required — Merchant business ID supplied by Payvessel
  - `bvn` string — Customer Bank Verification Number (required for STATIC accounts)
  - `nin` string — Customer National Identification Number (use when BVN is unavailable)

## Response `200`

Virtual account created successfully

- CreateVirtualAccountResponse
  - `status` boolean, required — Indicates whether the request succeeded
  - `service` string, required — Operation identifier
  - `business` string, required — Merchant business ID
  - `banks` VirtualAccountBank[], required — Generated virtual bank accounts
    - `bankName` string, required — Name of partner bank
    - `accountNumber` string, required — Account number assigned to the customer
    - `accountName` string, required — Account display name
    - `account_type` 'STATIC' | 'DYNAMIC', required — Virtual account type
    - `expire_date` string, date-time — Expiration timestamp (dynamic accounts only)
    - `trackingReference` string, required — Reference used to track transactions on this account

## Other responses

- `201` — Virtual account created successfully
- `400` — Invalid request payload
- `401` — Unauthorized request
- `403` — Forbidden request
- `404` — Endpoint not found
- `500` — Internal server error

---

[API](https://skmtc.net/payvessel/apis/payvessel-value-added-services-api.md) · [All operations](https://skmtc.net/payvessel/apis/payvessel-value-added-services-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/payvessel/payvessel-value-added-services-api/versions/31040a9358ef/schema)
