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 - _
terminalIdStringCID terminal
Length: 3-16
Allowed Chars: a-z A-Z 0-9 - _
subMerchantIdStringCID merchant winpay from submerchant
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",
"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
4004700Bad RequestGeneral request failed error, including message parsing failed.
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
5004700General ErrorGeneral Error.
5004701Internal Server ErrorUnknown Internal Server Failure, Please retry the process again.

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
4005100Bad RequestGeneral request failed error, including message parsing failed.
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
5005100General ErrorGeneral Error.
5005101Internal Server ErrorUnknown Internal Server Failure, Please retry the process again.

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
4007700Bad RequestGeneral request failed error, including message parsing failed.
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
5007700General ErrorGeneral Error.
5007701Internal Server ErrorUnknown Internal Server Failure, Please retry the process again.

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"
}