Refund Payment
Memulai proses refund transaksi.
POST
cURL
/api/payments/:id/refund
Memulai refund untuk transaksi yang sudah paid dan belum masuk settlement.
Jika request berhasil, status transaksi berubah menjadi refund_processing.
Aturan Status
| Status awal | Hasil |
|---|---|
paid | refund_processing |
created, pending, expired, failed, cancelled, settled, refund_processing, refund_failed, refunded | Tidak dapat direfund. |
Perhitungan Refund
Nominal refund utama adalah nominal yang dibayarkan customer (total_amount).
Customer menerima refund penuh sesuai nominal tersebut. Saldo settlement merchant tetap dikurangi fee_amount sebagai biaya layanan transaksi.
| Fee payer | Customer membayar | Nominal refund utama | Catatan |
|---|---|---|---|
buyer | amount + fee_amount | amount + fee_amount | Nominal yang dibayarkan customer direfund melalui provider; fee_amount tetap mengurangi settlement merchant. |
merchant | amount | amount | fee_amount tetap menjadi biaya merchant dan mengurangi settlement. |
Path Params
| Param | Type | Wajib | Keterangan |
|---|---|---|---|
id | string | Ya | UUID transaksi atau reference_id. |
Request Example
curl -X POST "<origin>/api/payments/f2b1d5b0-7b1f-4c5d-9c37-93f0c8f6a001/refund" \ -H "Authorization: Bearer sk_xxx"Response
{
"payment": {
"id": "f2b1d5b0-7b1f-4c5d-9c37-93f0c8f6a001",
"reference_id": "PAY-LXAMPLE",
"merchant_reference_id": "ORDER-1024",
"payment_method_code": "qris",
"currency": "IDR",
"amount": 150000,
"fee_amount": 1050,
"net_amount": 150000,
"total_amount": 151050,
"status": "refund_processing"
}
}HTTP Error Code
| HTTP | Code | Keterangan |
|---|---|---|
400 | payment_refund_failed | Transaksi tidak dapat direfund dari status saat ini. |
401 | invalid_api_key | Secret key tidak valid. |
403 | merchant_not_approved | Merchant belum aktif. |
404 | not_found | Transaksi tidak ditemukan. |