---
title: "Update Virtual Account API"
method: PUT
path: "/transfer-va/update-va"
---

# Update Virtual Account API

`PUT /transfer-va/update-va`

Use this endpoint to update the properties of an existing virtual account. Common use cases include:

- Updating the transaction amount for closed virtual accounts

- Extending or modifying the expiry date of an active virtual account

- Expiring a virtual account immediately by setting the expiredDate to the current timestamp

This operation requires a valid `virtualAccountNo`, along with the associated `trxId`.

## Headers

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

## Request body

- object
  - `partnerServiceId` string, required — Virtual Account prefix. Please pass the same one as returned in the Create VA API.
  - `customerNo` string, required — Virtual Account suffix. Please pass the same one as returned in the Create VA API.
  - `virtualAccountNo` string, required — Full Virtual Account Number. Please pass the same one as returned in the Create VA API.
  - `virtualAccountName` string, required — Display name for the virtual account which will appear in ATM/Banking app.
  - `trxId` string, required — Transaction reference from merchant’s system.
  - `expiredDate` string — Expiry time in ISO 8601: YYYY-MM-DDThh:mm:ss+07:00.
  - `totalAmount` object — Conditional. Required if updating the amount of a closed-amount type virtual account.
    - `currency` string, required — Currency in ISO 4217 format. Only “IDR” value is accepted.
    - `value` string, required — Transaction amount with 2 decimal places.

## Response `200`

This response indicates that update virtual account was successful.

- object
  - `responseCode` string, required — Response code indicating the result of the operation.
  - `responseMessage` string, required — Message explaining the responseCode.
  - `virtualAccountData` object, required
    - `partnerServiceId` string — First 8 digits of the virtual account number.
    - `customerNo` string — Remaining suffix of the virtual account number assigned by merchant.
    - `virtualAccountNo` string — The complete virtual account number to be shared to customer.
    - `virtualAccountName` string — Display name for the virtual account which will appear in ATM/Banking app.
    - `trxId` string — Merchant’s unique transaction reference.
    - `totalAmount` object — This will only be present if the created virtual account is a closed amount type.
      - `value` string — Transaction amount with 2 decimal places.
      - `currency` string — Currency format in ISO 4217. Only "IDR" accepted.
    - `virtualAccountTrxType` string — C = Closed, O = Open.
    - `expiredDate` string — Expiry date of VA. Format: YYYY-MM-DDThh:mm:ss+07:00.
    - `additionalInfo` object
      - `isReusable` string — true = VA can be paid multiple times until expiry time, false = VA can only be paid once.

## Other responses

- `400` — This response indicates a client-side error occurred while processing the request.
- `404` — This response indicates a server-side not found error occurred while processing the request.
- `500` — This response indicates a server-side error occurred while processing the request.

---

[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)
