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 - _
subMerchantIdStringCID merchant winpay milik submerchant
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",
"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

Response CodeResponse MessageDescription
2004700Success
4004700Bad RequestKegagalan request umum, termasuk kegagalan saat memproses pesan
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
5004700General ErrorKesalahan umum
5004701Internal Server ErrorKegagalan internal server yang tidak dikenal. Silakan coba prosesnya kembali

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
4005100Bad RequestKegagalan request umum, termasuk kegagalan saat memproses pesan
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
5005100General ErrorKesalahan umum
5005101Internal Server ErrorKegagalan internal server yang tidak dikenal. Silakan coba prosesnya kembali

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
4007700Bad RequestKegagalan request umum, termasuk kegagalan saat memproses pesan
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
5007700General ErrorKesalahan umum
5007701Internal Server ErrorKegagalan internal server yang tidak dikenal. Silakan coba prosesnya kembali

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