Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

QRIS — Buat Transaksi

Membuat QRIS pembayaran untuk satu transaksi. Pelanggan memindai QR code yang dihasilkan menggunakan aplikasi m-banking atau dompet digital.

URL: POST /api/v1/merchant/payin/qris/create

Request

Headers

HeaderWajibKeterangan
X-API-KeyYaAPI Key merchant
Content-TypeYaapplication/json
X-SignatureKondisionalJika Signature Validation aktif
X-TimestampKondisionalUnix timestamp (jika Signature Validation aktif)

Body

FieldTipeWajibKeterangan
req_idStringYaID unik transaksi dari merchant (idempotency key)
product_idStringYaKode produk QRIS (contoh: "GPAY")
amountStringYaNominal pembayaran dalam IDR (digits only)

Contoh Request

{
  "req_id": "QRIS-20240501-001",
  "product_id": "GPAY",
  "amount": "150000"
}
curl -X POST "https://api-sandbox.alfakios.com/api/v1/merchant/payin/qris/create" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: apk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -d '{
    "req_id": "QRIS-20240501-001",
    "product_id": "GPAY",
    "amount": "150000"
  }'

Response

Spesifikasi

FieldTipeKeterangan
req_idStringreq_id yang dikirim merchant
ref_idStringID referensi internal sistem
product_idStringKode produk QRIS
trace_numberStringNomor unik dari GPay — simpan untuk cek status dan refund
statusStringSUCCESS (QRIS berhasil dibuat), PENDING, atau FAILED
rcStringKode respon
descriptionStringKeterangan RC
messageStringPesan detail
amountStringNominal pembayaran
dataObjectData tambahan dari GPay, termasuk QR string/URL

Contoh Response Berhasil

{
  "success": true,
  "message": "QRIS created successfully",
  "rc": "000",
  "data": {
    "req_id": "QRIS-20240501-001",
    "ref_id": "1777946295495371000",
    "product_id": "GPAY",
    "trace_number": "240501001234",
    "status": "SUCCESS",
    "rc": "000",
    "description": "QRIS Created",
    "message": "QRIS berhasil dibuat",
    "amount": "150000",
    "data": {
      "qr_string": "00020101021226670016ID.CO.BCA.WWW01189360050300000068790215240501001234...",
      "qr_url": "https://api.gpay.co.id/qris/240501001234.png",
      "expired_at": "2024-05-01T10:15:00Z"
    }
  }
}

Contoh Response Gagal

{
  "success": true,
  "message": "QRIS creation failed",
  "rc": "009",
  "data": {
    "req_id": "QRIS-20240501-002",
    "status": "FAILED",
    "rc": "009",
    "description": "Biller Error",
    "message": "GPay tidak tersedia saat ini",
    "data": {}
  }
}

Langkah Selanjutnya

Setelah mendapatkan QRIS:

  1. Tampilkan QR code kepada pelanggan menggunakan data.qr_string (render menjadi QR image) atau data.qr_url (langsung tampilkan gambar).
  2. Simpan trace_number — digunakan untuk cek status dan refund.
  3. Polling status via Cek Status QRIS atau tunggu webhook callback.

Catatan

  • QR code memiliki masa berlaku (lihat data.expired_at). Jika kedaluwarsa tanpa pembayaran, buat QRIS baru dengan req_id baru.
  • Jika koneksi terputus saat membuat QRIS, coba lagi dengan req_id yang sama — sistem akan mengembalikan QRIS yang sudah dibuat tanpa membuat duplikat.