QRIS

Generate QRIS

Panduan lengkap untuk membuat QRIS menggunakan API Paylabs.

Request URL

FieldValue
URL${ROOT_URL}/payment/v2.3/qris/create
MethodPOST
Endpoint/payment/v2.3/qris/create

Generate QRIS Request Parameters

Field NameTypeRequiredDescription
Content-TypeString(30)YesIsi dengan nilai "application/json;charset=utf-8"
X-TIMESTAMPString(29)YesWaktu saat ini, dengan format 2026-01-30T12:00:00.000+07:00
X-SIGNATUREString(64)YesSignature. Untuk selengkapnya cek Cara Membuat Signature
X-PARTNER-IDString(20)YesMerchant ID
X-REQUEST-IDString(64)YesID unik merepresentasikan setiap request yang dikirim

Body

ParameterTypeRequiredRemarks
requestIdString(64)YesKode unik untuk setiap request
*catatan : requestId harus sama dengan X-REQUEST-ID
merchantIdString(20)YesID unik yang disediakan oleh payment gateway ke merchant
storeIdString(30)NoJika Merchant memiliki cabang dan ingin membuat order dengan ID cabang
paymentTypeString(20)YesNama tipe pembayaran, cek tabel Tipe Pembayaran
amountDecimal(12,2)YesNominal dalam Rupiah Indonesia
merchantTradeNoString(32)YesKode unik yang dibuat oleh Merchant untuk setiap transaksi
notifyUrlString(200)NoURL yang akan ditembak saat terjadi pembayaran. Untuk parameter-parameternya cek di bagian Inquiry Order
expireNumberNoSatuan adalah detik, tidak didukung, saluran yang berbeda memiliki nilai default yang berbeda
feeTypeString(3)NoJenis pengurangan biaya layanan:BEN/OUR. Standarnya adalah BEN. Ketika OUR dipilih, biaya layanan akan ditambahkan ke nominal order secara otomatis.
productNameString(100)YesNama layanan atau produk
+ productInfoArray<Object>(30)NoInformasi detil atas produk atau layanan dalam transaksi
- idString(10)YesId Produk
- nameString(32)YesNama produk
- pricedecimal(12,2)YesNilai dalam Rupiah, mendukung dua angka di belakang koma
- typeString(20)YesTipe produk
- urlString(200)NoURL produk
- quantityNumber(4)YesJumlah produk

paymentType

Payment TypeCode
QRISQRIS

Generate QRIS Response Parameters

Header

Field NameTypeValueRequired
Content-TypeString(30)Isi dengan nilai "application/json;charset=utf-8"Yes
X-TIMESTAMPString(29)Waktu saat ini, dengan format 2026-01-30T12:00:00.000+07:00Yes
X-SIGNATUREString(64)Signature PaylabsYes
X-PARTNER-IDString(20)ID merchantYes
X-REQUEST-IDString(64)ID unik merepresentasikan setiap request yang dikirimYes

Body

ParameterTypeRequiredRemarks
requestIdString(64)YesKode unik untuk setiap request
errCodeString(32)Yes0 adalah sukses, untuk lainnya bisa lihat tabel
errCodeDesString(128)NoDeskripsi terkait error yang terjadi
merchantIdString(20)YesID merchant
storeIdString(30)NoHanya diisi jika perlu menggunakan id store
paymentTypeString(20)YesNama dari Jenis Pembayaran, cek tabel Jenis Pembayaran
requestAmountDecimal(12,2)NoNominal pada saat permintaan
amountDecimal(12,2)YesNominal dalam Rupiah Indonesia, dengan 2 angka dibelakang desimal.
Jenis pengurangan biaya layanan:Ketika OUR dipilih, biaya layanan akan ditambahkan ke nominal order.
Ketika biaya layanan yang dihitung mengandung desimal, biaya layanan akan otomatis +1 setelah menghilangkan desimal. Misalnya, 10.000,11 akan secara otomatis +1 untuk mendapatkan 10.001,00.
merchantTradeNoString(32)YesKode unik yang dibuat oleh Merchant untuk setiap transaksi
createTimeString(16)NoyyyyMMddHHmmss
qrCodeString(300)NoKode yang bisa digunakan untuk dikonversi menjadi QRIS
qrisUrlString(300)NoLink gambar QRIS
nmidString(32)NoNasional ID Merchant
platformTradeNoString(32)NoNomor order di platform Paylabs
expiredTimeString(16)NoyyyyMMddHHmmss
statusString(32)No01: Pending, 09: Failed, 02: Success
productNameString(100)YesNama layanan atau produk
rrnString(32)NoRRN, kode pembayaran sukses
tidString(32)NoID Terminal atau ID POS
payerString(60)NoNama dari payer yang sebenarnya jika jenis pembayaran didukung, nama pembayar akan dikembalikan.
Jika tidak didukung, nilai null akan dikembalikan.
Saat ini hanya mendukung: QRIS. Catatan: Bukan "payer" yang dikirim oleh merchant saat memulai permintaan.
phoneNumberString(20)NoNomor telepon pembayar
issuerIdString(20)NoID dari aplikasi Issuer
+ productInfoArray<Object>(30)NoInformasi detil atas produk atau layanan dalam transaksi
- idString(10)YesID Produk
- nameString(32)YesNama Produk
- pricedecimal(12,2)YesNilai dalam Rupiah, mendukung dua angka belakang koma
- typeString(20)YesTipe produk
- urlString(200)NoURL produk
- quantityNumber(4)YesKuantitas produk
transFeeRateDecimal(6,6)NoRate Transaksi, mendukung enam angka belakang koma
transFeeAmountDecimal(12,2)NoBiaya layanan, mendukung dua angka belakang koma
totalTransFeeDecimal(12,2)NoTotal rate biaya layanan transaksi (tidak termasuk vatFee), mendukung dua angka belakang koma
vatFeeDecimal(12,2)NoBiaya Pajak, mendukung dua angka belakang koma
accountNoString(32)NoNomor rekening dari payer yang sebenarnya.
Jika jenis pembayaran didukung, nomor rekening pembayar akan dikembalikan.
Jika tidak didukung, nilai null akan dikembalikan. Tidak ada metode pembayaran yang tersedia saat ini

Kode Error

Example

Request

POST /payment/v2.3/qris/create HTTP/1.1
X-TIMESTAMP: 2026-01-30T15:50:35.699+07:00
X-SIGNATURE: EWUc********************FQ==
X-PARTNER-ID: 010001
X-REQUEST-ID: 20260130XXXXXXXXX
Content-Type: application/json;charset=utf-8

{
  "merchantId": "010001",
  "merchantTradeNo": "QRIS-20260130XXXXXXXXX",
  "requestId": "20260130XXXXXXXXX",
  "paymentType": "QRIS",
  "amount": "10000.00",
  "productName": "QRIS Payment",
  "expire": 3600,
  "feeType": "BEN",
  "payer": "John Doe",
  "notifyUrl": "merchant.com/callback/paylabs/qris"
}

Response

HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
X-REQUEST-ID: 20260130XXXXXXXXX
X-PARTNER-ID: 010001
X-TIMESTAMP: 2026-01-30T15:50:41.752+07:00
X-SIGNATURE: cmRAXXXXXXXXXXXXXXXXXXXXxCU=

{
  "merchantId": "010001",
  "requestId": "20260130XXXXXXXXX",
  "errCode": "0",
  "paymentType": "QRIS",
  "amount": "10000.00",
  "merchantTradeNo": "QRIS-20260130XXXXXXXXX",
  "createTime": "20260130XXXXXX",
  "platformTradeNo": "20260130XXXXXXXXXX",
  "expiredTime": "20260130XXXXXXX",
  "status": "01",
  "productName": "QRIS Payment",
  "transFeeRate": "0.007000",
  "transFeeAmount": "0.00",
  "totalTransFee": "70.00",
  "vatFee": "7.70",
  "requestAmount": "10000.00",
  "qrCode": "0002********************1ECA",
  "qrisUrl": "https://payer.paylabs.co.id/payer-api/qr?9421********************1ECA",
  "nmid": "ID000XXX"
}