Skip to main content

Virtual Account (VA)

Virtual Account (VA) is one of the payment methods provided by Winpay. VA can be used to make payments via mobile banking, internet banking, and ATM.

Virtual Account Types

VA provided by Winpay is divided into 3 types, namely:

  • ONE OFF (c) = VA that can only be used for 1 time payment.
  • OPEN RECURRING (o) = VA that can be used for periodic payments and is open payment (customer input own nominal).
  • CLOSE RECURRING (r) = VA that can be used for periodic payments and is a close payment (customers cannot input their own nominal).

Supported Payment Methods

The supported payment methods for each type of virtual account are as follows:

Channel CodeInstitutionOne Off (c)Open Recurring (o)Close Recurring (r)
BRIBank Rakyat Indonesia✔️
BNIBank Negara Indonesia✔️
MANDIRIBank Mandiri✔️
PERMATABank Permata✔️✔️✔️
BSIBank Syariah Indonesia✔️✔️✔️
MUAMALATBank Muamalat✔️✔️✔️
BCABank Central ASIA✔️✔️✔️
CIMBBank CIMB NIAGA✔️✔️✔️
SINARMASBank Sinarmas✔️✔️✔️
BNCBank Neo Commerce✔️✔️✔️
INDOMARETIndomaret✔️
ALFAMARTAlfamart✔️

Virtual Account Transaction

Create VA

This service is used to create a new virtual account (VA)

Service Info

Service Code27
Http MethodPOST
Path.../v1.0/transfer-va/create-va

Payload Create VA

ParametersData TypeMandatoryDescription
customerNoStringCVirtual Account No (if applicable)
Mandatory if virtualAccountTrxType = o / r
Length: 3-14
Allowed Chars: numeric
Jika virtualAccountTrxType = c and VA Number is not available, The VA number will be randomly generated
virtualAccountNameStringYVirtual Account Name
Length: 5-24
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_), hyphens (-), and spaces (\s)
trxIdStringYTransaction Number
Length: 5-50
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-)
totalAmountObjectCTotal transaction amount
Mandatory if virtualAccountTrxType = c / r
valueStringYTransaction value
Length: 1-14
Allowed Chars: numeric
currencyStringYCurrency code
Length: 3
Allowed Value: IDR
virtualAccountTrxTypeStringYType of transaction VA
Allowed Value: c / o / r
expiredDateStringCTransaction expiration date
Format: YYYY-MM-DDTHH:mm:ss+07:00
Mandatory if virtualAccountTrxType = c / r
Must be more than 1 minute and a maximum of 3 months from the time of request
additionalInfoObjectYAdditional information
channelStringYChannel code
Allowed Value: BRI / BNI / MANDIRI / PERMATA / BSI / MUAMALAT / BCA / CIMB / SINARMAS / BNC / INDOMARET / ALFAMART
{
"customerNo": "000003212",
"virtualAccountName": "Chus Pandi",
"trxId": "INV-000000023212x2221",
"totalAmount": {
"value": "25000.00",
"currency": "IDR"
},
"virtualAccountTrxType": "c",
"expiredDate": "2023-09-05T19:30:14+07:00",
"additionalInfo": {
"channel": "CIMB"
}
}

Response Create VA

ParametersData TypeDescription
responseCodeStringResponse Code
responseMessageStringMessage response
virtualAccountDataObjectData that has been created
partnerServiceIdStringBank's BIN code
customerNoStringCustomer Number
virtualAccountNoStringVirtual Account Number
virtualAccountNameStringVirtual Account Name
trxIdStringMerchant transaction number
totalAmountObjectTotal transaction amount
valueStringThe transaction value paid by the customer
currencyStringCurrency code
virtualAccountTrxTypeStringType of VA transaction
expiredDateStringTransaction expiration date
additionalInfoObjectAdditional information
channelStringCode channel
contractIdStringTransaction reference generated by Winpay
{
"responseCode": "2002700",
"responseMessage": "Success",
"virtualAccountData": {
"partnerServiceId": " 22691",
"customerNo": "41693898987",
"virtualAccountNo": " 2269141693898987",
"virtualAccountName": "Chus Pandi",
"trxId": "INV-000000023212x2221",
"totalAmount": {
"value": "25000.00",
"currency": "IDR"
},
"virtualAccountTrxType": "c",
"expiredDate": "2023-09-05T19:30:14+07:00",
"additionalInfo": {
"channel": "CIMB",
"contractId": "cia80bff69-1073-4811-b1e1-13b738784d8b"
}
}
}

List ResponseCode Create VA

Response CodeResponse MessageDescription
2002700Success
4002700Invalid response from billerCheck responseMessage for the error details
4002701Invalid field format { field name }
4002702Invalid mandatory field {field name}
4012700Invalid signatureX-Signature wrong
4042716Partner not foundX-Partner-ID not registered
4092700Cannot use same X-EXTERNAL-ID in same dayX-External-ID It has already been used on the same day
4092701Duplicate trxIdtrxId has been used before

Inquiry VA

This service is used to check the status of active / inactive virtual accounts

Service Info

Service Code30
Path.../v1.0/transfer-va/inquiry-va

Payload Inquiry VA

ParametersData TypeMandatoryDescription
trxIdStringYTransaction Number
Length: 5-50
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-)
additionalInfoObjectYAdditional information
contractIdstringYcontractId from create VA
{
"trxId": "INV-000000023212x22",
"additionalInfo": {
"contractId": "ci302a21c9-bb4b-40c5-880d-e99691ed0af9"
}
}

Response Inquiry VA

ParametersData TypeDescription
responseCodeStringResponse code
responseMessageStringMessage response
virtualAccountDataObjectData VA that has been created
partnerServiceIdStringBank's BIN code
customerNoStringCustomer Number
virtualAccountNoStringVirtual Account Number
virtualAccountNameStringVirtual Account Name
trxIdStringTransaction merchant number
totalAmountObjectTotal transaction amount
valueStringThe transaction value paid by the customer
currencyStringCurrency code
virtualAccountTrxTypeStringType of VA transaction
expiredDateStringTransaction expiration date
additionalInfoObjectAdditional information
channelStringChannel code
contractIdStringTransaction reference generated by Winpay
{
"responseCode": "2003000",
"responseMessage": "Success",
"virtualAccountData": {
"virtualAccountNo": "2269186000003212",
"virtualAccountName": "Mas Nchus",
"trxId": "INV-000000023212x22",
"totalAmount": {
"value": "25000.00",
"currency": "IDR"
},
"expiredDate": "2023-09-01T19:30:14+00:00",
"additionalInfo": {
"channel": "CIMB",
"contractId": "ci302a21c9-bb4b-40c5-880d-e99691ed0af9"
}
}
}

List ResponseCode Inquiry VA

Response CodeResponse MessageDescription
2003000Success
4003000Invalid response from billerCheck responseMessage for the error details
4003001Invalid field format { field name }
4003002Invalid mandatory field {field name}
4013000Invalid signatureX-Signature wrong
4043001Transaction not foundtrxId and contractId not found
4043016Partner not foundX-Partner-ID not registered
4093000Cannot use same X-EXTERNAL-ID in same dayX-External-ID It has already been used on the same day
4093001Duplicate trxIdtrxId sudah pernah digunakan
5003002reqbill not foundtrxId has been used before

Inquiry Status

This service is used to check the transaction status of virtual accounts

Service Info

Service Code26
Path.../v1.0/transfer-va/status

Payload Inquiry Status

ParametersData TypeMandatoryDescription
virtualAccountNoStringYVirtual Account Number
trxIdStringYTransaction Number
Length: 5-50
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-)
additionalInfoObjectYAdditional information
contractIdstringYcontractId from create VA
{
"virtualAccountNo": " 2269141708949044",
"additionalInfo": {
"contractId": "ciaf1b982a-9d06-4e27-ba39-a6aefd9e813d",
"channel": "CIMB",
"trxId": "xxxxxxxxxxx13"
}
}

Response Inquiry Status

ParametersData TypeDescription
responseCodeStringResponse code
responseMessageStringMessage response
virtualAccountDataObjectData VA that has been created
virtualAccountNoStringVirtual Account Number
virtualAccountNameStringVirtual Account Name
paymentFlagStatusStringTransaction Status VA (00 - paid, 01 - unpaid, 02 - check)
transactionDateStringTransaction date
referenceNoStringPayment reference number
totalAmountObjectTotal transaction amount
valueStringThe transaction value paid by the customer
currencyStringCurrency code
additionalInfoObjectAdditional information
channelStringCode channel
contractIdStringWinpay generated transaction reference
trxIdStringMerchant transaction number
{
"responseCode": "2002600",
"responseMessage": "Successful",
"virtualAccountData": {
"virtualAccountNo": "2269141708949044",
"virtualAccountName": "Valid 14",
"paymentFlagStatus": "00",
"transactionDate": "2024-02-26T19:04:51+00:00",
"referenceNo": "50966",
"totalAmount": {
"value": "15000.00",
"currency": "IDR"
}
},
"additionalInfo": {
"contractId": "ciaf1b982a-9d06-4e27-ba39-a6aefd9e813d",
"channel": "CIMB",
"trxId": "xxxxxxxxxxx13"
}
}

List ResponseCode Inquiry Status

Response CodeResponse MessageDescription
2002600Success
4002600Invalid response from billerCheck responseMessage for the error details
4002601Invalid field format { field name }
4002602Invalid mandatory field {field name}
4012600Invalid signatureX-Signature wrong
4042601Transaction not foundtrxId and contractId not found
4042616Partner not foundX-Partner-ID not registered
4092600Cannot use same X-EXTERNAL-ID in same dayX-External-ID It has already been used on the same day
4092601Duplicate trxIdtrxId has been used before
5002602reqbill not foundcontractId not found

Delete VA

This service is used to cancel virtual accounts with unpaid status

Service Info

Service Code31
Path.../v1.0/transfer-va/delete-va

Payload Delete VA

ParametersData TypeMandatoryDescription
virtualAccountNoStringYVirtual Account Number
trxIdStringYTransaction Number
Length: 5-50
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-)
additionalInfoObjectYAdditional information
contractIdstringYcontractId from create VA
channelStringKode channel
{
"virtualAccountNo": " 2269131710748503",
"trxId": "XINV-000000170104",
"additionalInfo": {
"contractId": "ci067a0336-4ddf-4001-9cef-3eb107c331f4",
"channel": "CIMB"
}
}

Response Delete VA

ParametersData TypeDescription
responseCodeStringResponse code
responseMessageStringMessage response
virtualAccountDataObjectData VA that has been created
trxIdStringMerchant transaction number
additionalInfoObjectAdditional information
contractIdStringWinpay generated transaction reference
channelStringCode channel
{
"responseCode": "2003100",
"responseMessage": "Success",
"virtualAccountData": {
"trxId": "xxxxxxxxxxx20"
},
"additionalInfo": {
"contractId": "si4390d6cb-5e9f-41fb-bfa3-51f6e7c9e4b4",
"channel": "BSI"
}
}

List ResponseCode Delete VA

Response CodeResponse MessageDescription
2003100Success
4003100Invalid response from billerCheck responseMessage for error detail
4003101Invalid field format { field name }
4003102Invalid mandatory field {field name}
4013100Invalid signatureX-Signature wrong
4043101Transaction not foundtrxId dan contractId not found
4043116Partner not foundX-Partner-ID not registered
4093100Cannot use same X-EXTERNAL-ID in same dayX-External-ID have been used on the same day
4093101Duplicate trxIdtrxId already used
5003102reqbill not foundcontractId not found

Handle Payment Callback

After the customer makes a payment, Winpay will send a callback to the merchant to notify the payment status The merchant must implement a service to receive callbacks from Winpay

We will send a callback to the merchant 3x until the merchant responds with the expected response However, if the first callback attempt is successful, we will not send another callback

Callback Info

Service Code25
HTTP MethodPOST
Path{{yoururl}}/v1.0/transfer-va/payment

Header Structure

HeaderValueDescription
Content-Typeapplication/json
X-Timestamp2023-08-24T17:07:05+07:00ISO8601 String
X-Partner-ID{partnerId}
X-Signature{signature}
X-External-ID{externalId}
Channel-ID{channelId}

Callback Payload

ParametersData TypeDescription
partnerServiceIdStringBank's BIN code
customerNoStringCustomer Number
virtualAccountNoStringVirtual Account Number
virtualAccountNameStringVirtual Account Name
trxIdStringMerchant transaction number
paymentRequestIdStringPayment transaction number
PaidAmountObjectTotal transaction amount
valueStringThe value of the transaction paid by the customer
currencyStringCurrency code
trxDateTimeStringTransaction date
referenceNoStringPayment reference number
additionalInfoObjectAdditional information
channelStringChannel code
contractIdStringWinpay generated transaction reference
feeAmountStringWinpay admin fee
nettAmountStringTotal value received by merchants
{
"partnerServiceId": " 22691",
"customerNo": "41693903614",
"virtualAccountNo": " 2269141693903614",
"virtualAccountName": "Bayar 2269141693903614",
"trxId": "INV-000000023212x2224",
"paymentRequestId": "88889123",
"paidAmount": {
"value": "10000",
"currency": "IDR"
},
"trxDateTime": "2023-09-05T22:47:00+07:00",
"referenceNo": 36238,
"additionalInfo": {
"channel": "CIMB",
"contractId": "ci71a51730-2373-455f-b538-3f9912fefb73",
"feeAmount": "1000.00",
"nettAmount": "9000.00"
}
}

Expected Response

The expected response from the merchant is as follows:

{
"responseCode": "2002500",
"responseMessage": "Successful"
}