Refunds are typically created via an API call to a dedicated endpoint, distinct from the one used for creating payments. This request requires specific details such as the original payment request ID, the refund amount, and the reason for the refund. Alternatively, for a quick and straightforward process, you can use the Refund button available on your dashboard.
Creating a Refund Request via API
To initiate a refund, send a POST request to the /refunds
endpoint.
Request - to /refunds
|
|
---|
Refund validation and processing
Before a refund is processed, the system performs a series of validations:
Amount Check: The refund amount (or the total of multiple partial refunds) must not exceed the original transaction amount.
Eligibility: The refund request must typically be made within 1 year of the original transaction.
Once approved, the refund is processed:
Balance adjustment: Your account balance is adjusted to reflect the refunded amount.
Network communication: The refund request is communicated to the relevant card network.
Settlement: The refunded amount is credited back to the cardholder's account. This typically takes several business days, varying based on the card network and the cardholder's issuing bank.
Important considerations:
Fees: While your customer receives the full refunded amount, be aware that original transaction fees are generally not returned to you.
Timeframes: Refund processing times can vary significantly, ranging from instant to several business days, depending on the issuing bank.
Partial refunds
A partial refund allows you to refund a portion of the original transaction amount instead of the full amount. This is useful in cases such as partial order cancellations, product exchanges, or adjustments for service issues.
You can issue multiple partial refunds for the same transaction, as long as the total refunded amount does not exceed the original transaction value. Each partial refund is processed separately, ensuring flexibility in addressing customer needs while maintaining accurate transaction records.
Create a partial refund request
To create a partial refund, follow the same steps as a full refund request. The only difference is you can specify an amount lower than the original transaction value.
Create a POST
request to /refunds
Request - to /refunds
| Response - from /refunds/{payment_request_id}
|
---|
This is how a partial refund request might appear on your Xendit dashboard:

Partial refund request
Refunds vs. Chargebacks
It's crucial to understand the distinction between refunds and chargebacks. Refunds are initiated by you (the merchant) to return funds to a customer. Chargebacks, on the other hand, are disputes initiated by the cardholder directly through their bank, typically due to unauthorized transactions or service issues.