Pembayaran Langsung
Ringkasan
Bagian berjudul "Ringkasan"Pembayaran langsung adalah payment untuk satu payment_method spesifik —
QRIS atau virtual account bank — tanpa halaman hosting Baiyar yang
terlibat. Gunakan ini saat Anda ingin menampilkan kode QR atau nomor
virtual account di dalam aplikasi Anda sendiri, alih-alih mengirim
pelanggan ke payment link.
Membuat pembayaran langsung
Bagian berjudul "Membuat pembayaran langsung"POST /v1/paymentsIdempotency-Key: order-2026-0002-attempt-1
{ "project_id": "018f1f29-7c00-73e4-a310-744d2167fc60", "reference": "ORDER-2026-0002", "amount": 15000, "payment_method": { "type": "qris" }}Idempotency-Key wajib — string unik yang Anda buat sendiri per percobaan
pembayaran (UUID cocok untuk ini). Mengulang request dengan key yang sama
dan body identik akan mengembalikan payment yang sama (200) alih-alih
membuat duplikat (201); mengulang dengan body berbeda ditolak dengan
409. Ini membuat retry aman saat terjadi timeout jaringan tanpa risiko
double charge.
Response menyertakan instructions, bentuknya berbeda per metode:
- QRIS —
qr_string(payload QRIS mentah, jika Anda ingin menggambar QR code sendiri) danqr_image_url(gambar QR code siap tampil sebagaidata:URI). - Virtual account —
bank_name,virtual_account_number, danpayment_steps(instruksi berbahasa manusia yang bisa Anda tampilkan apa adanya).
{ "id": "018f1f29-9b21-73e4-a310-744d2167fca1", "project_id": "018f1f29-7c00-73e4-a310-744d2167fc60", "reference": "ORDER-2026-0002", "amount": 15000, "currency": "IDR", "fee_bearer": "merchant", "fee_amount": 105, "merchant_net": 14895, "status": "pending", "checkout_url": "https://checkout.baiyar.id/sandbox/payments/sandbox_018f...", "payment_method": { "type": "qris" }, "instructions": { "qr_string": "BAIYAR-SANDBOX-QRIS|sandbox_018f...|15000|IDR", "qr_image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }, "expires_at": "2026-09-02T09:15:00Z", "created_at": "2026-09-02T09:00:00Z"}{ "bank_name": "Bank BNI", "virtual_account_number": "8808123456789", "payment_steps": [ "Buka mobile banking.", "Pilih transfer virtual account.", "Masukkan nomor virtual account." ]}Minimum nominal
Bagian berjudul "Minimum nominal"amount dalam IDR (rupiah utuh). Minimumnya tergantung metode:
| Metode | Minimum nominal |
|---|---|
qris |
100 |
virtual_account |
10.000 |
Kedaluwarsa
Bagian berjudul "Kedaluwarsa"expires_in_minutes opsional. Default-nya 15 menit untuk qris dan 24 jam
untuk virtual_account, dan dibatasi maksimal 60 menit untuk qris dan 7
hari untuk virtual_account.
Mengecek status payment
Bagian berjudul "Mengecek status payment"Polling GET /v1/payments/{paymentID} untuk status (pending,
processing, succeeded, failed, expired), atau — lebih baik — atur
webhook project supaya Baiyar memberi tahu Anda secara otomatis. Lihat
Status Pembayaran untuk arti tiap nilainya dan
Webhooks untuk notifikasi otomatis.