Reverse a payment
Last updated: July 16, 2025
The Payment Reversal API returns funds back to the customer by automatically performing the appropriate action depending on the payment's status. For example, if a payment is:
- Authorized and captured – The payment is fully refunded.
- Authorized but not captured – The payment is voided.
- Authorized and partially captured – The partial capture amount is refunded and the remaining authorization amount is voided.
- Partially refunded – The rest of the partial capture amount is refunded and the remaining authorization amount is voided.
- Awaiting an automatic retry due to a failure – The pending payment retries are cancelled.
Reversals are always processed for the full payment amount, in the same currency as the original authorization.
Information
If you only want to partially return funds to the customer, request a partial refund instead.
For card payments, a payment reversal performs all required actions with a single reversal request.
For non-card payments, a payment reversal only performs one action per reversal request. For example, for payment methods that support both refunds and voids:
- The first time you request a payment reversal, the payment is voided.
- The second time you request a payment reversal, the payment is refunded, if possible.
If the payment is eligible for a reversal, call the Reverse a payment endpoint and provide the payment's ID as the {id}
path parameter.
post
https://api.checkout.com/payments/{id}/reversals
1{2"reference": "ORD-5023-4E89",3"metadata": {4"coupon_code": "NY2024",5"partner_id": 1239896}7}
1{2"action_id": "act_y3oqhf46pyzuxjbcn2giaqnb44",3"reference": "ORD-5023-4E89",4"_links": {5"payment": {6"href": "https://api.checkout.com/payments/pay_y3oqhf46pyzuxjbcn2giaqnb44"7}8}9}
Note
If you attempt to reverse a payment that was already reversed, you receive a 204
response.
If the payment cannot be reversed, you receive a 403
response. For example, if the payment is declined or is still undergoing 3D Secure (3DS) authentication.
As reversals are processed asynchronously, the response does not specify whether the reversal was successful.
To track the status of the reversal, subscribe to the payment webhooks. For example, if the payment was voided, you receive a payment_voided
webhook.
Information
You cannot cancel a reversal after it is processed.