Dokumentasi API QRPAY88
REST API untuk menerima pembayaran QRIS & mengirim payout ke rekening bank. Semua request POST/GET JSON.
Base URL: https://api.qrpay88.net · Mata uang IDR (rupiah bulat) · Daftar akun & ambil API key di agent.qrpay88.net.
Autentikasi
Sertakan API key & secret di setiap request lewat header. Ambil/rotasi di portal agen. Secret hanya tampil sekali saat dibuat.
x-api-key: q8_xxxxxxxxxxxxxxxx
x-api-secret: xxxxxxxxxxxxxxxxxxxxxxxx
Buat QRIS
Membuat kode QRIS untuk ditagihkan ke pelanggan. Saat dibayar, saldo Anda bertambah amount − fee dan webhook dikirim (jika diset).
Body
| Field | Tipe | Keterangan | |
|---|---|---|---|
amount | integer | wajib | Nominal rupiah bulat, mis. 10000 |
client_order_id | string | opsional | ID order Anda sendiri — idempotency (request ulang dgn ID sama mengembalikan order lama) |
remark | string | opsional | Catatan (maks 120 char) |
Contoh
curl -X POST https://api.qrpay88.net/v1/qris \
-H "x-api-key: $KEY" -H "x-api-secret: $SECRET" \
-H "Content-Type: application/json" \
-d '{"amount":10000,"client_order_id":"INV-001","remark":"Order 001"}'
Respons
{
"orderId": "Q81780...e1e", // referensi order Anda (mch_order_no)
"gatewayRef": "T123456", // referensi gateway
"amount": 10000,
"fee": 150, // fee yang ditagih ke Anda
"net": 9850, // yang masuk ke saldo saat dibayar
"qrString": "00020101021226...", // string QRIS (render jadi QR sendiri)
"qrImage": "https://...", // URL gambar QR (jika tersedia)
"status": "PENDING"
}
Cek Status Order
Cek status QRIS atau payout. Andalkan ini untuk konfirmasi (selain webhook).
curl "https://api.qrpay88.net/v1/order?orderId=Q81780...e1e" \
-H "x-api-key: $KEY" -H "x-api-secret: $SECRET"
{ "orderId":"Q81780...e1e", "amount":10000, "fee":150, "net":9850,
"status":"PAID", "paidAt":"2026-06-18T07:12:00.000Z" }
Kirim Payout
Transfer dana dari saldo Anda ke rekening bank. Saldo dipotong amount + fee di muka; jika gateway menolak, saldo dikembalikan otomatis.
Body
| Field | Tipe | Keterangan | |
|---|---|---|---|
amount | integer | wajib | Nominal rupiah bulat |
account_name | string | wajib | Nama pemilik rekening (maks 64) |
account_no | string | wajib | Nomor rekening tujuan |
bank_id | string | wajib | Kode bank (lihat catatan di bawah) |
client_order_id | string | opsional | ID Anda — idempotency |
remark | string | opsional | Catatan (maks 40, huruf/angka/spasi) |
curl -X POST https://api.qrpay88.net/v1/payout \
-H "x-api-key: $KEY" -H "x-api-secret: $SECRET" \
-H "Content-Type: application/json" \
-d '{"amount":50000,"account_name":"Budi","account_no":"1234567890","bank_id":"014","client_order_id":"PO-001"}'
{ "orderId":"Q8...", "amount":50000, "fee":1000, "status":"PROCESSING" }
Status akhir (SUCCESS/FAILED) dikonfirmasi via webhook atau GET /v1/order. Jika gagal, saldo dikembalikan & status jadi REVERSED.
Cek Saldo
curl https://api.qrpay88.net/v1/balance -H "x-api-key: $KEY" -H "x-api-secret: $SECRET"
{ "agent":"AG00001", "balance":19760, "currency":"IDR" }
Daftar Bank / E-wallet
Ambil daftar bank & e-wallet beserta bankId untuk dipakai di payout. type: 1=bank & VA, 2=e-wallet (kosong=semua). Di-cache 1 jam.
curl "https://api.qrpay88.net/v1/banks?type=2" -H "x-api-key: $KEY" -H "x-api-secret: $SECRET"
{ "banks": [ { "bankId": 164, "name": "OVO", "type": 2 },
{ "bankId": 165, "name": "DANA", "type": 2 },
{ "bankId": 167, "name": "GOPAY","type": 2 } ] }
Webhook
Daftarkan URL callback di portal agen. Kami kirim POST JSON saat status berubah (QRIS dibayar, payout sukses/gagal), ditandatangani HMAC-SHA256 (header x-qrpay-signature) memakai secret webhook Anda.
{ "event":"qris.paid", "orderId":"Q8...", "amount":10000, "net":9850, "status":"PAID" }
Balas 200 OK. Verifikasi: HMAC_SHA256(secret, raw_body). Selama pengiriman webhook digulirkan, andalkan GET /v1/order untuk konfirmasi pasti.
Kode Status
| Status | Arti |
|---|---|
| PENDING | QRIS dibuat, menunggu pembayaran |
| PAID | QRIS dibayar, saldo dikredit |
| EXPIRED | QRIS kedaluwarsa |
| PROCESSING | Payout sedang diproses gateway |
| SUCCESS | Payout berhasil |
| FAILED / REVERSED | Payout gagal, saldo dikembalikan |
Penanganan Error
Error mengembalikan kode HTTP non-200 + body { "error": "pesan" }.
| HTTP | Arti |
|---|---|
400 | Input salah / saldo tidak cukup |
401 | API key/secret salah |
403 | Akun agen nonaktif |
404 | Order tidak ditemukan |
429 | Terlalu banyak request (rate limit 60/menit) |
502 | Gateway menolak (untuk payout, saldo dikembalikan) |
© 2026 QRPAY88 · Pembayaran diproses oleh penyedia berlisensi.