Anda dapat melakukan pengembalian dana yaitu refund dan void transaksi eWallet melalui dashboard. Perbedaan antara kedua hal tersebut adalah:
A. Refund:
- Pengembalian dana untuk transaksi T+1 atau keesokan harinya (batas waktu tergantung setiap channel eWallet, referensi lengkap dapat dicek di docs berikut)
- Jumlah dana dapat dikembalikan partial (setengahnya) atau full (seluruhnya)
- Fitur ini tidak tersedia untuk eWallet OVO one time payment dan AstraPay
- Untuk full amount refund Biaya dan PPN akan dikembalikan kecuali untuk eWallet DANA
B. Void:
- Pengembalian dana untuk transaksi T+0 atau di hari yang sama (batas waktu pada 23:50:00)
- Jumlah dana hanya dapat dikembalikan full (seluruhnya)
- Fitur ini tidak tersedia untuk eWallet AstraPay
- Biaya dan PPN akan dikembalikan
Keduanya dapat dieksekusi setelah transaksi sudah Sukses namun belum masuk saldo ataupun sudah masuk saldo (Settled), dan untuk transaksi melalui Invoice/Payment Link ataupun Direct API. Untuk informasi lebih lengkap terkait peraturan dan limitasi setiap channel dapat klik tautan berikut.
Berikut adalah langkah-langkah cara Void dan Refund transaksi eWallet melalui API:
1. Membuat secret API Key melalui dashboard Anda
Referensi dapat dilihat di doc berikut.
2. Masukkan callback URL Anda pada Dashboard - Settings - Callbacks di bagian eWallet Payment Status dan pastikan saat klik "test and save" respon mengembalikan 2XX
3. Membuat Refund/Void eWallet Charge menggunakan endpoint:
POST https://api.xendit.co/ewallets/charges/{id}/refunds
POST https://api.xendit.co/ewallets/charges/{id}/void
4. Masukan secret API key Anda pada Authorization
5. Pada bagian Body Request Anda dapat kosongkan saja atau masukan parameter "amount" (untuk pengembalian dana yang tidak full) dan "reason". Namun untuk Void tidak ada body request/kosong.
6. Klik send dan Anda akan mendapatkan respons berikut::
{
"id": "ewc_c11b3e6e-1c06-4916-8824-4f26ef9dd3a4",
"business_id": "603f1c4172bbe840979fd408",
"reference_id": "testvoidrefund",
"status": "SUCCEEDED",
"currency": "IDR",
"charge_amount": 100,
"capture_amount": 100,
"payer_charged_currency": null,
"payer_charged_amount": null,
"refunded_amount": null,
"checkout_method": "ONE_TIME_PAYMENT",
"channel_code": "ID_SHOPEEPAY",
"channel_properties": {
"success_redirect_url": "https://redirect.me/payment"
},
"actions": {
"desktop_web_checkout_url": null,
"mobile_web_checkout_url": null,
"mobile_deeplink_checkout_url": "https://wsa.wallet.airpay.co.id/universal-link/wallet/pay?deep_and_deferred=1&token=Um80ZWF4Yk9xZmROApRFQetpQ9twSYVdH07s0oOLdEWATvwctJ5ir67u1HSxceLO",
"qr_checkout_string": "00020101021226590016ID.CO.SHOPEE.WWW011893600918000062711802066271180303UBE5204539953033605406100.005802ID5917Xendit Dummy QRIS6015KOTA JAKARTA SE61051216062270523cglt2e1ldv02h0tia07g-qr6304163C"
},
"is_redirect_required": true,
"callback_url": "https://hooks.zapier.com/hooks/catch/9675406/oj8regt/",
"created": "2023-04-04T07:26:48.536353Z",
"updated": "2023-04-04T07:27:59.023738Z",
"void_status": "PENDING",
"voided_at": null,
"capture_now": true,
"customer_id": null,
"customer": null,
"payment_method_id": null,
"failure_code": null,
"basket": null,
"metadata": {
"branch_area": "PLUIT",
"branch_city": "JAKARTA"
},
"shipping_information": null
}
7. Anda kemudian akan mendapatkan callback atas refund yang sukses tersebut dan dapat dilihat pada callback tab.
8. Transaksi tersebut akan muncul pada Transactions Tab sebagai tipe "refund".
Informasi lebih lanjut bisa di cek pada link berikut.