Refund
Buat refund
Refund pembayaran kartu yang succeeded, penuh atau sebagian.
/v1/refundsHeader
Opsional, maksimal 255 byte. Sebaiknya dikirim: retry refund dengan key yang sama mengembalikan refund yang asli dan tidak pernah sampai ke processor lagi, apa pun isi body kali ini — tidak ada perbandingan body pada refund, jadi tidak ada 409. Tanpanya, setiap retry adalah refund baru. Lihat Idempotency.
Contoh: refund-order-1234
Parameter body
Id payreq_* pembayaran kartu yang succeeded. Metode lain ditolak 422 refund_not_supported; status lain 409 not_refundable.
Contoh: payreq_9b2f...
Rupiah utuh, 1 sampai sisa yang belum di-refund pada pembayaran itu. Kalau tidak dikirim, seluruh sisanya direfund; 0 eksplisit ditolak 422. Refund sebagian boleh berkali-kali sampai nominal yang dibayar habis — lebih satu rupiah saja ditolak 422 refund_exceeds_amount.
Contoh: 50000
Teks bebas, maks 255 karakter, disimpan dan dikembalikan. Tidak ditampilkan ke pembeli.
Contoh: Satu barang dikembalikan
Field response
Id rfd_*. Baca kembali dengan GET /v1/refunds/{id}.
Contoh: rfd_7c1a...
Id payreq_* asal dana yang dikembalikan.
Contoh: payreq_9b2f...
succeeded, failed, atau pending. pending berarti processor tidak pernah menjawab refund-nya: nominalnya ditahan sampai diselesaikan manual oleh tim kami, jadi jangan retry — lihat refund_unresolved.
Contoh: succeeded
Rupiah utuh yang dikembalikan oleh refund ini saja.
Contoh: 50000
Yang Anda kirim, dikembalikan. Tidak ada kalau kosong.
Pesan asli dari processor saat status failed. Tidak ada di status lain.
ISO-8601 dengan offset +07:00.
Contoh: 2026-08-31T10:12:00+07:00
curl https://pay.kasera.id/v1/refunds \
-H "Authorization: Bearer kp_live_..." \
-H "Idempotency-Key: refund-order-1234" \
-H "Content-Type: application/json" \
-d '{
"transaction_id": "payreq_9b2f...",
"amount": 50000,
"reason": "Satu barang dikembalikan"
}'{
"id": "rfd_7c1a...",
"transaction_id": "payreq_9b2f...",
"status": "succeeded",
"currency": "IDR",
"amount": 50000,
"reason": "Satu barang dikembalikan",
"created_at": "2026-08-31T10:12:00+07:00",
"livemode": true
}