Direct API
QRIS
Satu kode, bisa dipindai semua e-wallet dan aplikasi bank di Indonesia.
QRIS adalah standar QR nasional, jadi satu kode diterima GoPay, OVO, DANA, ShopeePay, LinkAja, dan semua aplikasi bank — Anda tidak memilih dompetnya, pembeli yang memilih. Konfirmasinya masuk beberapa detik setelah dipindai.
Langkah integrasi
- Buat permintaan pembayarannya.
- Tampilkan QR dari payment.qr_string di halaman Anda.
- Terima konfirmasi pembayaran — webhook payment.paid.
- Cek status saat Anda perlu kepastian: GET /v1/transactions/:id.
1. Buat permintaan pembayaran
curl https://pay.kasera.id/v1/transactions \
-H "Authorization: Bearer kp_live_..." \
-H "Idempotency-Key: order-1234" \
-H "Content-Type: application/json" \
-d '{
"amount": 150000,
"external_id": "ORD-1234",
"payment_methods": ["qris"]
}'{
"id": "payreq_9b2f...",
"status": "pending",
"payment_method": "qris",
"payment": {
"type": "qr",
"qr_string": "00020101021226670016COM.KASERA.WWW...6304A1B2"
},
"instructions": { "title": "Cara membayar dengan QRIS", "steps": ["..."] },
"expires_at": "2026-08-27T13:00:00+07:00"
}2. Tampilkan QR-nya
payment.qr_string adalah payload EMV mentah. Encode menjadi gambar di browser — kami sengaja mengembalikan string, bukan gambar, supaya halaman Anda yang mengatur ukuran, tampilan, dan cache. Cetak blok instructions di bawahnya apa adanya; blok itu ditulis untuk pembeli, dalam bahasa Indonesia.
// Any QR library works — the payload is a plain string.
// npm install qrcode
import QRCode from "qrcode";
QRCode.toCanvas(document.getElementById("qr"), trx.payment.qr_string);Kalau sesekali payment tidak ada, ambil ulang permintaannya — isinya tidak pernah berupa placeholder.
3. Terima konfirmasi pembayaran
Webhook payment.paid adalah yang memberi tahu Anda uangnya masuk. Tidak ada yang di layar pembeli menjadi bukti — hanya catatan kami.
4. Cek status
GET /v1/transactions/:id saat Anda perlu kepastian — rekonsiliasi, atau pembeli mengaku sudah bayar tapi webhook tidak datang. Bukan pengganti webhook.
QR mati pada expires_at — pindaian setelah itu gagal di bank pembeli, bukan di kami. Sembunyikan saat itu juga, dan buat permintaan baru kalau pembeli masih mau membayar. Batas nominal dan kedaluwarsa ada di batas.