Permintaan pembayaran
Buat permintaan
Buat permintaan pembayaran QRIS dan dapatkan tautan checkout.
/v1/transactionsHeader
Opsional, maksimal 255 byte, dan satu-satunya hal yang mencegah pembayaran ganda. Kalau tidak dikirim, setiap percobaan menjadi permintaan pembayaran tersendiri. Mengirim key yang sama lagi mengembalikan yang asli dengan status 200, bukan 201. Batasnya byte, bukan karakter, jadi key non-ASCII habis lebih cepat. Lihat Idempotency.
Contoh: order-1234
Parameter body
Rupiah utuh. Lihat batas.
Contoh: 150000
Tampil di halaman pembayaran. Maks 255 karakter.
Contoh: Kaos komunitas
Nomor pesanan Anda sendiri. Disimpan, dikembalikan, dan bisa difilter di endpoint daftar — tidak mencegah duplikat: dua create dengan external_id sama adalah dua permintaan pembayaran. Hanya Idempotency-Key yang mencegah duplikat.
Contoh: ORD-1234
Opsional name, email, dan phone (E.164).
Referensi Anda sendiri, maks 64 karakter, dikembalikan dan bisa difilter di endpoint daftar. Tidak mencegah duplikat — mengulang dengan merchant_ref yang sama membuat permintaan pembayaran kedua. Kirim Idempotency-Key kalau Anda mau perlindungan retry.
Contoh: INV-2026-001
Opsional name (maks 120), email, dan phone pelanggan yang membayar. Dikembalikan di respons dan webhook payment.paid; nama tampil di halaman pembayaran.
Maks 50 baris {name, price, quantity}, tampil di halaman pembayaran. Jumlah price×quantity harus sama dengan amount, jika tidak ditolak 422 — amount tetap menjadi acuan.
URL https, maks 2048 karakter. Setelah pembayaran berhasil, halaman checkout menampilkan tombol kembali ke toko dan mengarahkan ke sana dengan tambahan ?id=payreq_...&status=succeeded.
Contoh: https://toko.example/selesai
Default 60, maksimum mengikuti konfigurasi akun.
Contoh: 60
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,
"description": "Kaos komunitas",
"external_id": "ORD-1234",
"merchant_ref": "INV-2026-001",
"customer": { "name": "Budi", "email": "budi@toko.dev" },
"order_items": [
{ "name": "Kaos komunitas", "price": 75000, "quantity": 2 }
],
"return_url": "https://toko.example/selesai"
}'{
"id": "payreq_9b2f...",
"status": "pending",
"currency": "IDR",
"amount": 150000,
"fee": 3000,
"net": 147000,
"description": "Kaos komunitas",
"external_id": "ORD-1234",
"merchant_ref": "INV-2026-001",
"customer": { "name": "Budi", "email": "budi@toko.dev" },
"order_items": [
{ "name": "Kaos komunitas", "price": 75000, "quantity": 2 }
],
"return_url": "https://toko.example/selesai",
"checkout_url": "https://pay.kasera.id/p/xK3f...",
"source": "api",
"qris_string": "00020101021226670016COM.KASERA.WWW...6304A1B2",
"payment_method": "QRIS",
"instructions": {
"title": "Cara membayar dengan QRIS",
"steps": [
"Buka aplikasi e-wallet atau mobile banking Anda.",
"Pilih menu bayar dengan QRIS, lalu scan kode QR di halaman pembayaran.",
"Periksa nama merchant dan nominal, lalu konfirmasi pembayaran.",
"Pembayaran terkonfirmasi otomatis dalam beberapa detik."
]
},
"expires_at": "2026-08-11T13:00:00+07:00",
"paid_at": null,
"created_at": "2026-08-11T12:00:00+07:00"
}