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

# Create a virtual account

`POST /v1/virtual-accounts`

Create a new virtual account for the business. The payment provider and method are automatically
determined based on the business configuration.

A business can only have one virtual account per payment provider method. If a virtual account
already exists for the same provider method, a 409 Conflict error is returned.

The business must have payments enabled to create a virtual account.

## Headers

- `X-BUSINESS-API-KEY` string, required

## Response `201`

Virtual account created successfully

- object
  - `data` object
    - `id` string, uuid
    - `name` string — Display name of the virtual account
    - `reference` string — Virtual account reference number
    - `payment_provider` string — Payment provider identifier (e.g., dbs_sg)
    - `payment_provider_method` string — Payment provider method identifier (e.g., dbs_sg_virtual_account)
    - `payment_provider_method_logos` object[] — Array of logo objects for the payment method
      - `method` string — Payment method identifier
      - `iconName` string — Icon file name
      - `displayName` string — Human-readable method name
      - `description` string — Method description
      - `sm` string, uri — Small PNG logo URL
      - `md` string, uri — Medium PNG logo URL
      - `lg` string, uri — Large PNG logo URL
      - `svg` string, uri — SVG logo URL
      - `svg_square` string, uri — Square SVG logo URL
    - `payment_provider_method_main_logo` object, nullable — Main logo object for the payment method, or null
      - `method` string — Payment method identifier
      - `iconName` string — Icon file name
      - `displayName` string — Human-readable method name
      - `description` string — Method description
      - `sm` string, uri — Small PNG logo URL
      - `md` string, uri — Medium PNG logo URL
      - `lg` string, uri — Large PNG logo URL
      - `svg` string, uri — SVG logo URL
      - `svg_square` string, uri — Square SVG logo URL
    - `supported_currencies` string[], nullable — List of supported currency codes
    - `transfer_types` string[] — Supported transfer types for this virtual account
    - `address` string — Business address
    - `status` string, nullable — Current status of the virtual account
    - `created_by` object, nullable — User who created the virtual account, or null
      - `id` string, uuid
      - `display_name` string
      - `first_name` string
      - `last_name` string
    - `created_at` string, date-time — Creation timestamp (Atom format)
    - `updated_at` string, date-time — Last update timestamp (Atom format)

## Other responses

- `401` — Unauthorized
- `403` — Forbidden — business does not have payments enabled
- `409` — Conflict — a virtual account already exists for this provider method

---

[API](https://skmtc.net/hitpayapp/apis/hitpay-api.md) · [All operations](https://skmtc.net/hitpayapp/apis/hitpay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hitpayapp/hitpay-api/revisions/6aae1a736990/schema)
