---
title: "Create Virtual Account"
method: POST
path: "/transfer-va/create-va"
---

# Create Virtual Account

`POST /transfer-va/create-va`

The following endpoint creates a new virtual account

## Headers

- `Content-Type` string, required
- `X-TIMESTAMP` string, required
- `Authorization` string, required
- `X-SIGNATURE` string, required
- `X-PARTNER-ID` string, required
- `X-EXTERNAL-ID` string, required
- `CHANNEL-ID` string, required

## Request body

- object
  - `virtualAccountName` string, required — Mandatory Display name for the virtual account which will appear in ATM/Banking app.
  - `customerNo` string — Account suffix for the virtual account. If not provided, a random suffix will be automatically generated for the virtual account number.
  - `virtualAccountTrxType` string, required — "C" = Closed Amount -> only accepts payments that exactly match the predefined amount "O" = Open Amount -> accepts payments of any amount
  - `trxId` string, required — Transaction reference from merchant’s system. Must be unique.
  - `expiredDate` string — Expiry time in ISO 8601: YYYY-MM-DDThh:mm:ss+07:00. Required if the VA is reusable.
  - `totalAmount` object — Conditional. Required if virtualAccountTrxType is set to "C" (Closed Amount Virtual Account).
    - `currency` string, required — Currency in ISO 4217 format. Only “IDR” value is accepted.
    - `value` string, required — Transaction amount with 2 decimal places.
  - `additionalInfo` object, required
    - `bankCode` string, required — The bank code for the Virtual Account. Supported Bank Codes: "BRI", "BCA", "MANDIRI", "PERMATA", "CIMB", "BNI”, "NOBU”
    - `isReusable` boolean — true = VA can be paid multiple times until expiry time | false = VA can only be paid once. Defaults to false
    - `customerInfo` object — Object containing fields (id, email, mobile, given_name, customer_ref_id). given_name is mandatory for crypto merchants, as this will be the field being used for payor information validation.
      - `customer_ref_id` string — Merchant’s customer reference
      - `given_name` string — Customer name. Mandatory for crypto merchants as the parameter for payor name validation.
      - `email` string — Customer's email address in a valid email format (e.g., jane.doe@gmail.com) without invalid special characters (¢, £, §, ©, etc.)
      - `mobile` string — Customer's mobile number in Indonesia's phone number format (+62xxxxxxxxxx or 08xxxxxxxxxx), with a length of 8 to 14 digits.
      - `id` string — Durianpay's customer ID

## Response `200`

---

[API](https://skmtc.net/durianpay/apis/durianpay-api.md) · [All operations](https://skmtc.net/durianpay/apis/durianpay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/durianpay/durianpay-api/versions/ffc0e7e8a227/schema)
