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.

💡 Model dompet prabayar. Pembayaran QRIS yang masuk menambah saldo Anda (dipotong fee). Payout memotong saldo. Top-up saldo lewat portal agen.

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
⚠️ Simpan secret di server Anda. Jangan taruh di kode frontend / aplikasi mobile.

Buat QRIS

POST /v1/qris

Membuat kode QRIS untuk ditagihkan ke pelanggan. Saat dibayar, saldo Anda bertambah amount − fee dan webhook dikirim (jika diset).

Body

FieldTipeKeterangan
amountintegerwajibNominal rupiah bulat, mis. 10000
client_order_idstringopsionalID order Anda sendiri — idempotency (request ulang dgn ID sama mengembalikan order lama)
remarkstringopsionalCatatan (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

GET /v1/order?orderId=<orderId>

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

POST /v1/payout

Transfer dana dari saldo Anda ke rekening bank. Saldo dipotong amount + fee di muka; jika gateway menolak, saldo dikembalikan otomatis.

Body

FieldTipeKeterangan
amountintegerwajibNominal rupiah bulat
account_namestringwajibNama pemilik rekening (maks 64)
account_nostringwajibNomor rekening tujuan
bank_idstringwajibKode bank (lihat catatan di bawah)
client_order_idstringopsionalID Anda — idempotency
remarkstringopsionalCatatan (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.

⚠️ bank_id diambil dari GET /v1/banks (mis. OVO=164, DANA=165, GOPAY=167).

Cek Saldo

GET /v1/balance
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

GET /v1/banks?type=<1|2>

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

StatusArti
PENDINGQRIS dibuat, menunggu pembayaran
PAIDQRIS dibayar, saldo dikredit
EXPIREDQRIS kedaluwarsa
PROCESSINGPayout sedang diproses gateway
SUCCESSPayout berhasil
FAILED / REVERSEDPayout gagal, saldo dikembalikan

Penanganan Error

Error mengembalikan kode HTTP non-200 + body { "error": "pesan" }.

HTTPArti
400Input salah / saldo tidak cukup
401API key/secret salah
403Akun agen nonaktif
404Order tidak ditemukan
429Terlalu banyak request (rate limit 60/menit)
502Gateway menolak (untuk payout, saldo dikembalikan)

© 2026 QRPAY88 · Pembayaran diproses oleh penyedia berlisensi.