QRIS
Generate QRIS
Panduan lengkap untuk membuat QRIS menggunakan API Paylabs.
Request URL
| Field | Value |
|---|---|
| URL | ${ROOT_URL}/payment/v2.3/qris/create |
| Method | POST |
| Endpoint | /payment/v2.3/qris/create |
Generate QRIS Request Parameters
Header
| Field Name | Type | Required | Description |
|---|---|---|---|
| Content-Type | String(30) | Yes | Isi dengan nilai "application/json;charset=utf-8" |
| X-TIMESTAMP | String(29) | Yes | Waktu saat ini, dengan format 2026-01-30T12:00:00.000+07:00 |
| X-SIGNATURE | String(64) | Yes | Signature. Untuk selengkapnya cek Cara Membuat Signature |
| X-PARTNER-ID | String(20) | Yes | Merchant ID |
| X-REQUEST-ID | String(64) | Yes | ID unik merepresentasikan setiap request yang dikirim |
Body
| Parameter | Type | Required | Remarks |
|---|---|---|---|
| requestId | String(64) | Yes | Kode unik untuk setiap request *catatan : requestId harus sama dengan X-REQUEST-ID |
| merchantId | String(20) | Yes | ID unik yang disediakan oleh payment gateway ke merchant |
| storeId | String(30) | No | Jika Merchant memiliki cabang dan ingin membuat order dengan ID cabang |
| paymentType | String(20) | Yes | Nama tipe pembayaran, cek tabel Tipe Pembayaran |
| amount | Decimal(12,2) | Yes | Nominal dalam Rupiah Indonesia |
| merchantTradeNo | String(32) | Yes | Kode unik yang dibuat oleh Merchant untuk setiap transaksi |
| notifyUrl | String(200) | No | URL yang akan ditembak saat terjadi pembayaran. Untuk parameter-parameternya cek di bagian Inquiry Order |
| expire | Number | No | Satuan adalah detik, tidak didukung, saluran yang berbeda memiliki nilai default yang berbeda |
| feeType | String(3) | No | Jenis pengurangan biaya layanan:BEN/OUR. Standarnya adalah BEN. Ketika OUR dipilih, biaya layanan akan ditambahkan ke nominal order secara otomatis. |
| productName | String(100) | Yes | Nama layanan atau produk |
| + productInfo | Array<Object>(30) | No | Informasi detil atas produk atau layanan dalam transaksi |
| - id | String(10) | Yes | Id Produk |
| - name | String(32) | Yes | Nama produk |
| - price | decimal(12,2) | Yes | Nilai dalam Rupiah, mendukung dua angka di belakang koma |
| - type | String(20) | Yes | Tipe produk |
| - url | String(200) | No | URL produk |
| - quantity | Number(4) | Yes | Jumlah produk |
paymentType
| Payment Type | Code |
|---|---|
| QRIS | QRIS |
Generate QRIS Response Parameters
Header
| Field Name | Type | Value | Required |
|---|---|---|---|
| Content-Type | String(30) | Isi dengan nilai "application/json;charset=utf-8" | Yes |
| X-TIMESTAMP | String(29) | Waktu saat ini, dengan format 2026-01-30T12:00:00.000+07:00 | Yes |
| X-SIGNATURE | String(64) | Signature Paylabs | Yes |
| X-PARTNER-ID | String(20) | ID merchant | Yes |
| X-REQUEST-ID | String(64) | ID unik merepresentasikan setiap request yang dikirim | Yes |
Body
| Parameter | Type | Required | Remarks |
|---|---|---|---|
| requestId | String(64) | Yes | Kode unik untuk setiap request |
| errCode | String(32) | Yes | 0 adalah sukses, untuk lainnya bisa lihat tabel |
| errCodeDes | String(128) | No | Deskripsi terkait error yang terjadi |
| merchantId | String(20) | Yes | ID merchant |
| storeId | String(30) | No | Hanya diisi jika perlu menggunakan id store |
| paymentType | String(20) | Yes | Nama dari Jenis Pembayaran, cek tabel Jenis Pembayaran |
| requestAmount | Decimal(12,2) | No | Nominal pada saat permintaan |
| amount | Decimal(12,2) | Yes | Nominal 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. |
| merchantTradeNo | String(32) | Yes | Kode unik yang dibuat oleh Merchant untuk setiap transaksi |
| createTime | String(16) | No | yyyyMMddHHmmss |
| qrCode | String(300) | No | Kode yang bisa digunakan untuk dikonversi menjadi QRIS |
| qrisUrl | String(300) | No | Link gambar QRIS |
| nmid | String(32) | No | Nasional ID Merchant |
| platformTradeNo | String(32) | No | Nomor order di platform Paylabs |
| expiredTime | String(16) | No | yyyyMMddHHmmss |
| status | String(32) | No | 01: Pending, 09: Failed, 02: Success |
| productName | String(100) | Yes | Nama layanan atau produk |
| rrn | String(32) | No | RRN, kode pembayaran sukses |
| tid | String(32) | No | ID Terminal atau ID POS |
| payer | String(60) | No | Nama 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. |
| phoneNumber | String(20) | No | Nomor telepon pembayar |
| issuerId | String(20) | No | ID dari aplikasi Issuer |
| + productInfo | Array<Object>(30) | No | Informasi detil atas produk atau layanan dalam transaksi |
| - id | String(10) | Yes | ID Produk |
| - name | String(32) | Yes | Nama Produk |
| - price | decimal(12,2) | Yes | Nilai dalam Rupiah, mendukung dua angka belakang koma |
| - type | String(20) | Yes | Tipe produk |
| - url | String(200) | No | URL produk |
| - quantity | Number(4) | Yes | Kuantitas produk |
| transFeeRate | Decimal(6,6) | No | Rate Transaksi, mendukung enam angka belakang koma |
| transFeeAmount | Decimal(12,2) | No | Biaya layanan, mendukung dua angka belakang koma |
| totalTransFee | Decimal(12,2) | No | Total rate biaya layanan transaksi (tidak termasuk vatFee), mendukung dua angka belakang koma |
| vatFee | Decimal(12,2) | No | Biaya Pajak, mendukung dua angka belakang koma |
| accountNo | String(32) | No | Nomor 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 |
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"
}