---
title: "Create a virtual account"
method: POST
path: "/virtual-accounts"
tags: ["Virtual-Accounts"]
---

# Create a virtual account

`POST /virtual-accounts`

Create a virtual account

## Headers

- `X-Trace-Id` string
- `X-Idempotency-Key` string
- `X-Scenario-Key` string

## Request body

- VirtualAccountIn
  - `reference` string, required — A custom identifier to track the transaction, This must be unique across all your transactions.
  - `customer_id` string, required — The customer id
  - `amount` number, required — The amount to be collected. Specify `0` for static accounts.
  - `expiry` integer — The expiry time of the virtual account.
  - `currency` 'NGN' | 'GHS' | 'EGP' | 'KES' | 'MAD' | 'ZAR', required — ISO 4217 currency code.
  - `account_type` 'static' | 'dynamic', required — The type of virtual account.
  - `meta` Meta
  - `narration` string — This allows you specify the name shown when the account is resolved.
  - `bvn` string — This is the customer's Bank Verification Number.
  - `nin` string — This is the customer's National Identity Number.
  - `customer_account_number` string — This is the bank account the transfer will originate from. required for EGP and KES
  - `merchant_vat_amount` number
  - `bank_code` string — The bank code.

## Response `201`

OK

- object
  - `status` 'success' | 'failed'
  - `message` string
  - `data` VirtualAccount
    - `id` string — The virtual account ID.
    - `amount` number — The amount to be collected. Specify `0` for static accounts.
    - `account_number` string — The bank account number.
    - `reference` string — A custom identifier to track the transaction, This must be unique across all your transactions.
    - `account_bank_name` string — The name of the bank.
    - `account_type` 'static' | 'dynamic' — The type of virtual account.
    - `status` 'active' | 'inactive' — The status of the virtual account.
    - `account_expiration_datetime` string, date-time — The expiry date and time of the virtual account.
    - `note` string — A message providing instructions for the bank transfer, which includes the narration provided in the request.
    - `customer_id` string — The ID of the customer.
    - `created_datetime` string, date-time — The date and time when the virtual account was created..
    - `meta` Meta
    - `customer_reference` string — This is the reference the customer sends as narration when making the bank transfer
    - `currency` string — ISO 4217 currency code.
    - `narration` string — This allows you specify the name shown when the account is resolved.

## Other responses

- `400` — Bad request
- `401` — Unauthorised request
- `403` — Forbidden
- `409` — Conflict

---

[API](https://skmtc.net/flutterwave/apis/flutterwave-apis.md) · [All operations](https://skmtc.net/flutterwave/apis/flutterwave-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/flutterwave/flutterwave-apis/revisions/6014190df2e9/schema)
