Topremit
OPEN APITopremit
OPEN APITopremit
  1. Virtual Account
  • Open API
    • Virtual Account
      • Create Virtual Account
        POST
      • Inquiry Status Virtual Account
        POST
      • Virtual Account Callback
        POST
      • Cancel Virtual Account
        POST
      • Simulate Virtual Account Payment (Test Mode Only)
        POST
    • QRIS
      • Create QRIS
      • Inquiry QRIS
      • QRIS Callback
      • Simulate QRIS Payment (Test Mode Only)
    • Fetch Access Token
      POST
  1. Virtual Account

Create Virtual Account

Developing
POST
/pg/snap/v1/transfer-va/create-va
Last modified:2025-05-19 04:29:39
Ideal for scenarios where you need to assign a dedicated VA to each transaction, such as e-commerce checkouts, invoice payments, or wallet top-ups.
This endpoint allows you to create a dynamic Virtual Account (VA) for a specific transaction. A VA provides a unique bank account number that customers can use to make payments via bank transfers. Once the payment is received, the system automatically updates the transaction status, facilitating seamless reconciliation.
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://staging-uno.topremit.com/pg/snap/v1/transfer-va/create-va' \
--header 'Authorization;' \
--header 'CHANNEL-ID;' \
--header 'X-TIMESTAMP;' \
--header 'X-SIGNATURE;' \
--header 'X-PARTNER-ID;' \
--header 'X-EXTERNAL-ID;' \
--header 'Content-type:  application/json' \
--data-raw '{
    "partnerServiceId": "string",
    "customerNo": "string",
    "virtualAccountNo": "string",
    "virtualAccountName": "string",
    "trxId": "string",
    "totalAmount": {
        "value": "string",
        "currency": "string"
    },
    "expiredDate": "string",
    "additionalInfo": {
        "channel": "string",
        "description": "string"
    }
}'
Response Response Example
200 - Example 1
{
    "responseCode": "string",
    "responseMessage": "string",
    "virtualAccountData": {
        "partnerServiceId": "string",
        "customerNo": "string",
        "virtualAccountNo": "string",
        "trxId": "string",
        "totalAmount": {
            "value": "string",
            "currency": "string"
        },
        "expiredDate": "string",
        "additionalInfo": {
            "paymentId": "string",
            "channelCode": "string",
            "status": "string",
            "created_at": "string"
        }
    }
}

Request

Header Params
Content-type
string 
required
Only accept application/json
Example:
application/json
Authorization
string 
required
Bearer token for authentication
CHANNEL-ID
string 
required
Unique identifier for the channel
X-TIMESTAMP
string 
required
Client's current local time in ISO 8601 format: yyyy-MM- ddTHH:mm:ssTZD.
e.g., 2025-05-15T12:34:31+07:00
X-SIGNATURE
string 
required
Format: HMAC_SHA512 (clientSecret, stringToSign) with stringToSign = HTTPMethod +":"+ EndpointUrl +":"+ AccessToken +":"+ Lowercase(HexEncode(SHA256(minify(RequestBody))))+ ":" + X-TimeStamp
X-PARTNER-ID
string 
required
Your assigned Client ID
X-EXTERNAL-ID
string 
required
Unique idempotency key for the request (valid for at least 24 hours)
Body Params application/json
partnerServiceId
string 
optional
Identifier for the partner service
customerNo
string 
optional
Customer number associated with the VA
virtualAccountNo
string 
optional
Desired Virtual Account number.
You may assign a specific Virtual Account number using this parameter. If omitted, the system will automatically generate one. Ensure the number you provide is within your allocated VA range and do not include the merchant code prefix, as it will be added automatically.
virtualAccountName
string 
required
trxId
string 
required
Unique transaction ID provided by the merchant. Please note that this field needs to be unique for each payments.
totalAmount
object 
required
value
string 
required
Format should include 2 decimal places
currency
string 
required
Only IDR is allowed
expiredDate
string 
optional
Expiry time in ISO 8601 format: yyyy-MM- ddTHH:mm:ssTZD.
e.g., 2025-05-15T12:34:31+07:00
Default value is 24 hour after creation date.
additionalInfo
object 
required
channel
string 
required
Payment channel for the virtual account. e.g BCA
description
string 
optional
Description/Notes of the VA
Examples

Responses

🟢200Success
application/json
Body
responseCode
string 
required
2002700
responseMessage
string 
required
virtualAccountData
object 
required
partnerServiceId
string 
required
customerNo
string 
required
virtualAccountNo
string 
required
trxId
string 
required
totalAmount
object 
required
expiredDate
string 
required
additionalInfo
object 
required
🟠400Bad Request
Previous
Virtual Account
Next
Inquiry Status Virtual Account
Built with