Lompat ke konten

Status Pembayaran

Baiyar punya tiga field status terpisah, di tiga level berbeda. Tertukar di antara ketiganya adalah sumber kebingungan paling umum saat mengecek apakah pelanggan sudah membayar:

Field Menjawab
Transaction.status Apakah pembayaran ini berhasil, gagal, atau masih terbuka?
Transaction.current_attempt.status Apa yang terjadi pada percobaan spesifik yang sedang berjalan?
PaymentLink.status Apakah link ini sendiri masih bisa dibayar?

Status Transaction — yang perlu ditindaklanjuti

Bagian berjudul "Status Transaction — yang perlu ditindaklanjuti"

Ini field yang perlu di-polling atau dipantau lewat webhook. Ini hasil keseluruhan dari satu pembayaran (dibuat lewat payment link atau direct payment):

Status Arti
pending Baru dibuat; percobaan pertama belum kembali dari provider — transient, jarang terlihat
processing Satu percobaan sedang berjalan (pelanggan punya instruksi yang valid dan belum kedaluwarsa)
succeeded Terminal. Satu percobaan berhasil dibayar — memicu payment.paid
failed Percobaan terakhir tidak berhasil dan tidak ada yang sedang berjalan — pelanggan masih bisa coba lagi dengan percobaan baru, selama transaksinya sendiri belum kedaluwarsa
expired Terminal. Tenggat waktu transaksi ini sendiri lewat tanpa keberhasilan — memicu payment.failed

failed bukan terminal dengan sendirinya — lihat Pembayaran Langsung untuk cara mencoba lagi dengan payment_method baru. Hanya succeeded dan expired yang benar-benar mengakhiri sebuah transaksi.

Status attempt — detail level percobaan

Bagian berjudul "Status attempt — detail level percobaan"

current_attempt.status pada respons yang sama adalah status yang menghadap provider dari percobaan spesifik di balik transaksi di atas — berguna untuk memahami kenapa sebuah transaksi failed atau membangun UI yang lebih detail:

Status Arti
pending Menunggu tindakan pelanggan
paid Percobaan ini berhasil — transaksinya sekarang juga succeeded
failed Percobaan ini tidak berhasil
expired Jendela waktu percobaan ini sendiri sudah lewat
cancelled Digantikan oleh perubahan metode, atau direset secara eksplisit
Bagian berjudul "Status payment link — sengaja dipisah"

status milik payment link itu sendiri melacak apakah link-nya masih bisa dipakai — bukan apakah sudah dibayar:

Status Arti
active Bisa dibayar sekarang — tetap active walau pembayaran satu-satunya di link sekali pakai sudah berhasil
cancelled Dibatalkan lewat POST /v1/payment-links/{id}/cancel
inactive Sudah melewati expires_at

Untuk mengetahui apakah link sekali pakai sudah benar-benar dibayar, cek status transaction-nya, bukan link-nya — field link memang sengaja tidak berubah untuk itu.