Skip to main content

QRIS

QRIS is the QR Code standard used for payments in Indonesia QRIS stands for Quick Response Code Indonesian Standard

QRIS Transaction

Generate QRIS MPM

This service is used to create QRIS using the Merchant Presented Mode (MPM) method

Service Info

Service Code47
Http MethodPOST
Path.../v1.0/qr/qr-mpm-generate

Payload Create QRIS Payment

ParametersData TypeMandatoryDescription
partnerReferenceNoStringYTransaction number merchant
Length: 5-50
Allowed Chars: a-z A-Z 0-9 - _
terminalIdStringNID terminal
Length: 3-16
Allowed Chars: a-z A-Z 0-9 - _
amountObjectYObject amount
valueStringYTransaction value
Length: 1-14
Allowed Chars: numeric
currencyStringYCurrency code
Length: 3
Allowed Value: IDR
validityPeriodStringCTransaction time ends
Format: YYYY-MM-DDTHH:mm:ssZ (ISO8601)
Mandatory if additionalInfo.isStatic = false
Must be more than 1 minute and a maximum of 3 months from the time of request
additionalInfoObjectYObject additionalInfo
isStaticBooleanYStatus QRIS
true = Static
false = Dynamic
{
"partnerReferenceNo": "ref00000000001",
"terminalId": "TERM GIGIH",
"subMerchantId": "170041",
"amount": {
"value": "50000.00",
"currency": "IDR"
},
"validityPeriod": "2023-09-06T23:08:56+07:00",
"additionalInfo": {
"isStatic": false
}
}

Response Create QRIS Payment

ParametersData TypeDescription
responseCodeStringResponse COde
responseMessageStringMessage response
partnerReferenceNoStringMerchant Transaction Number
qrContentNull/StringIf the merchant is only ISO, the QRIS will display ISO text
qrUrlStringQR Image Url
terminalIdStringID terminal
additionalInfoObjectObject additionalInfo
contractIdStringGenerated transaction identifier in Winpay system
expiredAtStringTransaction expiration time in ISO8601 string Format
isStaticBooleanStatus QRIS
{
"responseCode": "2004700",
"responseMessage": "Success",
"partnerReferenceNo": "ref00000000001",
"qrContent": null,
"qrUrl": "https://sandbox-payment.winpay.id/scqr/get_image_qr?payid=1309cd8ceef30410ed1664c8c8c0bb76",
"terminalId": "TERM GIGIH",
"additionalInfo": {
"contractId": "qr2300a3fe-68b8-414b-bf00-8f44ce1cf5d3",
"expiredAt": "2023-09-06T23:08:56+07:00",
"isStatic": false
}
}

List Response Code Create Payment QRIS

Response CodeResponse MessageDescription
2004700Success
4004700Invalid response from billerCheck responseMessage for detail error
4004701Invalid field format { field name }
4004702Invalid mandatory field {field name}
4014700Invalid signatureX-Signature wrong
4044716Partner not foundX-Partner-ID not registered
4094700Cannot use same X-EXTERNAL-ID in same dayX-External-ID have been used on the same day
4094701Duplicate partnerReferenceNopartnerReferenceNo already used

Query Payment

This service is used to check the payment status of QRIS

Service Info

Service Code51
Http MethodPOST
Path.../v1.0/qr/qr-mpm-query

Payload Query Payment

Field NameData TypeMandatoryDescription
originalPartnerReferenceNoStringYTransaction number according to the field partnerReferenceNo at the time of create payment
Length: 5-50
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-)
serviceCodeStringYCode service Create QRIS Payment
additionalInfoObjectYObject additionalInfo
additionalInfo.contractIdStringYGenerated transaction identifier in Winpay system
{
"originalPartnerReferenceNo": "gigih-00000081",
"serviceCode": "47",
"additionalInfo": {
"contractId": "qr1906dc67-2e28-4d8a-9546-7cb30d73db2c"
}
}

Response Query Payment

ParametersData TypeDescription
responseCodeStringResponse Code
responseMessageStringMessage Response
originalPartnerReferenceNoStringTransaction ID on the Merchant's system.
serviceCodeStringCreate QRIS Payment service code
latestTransactionStatusString00 - Success, 01 - Initiated, 02 - Paying, 03 - Pending, 04 - Refunded, 05 - Canceled, 06 - Failed, 07 - Not found.
amountObject
valueStringThe total amount of the transaction amount.
currencyStringCurrency.
feeAmountObject
valueStringThe nominal amount of admin.
currencyStringCurrency.
terminalIdStringNMID code from QRIS merchant.
additionalInfoObjectAdditional information.
issuerStringBrand Name issuer.
rrnStringKode rrn from issuer.
buyerRefStringUsername from issuer.
{
"responseCode": "2005100",
"responseMessage": "Success",
"originalPartnerReferenceNo": "gigih-00000081",
"serviceCode": "47",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"paidTime": "2023-08-24T17:03:33+07:00",
"amount": {
"value": "2000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "14.00",
"currency": "IDR"
},
"terminalId": "",
"additionalInfo": {
"issuer": "Dana",
"rrn": "810534941939",
"buyerReff": "Winpay"
}
}

List Response Code Query Payment QRIS

Response CodeResponse MessageDescription
2005100Success
4005100Invalid response from billerCheck responseMessage for detail error
4005101Invalid field format { field name }
4005102Invalid mandatory field {field name}
4015100Invalid signatureX-Signature wrong
4045116Partner not foundX-Partner-ID not registered
4095100Cannot use same X-EXTERNAL-ID in same dayX-External-ID have been used on the same day
4095101Duplicate partnerReferenceNopartnerReferenceNo already used

Cancel Payment

This service is used to cancel the payment of QRIS

Service Info

Service Code77
Http MethodPOST
Path.../v1.0/qr/qr-mpm-cancel

Payload Cancel Payment

Field NameData TypeMandatoryDescription
originalPartnerReferenceNoStringYTransaction ID on the Merchant's system
Length: 5-50
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-)
reasonStringYReason to cancel the payment
additionalInfoObjectYObject additionalInfo
additionalInfo.contractIdStringYGenerated transaction identifier in Winpay system
{
"originalPartnerReferenceNo":"abctoxfzxctpww",
"reason":"Gagal",
"additionalInfo":{
"contractId": "qre9162f14-b282-4325-a72b-25c755db7322"
}
}

Response Cancel Payment

ParameterData TypeDescription
responseCodeStringResponse Code
responseMessageStringResponse Message
originalPartnerReferenceNoStringTransaction ID on the Merchant's system
cancelTimeStringCancelation time
additionalInfoObjectObject additionalInfo
additionalInfo.contractIdStringGenerated transaction identifier in Winpay system
{
"responseCode": "2007700",
"responseMessage": "Request has been processed successfully",
"originalPartnerReferenceNo": "abctoxfzxctpww",
"cancelTime": "2024-05-30T18:08:05+07:00",
"additionalInfo": {
"contractId": "qre9162f14-b282-4325-a72b-25c755db7322"
}
}

List Response Code Cancel Payment QRIS

Response CodeResponse MessageDescription
2007700Success
4007700Invalid response from billerCheck responseMessage for detail error
4007701Invalid field format { field name }
4007702Invalid mandatory field {field name}
4017700Invalid signatureX-Signature wrong
4047716Partner not foundX-Partner-ID not registered
4097700Cannot use same X-EXTERNAL-ID in same dayX-External-ID have been used on the same day
4097701Duplicate partnerReferenceNopartnerReferenceNo already used

Refund QR

This service is used to refund the payment of QRIS

Service Info

Service Code78
Http MethodPOST
Path.../v1.0/qr/qr-mpm-refund

Payload Refund QR

Field NameData TypeMandatoryDescription
originalPartnerReferenceNoStringYsystem Transaction ID on the Merchant's system
Length: 5-50
Allowed Characters: letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-)
partnerRefundNoStringYThe transaction ID on the service provider
refundAmountObjectYrefundAmount information
valueStringYTransaction value
currencyStringYCurrency code
reasonStringYReason to refund the payment
{
"originalPartnerReferenceNo":"73960",
"partnerRefundNo":"QlUNRhxJPh2",
"refundAmount":{
"value":"10000.00",
"currency":"IDR"
},
"reason":"Refund QRIS Test"
}

Response Refund QR

ParameterData TypeDescription
responseCodeStringResponse Code
responseMessageStringResponse Message
originalPartnerReferenceNoStringThe transaction ID on the service provider system
referenceNoStringReference code on the service provider system
partnerRefundNoStringTransaction ID on the Merchant's system
refundAmountObjectrefundAmount information
valueStringTransaction value
currencyStringCurrency code
refundTimeStringRefund time
{
"responseCode": "2007800",
"responseMessage": "Request has been processed successfully",
"originalPartnerReferenceNo": "73960",
"referenceNo": "17225167794af1ea705908578b138fe268",
"partnerRefundNo": "QlUNRhxJPh2",
"refundAmount": {
"value": "10000.00",
"currency": "IDR"
},
"refundTime": "2024-08-01T19:52:59+07:00"
}

List Response Code Refund QR

Response CodeResponse MessageDescription
2007800Success
4007800Invalid response from billerCheck responseMessage for detail error
4007801Invalid field format { field name }
4007802Invalid mandatory field {field name}
4017800Invalid signatureX-Signature wrong
4047816Partner not foundX-Partner-ID not registered
4097800Cannot use same X-EXTERNAL-ID in same dayX-External-ID have been used on the same day
4097801Duplicate partnerReferenceNopartnerReferenceNo already used

Terminal ID Registration

Merchants can use the Terminal ID feature according to merchant needs with a note that the Terminal ID sent has been registered with Winpay. For Terminal ID registration, you can fill in the following documents: [link]

Handle Payment Callback

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

We will send a callback to the merchant 3x until the merchant responds with the expected response. However, when the first callback attempt is appropriate, we will not send any more callbacks.

Callback Info

Service Code52
HTTP MethodPOST
Path{{yoururl}}/v1.0/qr/qr-mpm-notify

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
originalReferenceNoStringThe transaction ID on the service provider system.
originalPartnerReferenceNoStringTransaction ID on the Merchant's system.
latestTransactionStatusString00 - Success
01 - Initiated
02 - Paying
03 - Pending
04 - Refunded
05 - Canceled
06 - Failed
07 - Not found.
amountObject
valueStringThe total amount of the transaction amount.
currencyStringCurrency.
additionalInfoObjectAdditional information.
channelStringThe bank code of the bank to which you want to pay.
contractIdStringThe reference code for the corresponding request.
brandNameStringBrand Name issuer.
rrnStringKode rrn from issuer.
buyerRefStringUsername from issuer.
nmidStringNMID Code from QRIS merchant.
terminalIdStringNMID Code from QRIS merchant.
feeAmountStringWinpay admin fee
nettAmountStringTotal value received by merchants
{
"originalReferenceNo": "54083",
"originalPartnerReferenceNo": "abctoxfzxctpq",
"latestTransactionStatus": "00",
"amount": {
"value": "10002.00",
"currency": "IDR"
},
"additionalInfo": {
"channel": "QRIS",
"contractId": "qrabf1e3e0-7e30-4ebf-a38f-8cc5d4453fb7",
"brandName": "DANA",
"rrn": "527420057612",
"buyerRef": "WINPAY",
"terminalId": "A01",
"feeAmount": "70.01",
"nettAmount": "9931.99"
}
}

Expected Results

The expected response from the merchant is as follows:

{
"responseCode": "2005200",
"responseMessage": "success"
}