Skip to main content

QRIS

QRIS adalah standar QR Code yang digunakan untuk pembayaran di Indonesia. QRIS merupakan singkatan dari Quick Response Code Indonesian Standard.

Transaksi QRIS

Generate QRIS MPM

Service ini digunakan untuk membuat QRIS dengan metode Merchant Presented Mode (MPM).

Service Info

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

Payload Create QRIS Payment

ParameterTipe DataWajibDeskripsi
partnerReferenceNoStringYNomor transaksi merchant
Length: 5-50
Karakter yang Diizinkan: a-z A-Z 0-9 - _
terminalIdStringNID terminal
Length: 3-16
Karakter yang Diizinkan: a-z A-Z 0-9 - _
amountObjectYTotal
valueStringYNilai transaksi
Length: 1-14
Karakter yang Diizinkan: numeric
currencyStringYKode mata uang
Length: 3
Allowed Value: IDR
validityPeriodStringCWaktu transaksi berakhir
Format: YYYY-MM-DDTHH:mm:ssZ (ISO8601)
Wajib jika additionalInfo.isStatic = false
Harus lebih dari 1 menit dan maksimal 3 bulan dari waktu 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

ParameterTipe DataDeskripsi
responseCodeStringKode response
responseMessageStringPesan response
partnerReferenceNoStringNomor transaksi merchant
qrContentNull/StringJika merchant onlyISO maka akan muncul ISO text QRIS
qrUrlStringQR Image Url
terminalIdStringID terminal
additionalInfoObjectObject additionalInfo
contractIdStringNomor identifikasi transaksi yang dihasilkan di sistem Winpay
expiredAtStringWaktu kedaluwarsa transaksi dalam Format string ISO8601
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

Kode ResponPesan ResponDeskripsi
2004700Success
4004700Invalid response from billerCek responseMessage untuk detail errornya
4004701Invalid field format { field name }
4004702Invalid mandatory field {field name}
4014700Invalid signatureX-Signature salah
4044716Partner not foundX-Partner-ID tidak terdaftar
4094700Cannot use same X-EXTERNAL-ID in same dayX-External-ID sudah pernah digunakan di hari yang sama
4094701Duplicate partnerReferenceNopartnerReferenceNo sudah pernah digunakan

Query Payment

Service ini digunakan untuk cek status pembayaran dari QRIS

Service Info

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

Payload Query Payment

Nama FieldTipe DataWajibDeskripsi
originalPartnerReferenceNoStringYNomor transaksi sesuai dengan field partnerReferenceNo pada saat create payment
Length: 5-50
Karakter yang Diizinkan: huruf (a-z, A-Z), angka (0-9), garis bawah (_) dan tanda hubung (-)
serviceCodeStringYKode service Create QRIS Payment
additionalInfoObjectYInfo tambahan
additionalInfo.contractIdStringYNomor identifikasi transaksi yang dihasilkan di sistem Winpay
{
"originalPartnerReferenceNo": "gigih-00000081",
"serviceCode": "47",
"additionalInfo": {
"contractId": "qr1906dc67-2e28-4d8a-9546-7cb30d73db2c"
}
}

Response Query Payment

ParameterTipe DataDeskripsi
responseCodeStringKode response
responseMessageStringPesan response
originalPartnerReferenceNoStringID transaksi pada sistem Merchant.
serviceCodeStringKode service Create QRIS Payment
latestTransactionStatusString00 - Success, 01 - Initiated, 02 - Paying, 03 - Pending, 04 - Refunded, 05 - Canceled, 06 - Failed, 07 - Not found.
amountObject
valueStringJumlah total nominal transaksi.
currencyStringMata uang.
feeAmountObject
valueStringJumlah nominal admin.
currencyStringMata uang.
terminalIdStringKode NMID dari QRIS merchant.
additionalInfoObjectInformasi tambahan.
issuerStringNama brand issuer.
rrnStringKode rrn dari issuer.
buyerRefStringNama user dari 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

Kode ResponPesan ResponDeskripsi
2005100Success
4005100Invalid response from billerCek responseMessage untuk detail errornya
4005101Invalid field format { field name }
4005102Invalid mandatory field {field name}
4015100Invalid signatureX-Signature salah
4045116Partner not foundX-Partner-ID tidak terdaftar
4095100Cannot use same X-EXTERNAL-ID in same dayX-External-ID sudah pernah digunakan di hari yang sama
4095101Duplicate partnerReferenceNopartnerReferenceNo sudah pernah digunakan

Cancel Payment

Service ini digunakan untuk membatalkan pembayaran dari QRIS

Service Info

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

Payload Cancel Payment

Field NameTipe DataWajibDeskripsi
originalPartnerReferenceNoStringYNomor transaksi sesuai dengan field partnerReferenceNo pada saat create payment
Length: 5-50
Karakter yang Diizinkan: huruf (a-z, A-Z), angka (0-9), garis bawah (_) dan tanda hubung (-)
reasonStringYAlasan membatalkan pembayaran
additionalInfoObjectYObject additionalInfo
additionalInfo.contractIdStringYInformasi tambahan
{
"originalPartnerReferenceNo":"abctoxfzxctpww",
"reason":"Gagal",
"additionalInfo":{
"contractId": "qre9162f14-b282-4325-a72b-25c755db7322"
}
}

Response Cancel Payment

ParameterTipe DataDeskripsi
responseCodeStringKode response
responseMessageStringPesan response
originalPartnerReferenceNoStringNomor transaksi sesuai dengan field partnerReferenceNo pada saat create payment
cancelTimeStringWaktu pembatalan
additionalInfoObjectObject additionalInfo
additionalInfo.contractIdStringInformasi tambahan
{
"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

Kode ResponPesan ResponDeskripsi
2007700Success
4007700Invalid response from billerCek responseMessage untuk detail errornya
4007701Invalid field format { field name }
4007702Invalid mandatory field {field name}
4017700Invalid signatureX-Signature salah
4047716Partner not foundX-Partner-ID tidak terdaftar
4097700Cannot use same X-EXTERNAL-ID in same dayX-External-ID sudah pernah digunakan di hari yang sama
4097701Duplicate partnerReferenceNopartnerReferenceNo sudah pernah digunakan

Refund QR

Service ini digunakan untuk pengembalian dana pembayaran dari QRIS

Service Info

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

Payload Refund QR

Field NameTipe DataWajibDeskripsi
originalPartnerReferenceNoStringYNomor transaksi sesuai dengan field partnerReferenceNo pada saat create payment
Length: 5-50
Karakter yang Diizinkan: huruf (a-z, A-Z), angka (0-9), garis bawah (_) dan tanda hubung (-)
partnerRefundNoStringYID transaksi pada sistem penyedia layanan
refundAmountObjectYInformasi refundAmount
valueStringYJumlah total nominal transaksi
currencyStringYMata uang
reasonStringYAlasan pengembalian dana pembayaran
{
"originalPartnerReferenceNo":"73960",
"partnerRefundNo":"QlUNRhxJPh2",
"refundAmount":{
"value":"10000.00",
"currency":"IDR"
},
"reason":"Refund QRIS Test"
}

Response Refund QR

ParameterTipe DataDeskripsi
responseCodeStringKode response
responseMessageStringPesan response
originalPartnerReferenceNoStringID transaksi pada sistem penyedia layanan
referenceNoStringKode referensi pada sistem penyedia layanan
partnerRefundNoStringNomor transaksi sesuai dengan field partnerReferenceNo pada saat create payment
refundAmountObjectInformasi refundAmount
valueStringJumlah total nominal transaksi
currencyStringMata uang
refundTimeStringWaktu pengembalian dana
{
"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

Kode ResponPesan ResponDeskripsi
2007800Success
4007800Invalid response from billerCek responseMessage untuk detail errornya
4007801Invalid field format { field name }
4007802Invalid mandatory field {field name}
4017800Invalid signatureX-Signature salah
4047816Partner not foundX-Partner-ID tidak terdaftar
4097800Cannot use same X-EXTERNAL-ID in same dayX-External-ID sudah pernah digunakan di hari yang sama
4097801Duplicate partnerReferenceNopartnerReferenceNo sudah pernah digunakan

Terminal ID Registration

Merchant dapat menggunakan fitur Terminal ID sesuai kebutuhan merchant dengan catatan Terminal ID yang dikirimkan sudah terdaftar pada Winpay. Untuk pendaftaran Terminal ID anda dapat mengisi document berikut [link]

Handle Payment Callback

Setelah customer melakukan pembayaran, Winpay akan mengirimkan callback ke merchant untuk memberitahukan status pembayaran. Merchant harus mengimplementasikan service untuk menerima callback dari Winpay.

Kami akan mengirimkan callback ke merchant 3x sampai merchant meresponse dengan response yang diharapkan. Namun ketika percobaan callback pertama sudah sesuai maka kami tidak akan mengirimkan callback lagi.

Callback Info

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

Struktur Header

HeaderValueDeskripsi
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

ParameterTipe DataDeskripsi
originalReferenceNoStringID transaksi pada sistem penyedia layanan.
originalPartnerReferenceNoStringID transaksi pada sistem Merchant.
latestTransactionStatusString00 - Success
01 - Initiated
02 - Paying
03 - Pending
04 - Refunded
05 - Canceled
06 - Failed
07 - Not found.
amountObject
valueStringJumlah total nominal transaksi.
currencyStringMata uang.
additionalInfoObjectInformasi tambahan.
channelStringKode bank dari bank tujuan pembayaran.
contractIdStringKode referensi untuk request terkait.
brandNameStringNama brand issuer.
rrnStringKode rrn dari issuer.
buyerRefStringNama user dari issuer.
nmidStringKode NMID dari QRIS merchant.
terminalIdStringKode NMID dari QRIS merchant.
{
"originalReferenceNo": "38740",
"originalPartnerReferenceNo": "1013225-1698047338",
"latestTransactionStatus": "00",
"amount": {
"value": "35490",
"currency": "IDR"
},
"additionalInfo": {
"channel": "QRIS",
"contractId": "qraa6e280d-2299-45ed-a040-783af3d4e80c",
"brandName": "DANA",
"rrn": "737659758297",
"buyerRef": "PDAM",
"terminalId": "A01"
}
}

Expected Results

Response yang diharapkan dari merchant adalah sebagai berikut:

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