---
title: "Outcome of a refund"
description: "Receive webhooks with the outcome of referenced or unreferenced refunds."
url: "https://docs.adyen.com/point-of-sale/basic-tapi-integration/refund-payment/refund-webhooks"
source_url: "https://docs.adyen.com/point-of-sale/basic-tapi-integration/refund-payment/refund-webhooks.md"
canonical: "https://docs.adyen.com/point-of-sale/basic-tapi-integration/refund-payment/refund-webhooks"
last_modified: "2026-06-01T15:33:14+02:00"
language: "en"
---

# Outcome of a refund

Receive webhooks with the outcome of referenced or unreferenced refunds.

[View source](/point-of-sale/basic-tapi-integration/refund-payment/refund-webhooks.md)

Refunds are usually *not* processed synchronously. When you send a request for a referenced or unreferenced refund, the Terminal API response only confirms we received the request.

We inform you about the outcome of the refund asynchronously, through a webhook.

* For a referenced refund, we return a **CANCEL\_OR\_REFUND** webhook.
* For an unreferenced refund, we return a **REFUND\_WITH\_DATA** webhook.

Depending on the card scheme and country/region where the card is used, unreferenced refunds are sometimes processed synchronously. In that case the Terminal API response includes an `acquirerResponseCode` to indicate the outcome.

When a refund is processed, the amount is deducted from your [in-process funds](https://help.adyen.com/knowledge/payments/refunds/what-funds-do-i-have-available-for-refunds), and appears in your shopper's account within a few days.

## Requirements

Before you begin, take into account the following requirements.

| Requirement                                     | Description                                                                                                                                          |
| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration type**                            | A [Terminal API integration](/point-of-sale/basic-tapi-integration/) with payment terminals or with a [Mobile solution](/point-of-sale/ipp-mobile/). |
| **[Webhooks](/development-resources/webhooks)** | To receive updates about refunds, you must set up Standard webhooks.                                                                                 |

## CANCEL\_OR\_REFUND webhook

Before we send your [referenced refund](/point-of-sale/basic-tapi-integration/refund-payment/referenced) request to be processed, we perform various validations. If these validations succeed, usually the refund itself also succeeds. You receive the outcome of the validations asynchronously, in a **CANCEL\_OR\_REFUND** [webhook](/development-resources/webhooks) that includes:

| Parameter           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------- |   |
| `eventCode`         | **CANCEL\_OR\_REFUND**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `originalReference` | The PSP reference of the original payment.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `pspReference`      | The PSP reference of the reversal that you can find in the [/payments/{paymentPspReference}/reversals](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/reversals) response                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `success`           | Indicates the outcome of the refund validations. Possible values:- **true**: Adyen's validations were successful and we sent the refund request to the card scheme. This usually means that the refund will be processed successfully. However, in rare cases the refund can be rejected by the card scheme, or reversed. For information about these exceptions, see [**REFUND\_FAILED** webhook](/online-payments/refund#refund-failed), and [**REFUNDED\_REVERSED** webhook](/online-payments/refund#refunded-reversed).
- **false**: the refund validations failed. The webhook includes a `reason` field with a short description of the problem. [Review the reason](/online-payments/classic-integrations/modify-payments/refund#unsuccessful-refund-request), fix the issue if possible, and resubmit the refund request. |

**Example of a webhook message with the CANCEL\_OR\_REFUND event code**

```json
{
   "live":"false",
   "notificationItems":[
      {
         "NotificationRequestItem":{
            "additionalData":{
               "modification.action": "refund"
            },
            "amount":{
               "currency": "EUR",
               "value": 1025
            },
            "eventCode":"CANCEL_OR_REFUND",
            "eventDate":"2022-02-03T15:14:15.004Z",
            "merchantAccountCode":"YOUR_MERCHANT_ACCOUNT",
            "originalReference":"VK9DRSLLRCQ2WN82",
            "paymentMethod":"mc",
            "pspReference":"TF995R5G6L2GWR82",
            "reason":"",
            "success":"true"
         }
      }
   ]
}
```

For more information about the included fields, see the [CANCEL\_OR\_REFUND](https://docs.adyen.com/api-explorer/Webhooks/latest/post/CANCEL_OR_REFUND) webhook reference.

## REFUND\_WITH\_DATA webhook

Before we send your [unreferenced refund](/point-of-sale/basic-tapi-integration/refund-payment/unreferenced) request to be processed, we perform various validations. If these validations succeed, usually the refund itself also succeeds. You receive the outcome of the validations asynchronously, in a **REFUND\_WITH\_DATA** [webhook](/development-resources/webhooks) that includes:

* `eventCode`: **REFUND\_WITH\_DATA**.

* `additionalData`: the information in this objects depends on the [additional settings](/development-resources/webhooks/webhook-types/additional-settings) that you enabled.

* `originalReference`: the PSP reference of the unreferenced refund request. This is not the PSP reference of the payment that is being refunded, because with an unreferenced refund that PSP reference is unknown. In your Customer Area you can find the refund using the `originalReference` value.

* `pspReference`: the PSP reference generated when the refund was captured.

* `success`: indicates the outcome of the refund validations. Possible values:

  * **true**: Adyen's validations were successful and we sent the refund request to the card scheme. This usually means that the refund will be processed successfully. However, in rare cases the refund can be rejected by the card scheme, or reversed. For information about these exceptions, see [**REFUND\_FAILED** webhook](/online-payments/refund#refund-failed), and [**REFUNDED\_REVERSED** webhook](/online-payments/refund#refunded-reversed).

  * **false**: the refund validations failed. The webhook includes a `reason` field with a short description of the problem. [Review the reason](#failed-refund-request), fix the issue if possible, and resubmit the refund request.

```json
{
   "live":"false",
   "notificationItems":[
      {
         "NotificationRequestItem":{
            "additionalData":{
                "fundingSource":"CREDIT"
            },
            "amount":{
               "currency":"EUR",
               "value":40000
            },
            "eventCode":"REFUND_WITH_DATA",
            "eventDate":"2023-04-27T17:46:51+02:00",
            "merchantAccountCode":"YOUR_MERCHANT_ACCOUNT",
            "merchantReference": "YOUR_MODIFICATION_REFERENCE",
            "originalReference":"NV4ZPV72LV5X8N82",
            "paymentMethod":"mc",
            "pspReference":"NC6HT9CRT65ZGN82",
            "reason":"",
            "success":"true"
         }
      }
   ]
}
```

For more information about the included fields, see the [REFUND\_WITH\_DATA](https://docs.adyen.com/api-explorer/Webhooks/latest/post/REFUND_WITH_DATA) webhook reference.

## Reasons for failed refund validation

When our validations of a refund fail, you receive a webhook for the refund with `success`: **false** and the reason of the failure. The next table shows the most common reasons.\
[]()\
Where the table mentions the *balance on the payment*, this refers to the amount that remains from the original payment. For example, if a transaction has a total of EUR 10 and no refund or chargeback is processed, then the balance on the payment is EUR 10. After a refund or chargeback of EUR 3 is processed, the remaining balance on the payment is EUR 7.

| `reason`                                                                                   | Description                                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Requested refund amount too high`                                                         | No chargeback or refund has been processed, and the requested refund amount is more than the balance on the payment.                                                                                                                            |
| `Already partially refunded, new requested refund amount too high`                         | Partial refund(s) has(/have) been processed, and the requested refund amount is more than the balance on the payment.                                                                                                                           |
| `Already partially disputed, new requested refund amount too high`                         | Partial chargeback(s) has(/have) been processed, and the requested refund amount is more than the balance on the payment.                                                                                                                       |
| `Already fully refunded, no balance available for new requested refund`                    | Full refund has been processed, and the remaining balance on the payment is 0.                                                                                                                                                                  |
| `Partially refunded and partially disputed, no balance available for new requested refund` | Partial refund(s) and chargeback(s) have been processed, and the requested refund amount is more than the balance on the payment. Partial refund(s) and chargeback(s) have been processed, and the balance on the payment is a negative amount. |
| `Already fully disputed, no balance available for new requested refund`                    | Full chargeback has been processed, and the balance on the payment is 0. A full chargeback and partial refund(s) have been processed, and the balance on the payment is a negative amount.                                                      |
| `Insufficient in-process funds on account`                                                 | There is not enough [balance](/account/balances) on your merchant account to process the refund.                                                                                                                                                |
| `Transaction hasn't been captured, refund not possible`                                    | The refund was requested before the transaction was captured. You need to [cancel](/online-payments/cancel) the transaction instead or wait until the transaction is settled.                                                                   |
| `The maximum period for this operation has expired`                                        | The refund was requested past the expiration date permitted by the payment method to process the request.                                                                                                                                       |
| `Amount too low to be accepted by Card Network`                                            | The refund amount was too low. The amount must be greater than 0.01 in any currency.                                                                                                                                                            |
| `Modification in different currency than authorisation`                                    | The refund was requested in a currency different from the currency in which the authorization was made.                                                                                                                                         |

## See also

* [Cancel an unreferenced refund](/point-of-sale/basic-tapi-integration/refund-payment/cancel-unreferenced)
* [Refunding an offline payment](/point-of-sale/offline-payment#refund-offline-transactions)
* [FAQs: Refunds](https://help.adyen.com/knowledge/payments/refunds/)
