Reverse authorisation
Learn to reverse a pre-authorised payment that has not been captured.
You can reverse a payment's authorisation before you capture it, if the payment was pre-authorised. When you reverse the authorisation, the hold on the shopper's funds is released and the payment is cancelled.
Note that a reversal does not refund a payment that has been captured. To return funds from a captured payment, make a refund.
Requirements
Before you begin, take into account the following requirements, limitations, and preparations.
| Requirement | Description |
|---|---|
| Integration type | An online payments integration. |
| API credentials | Your api_token, sent in the api_token header. |
| Webhooks | Listen for the payment status webhook with the following status value:- cancellation |
| Limitations | After a payment has been captured, you can no longer reverse its authorisation. |
Reverse an authorisation using the API
To reverse a payment that has been authorised but not captured yet:
-
Get the
xrefof the authorised payment you want to reverse. You can get it from the payment status webhook for the payment. -
Make a reversal request with your
api_tokenheader and the following parameters:Parameter Required Description xrefRequired The payment's reference, O<order_id>M<merchant_id>T<payment_id>.merchant_idRequired The merchant that took the payment, as a string. There is no
amount: the whole authorisation is reversed. The Reverse a pre-authorisation page in the API Explorer has the full request, with examples you can try.The response includes the following:
Parameter Description outcomesuccess payment_referenceThe acquirer's reference for this reversal. statusreceived. The reversal is processed asynchronously. Example response (HTTP 201)
{ "outcome": "success", "payment_reference": "QFQTPCQ8HXSKGK82", "status": "received" } -
Get the outcome of the reversal in the payment status webhook.
Reasons for a failed reversal request
If the request fails before it reaches the acquirer, you receive HTTP 200 with outcome failed and a message. The most common messages are:
message | Description |
|---|---|
Auth reversal already in progress | You already sent a reversal for this payment, and it is still being processed. |
Auth reversal already completed | The authorisation has already been reversed. |
Token is empty or Invalid token | The api_token header is missing or invalid. |
If the acquirer returns an error, you receive its HTTP status, for example 500, with outcome success and a message.
Webhooks for reversals
Cancellation webhook
You get the outcome of the reversal in a payment status webhook. It contains the following:
status: cancellation.xref: the reference of the payment that you reversed.success: indicates whether the reversal succeeded. Possible values:- true: the reversal succeeded.
- false: the reversal failed. The webhook includes a
reasonfield with a short description of the problem.
Example webhook for a successful reversal
{
"order_id": "EP-1001",
"amount": "24.50",
"currency": "GBP",
"xref": "O88213045M10012345T4821937",
"status": "cancellation",
"success": "true",
"date": "2026-10-15 13:05:10+01:00"
}
