To return funds to a shopper after a payment is Approved, you need to refund the payment. Unreferenced refunds let you return any amount to any card presented to the payment terminal. But you need to manually reconcile those refunds.
If you want to use unreferenced refunds, we highly recommend that you ensure your POS app can reconcile a refund against the original purchase. This reduces the risk of return fraud (a payment being refunded multiple times), and human error (store staff enter the wrong refund amount).
Also consider checking beforehand if the card that the shopper presents to the terminal is the same card that was used for the original payment. To do so, you need to implement card acquisition and save the card alias of all transactions. See card acquisition before refunding.
Requirements
Requirement | Description |
---|---|
Integration type | A Terminal API integration with payment terminals or with a Mobile solution. |
Webhooks | Subscribe to the following webhook: |
Limitations | Note the following limitations:
|
Setup steps | To enable unreferenced refunds at the company or merchant account level, contact our Support Team. To enable unreferenced refunds on the store or for an individual terminal or mobile device, follow the setup steps for your Customer Area or for making API calls. |
Enable unreferenced refunds
You can enable unreferenced refunds at the store or terminal level in two ways:
Optionally, contact our Support Team to enable:
- Enable unreferenced refunds at the company or merchant account level.
- A refund delay, so you have time to cancel an unreferenced refund when necessary.
Enable through the Customer Area
To enable unreferenced refund for a store or for an individual terminal or mobile device through the Customer Area:
- Log in to your Customer Area and select the store or terminal.
- Go to Terminal Settings > Payment features > Refund.
- Under Unreferenced refunds, select Enabled.
- Optionally, under Offline refund limit, select Add new currency limit and enter the maximum amount you want to allow for offline refunds..
Due to anti-money laundering and payment industry regulations, it is not always possible to enable unreferenced refunds. An error message will inform you if unreferenced refunds are not allowed:
Unreferenced refunds are not permitted for the country of this store.
Unreferenced refunds are not permitted for this account or store due to its merchant category code.
- Select Save.
Enable with API calls
To enable unreferenced refunds at the store or terminal level using API calls:
-
Make a PATCH request to the
/terminalSettings
endpoint for the store or terminal.
Use one of the following endpoints:In the request body include a
refunds
object with:unreferenced.enableUnreferencedRefunds
: Indicates whether unreferenced refunds are enabled on the terminal or mobile device. Set this to true to enable unreferenced refunds.
The following example shows how to enable unreferenced refunds on the terminal level.
Due to anti-money laundering and payment industry regulations, it is not always possible to enable unreferenced refunds. The example below shows an error message returned when unreferenced refunds cannot be enabled.
Make an unreferenced refund
For an unreferenced refund to a gift card, you need to specify more parameters than we describe here. Refer to Make a refund to a gift card.
-
Make a POST Terminal API request, specifying:
-
The standard
SaleToPOIRequest.MessageHeader
object, withMessageClass
set to Service andMessageCategory
set to Payment.Parameter Required Description ProtocolVersion
3.0 MessageClass
Service MessageCategory
Payment MessageType
Request ServiceID
Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal ( POIID
) being used.SaleID
Your unique ID for the POS system component to send this request from. POIID
The unique ID of the terminal to send this request to. Format: [device model]-[serial number].
-
PaymentRequest: the request body. Specify:
Parameter Description SaleData.SaleTransactionID
An object with: TransactionID
: your unique reference to identify the refund. Your Customer Area and Adyen reports show this ID as the merchant reference for the transaction. If the original payment was an offline payment, you can make reconciliation easier by including the tender reference of the offline payment.TimeStamp
: Date and time of the refund in UTC format.
PaymentTransaction.AmountsReq
An object with: Currency
: The transaction currency.RequestedAmount
: The amount being refunded to the card.
PaymentData.PaymentType
Refund
The following example shows how to refund EUR 10.99 to a card.
-
-
Let the shopper complete the transaction on the terminal. The terminal prompts the shopper to present their card, and then shows Approved.
-
When you receive the PaymentResponse, note the following:
Response.Result
: Success. This means we received your request. Usually, the refund is processed asynchronously.Whether the refund is processed synchronously or asynchronously depends on the card scheme and the country/region where the card is used. If processed synchronously, you get the
acquirerResponseCode
in theAdditionalResponse
.POIData.POITransactionID.TransactionID
: the transaction identifier for this refund request, in the formattenderReference.pspReference
.PaymentReceipt
: the generated receipt data. This includes transaction_type_refund.SaleData.SaleTransactionID.TransactionID
: the reference you provided in the request.Response.AdditionalResponse
with:transactionType
: REFUNDposAuthAmountValue
: the refund amount (in minor units) that we try to get authorized.pspReference
: the PSP reference for this refund request.acquirerResponseCode
: if this field is included, the request was processed synchronously. The value Approved means the refund is approved.
-
Wait for the REFUND_WITH_DATA webhook to learn the outcome. If successful, the refund is issued to the shopper's account.
For a complete list of fields you can pass and receive for an unreferenced refund, see the PaymentRequest API reference and the PaymentResponse API reference.