Before issuing an unreferenced refund to the shopper's card, you may want to check if this is the same card that was used for the original payment. To do so, you make a card acquisition request with PaymentType
Refund and compare the card alias against the card alias used for purchases. Then you either:
- Pay the refund to the card the shopper presented for the card acquisition: you make a payment request with
PaymentType
Refund and a reference to the card acquisition. - Cancel the card acquisition. You can then ask the shopper for a different card and start again.
Requirements
To use this flow, it is important that you:
- Store the card alias for all transactions.
- Understand how refunds are processed.
- Enable unreferenced refunds.
- Contact our Support Team to enable single tap. For contactless transactions, this ensures the terminal doesn't ask the shopper to tap their card again when you issue the refund.
Card identifiers
To verify that you'll be issuing the refund to the same card that was used for the payment, save the following identifiers for your payments:
- Card alias (
alias
): a value that uniquely represents the shopper's card number (PAN), for exampleA37317672402294
. With this, you can recognize the card that a shopper is using. You cannot use the card alias for making payments. You receive the card alias in theAdditionalResponse
. - Other transaction details such as the transaction amount.
Make a Refund card acquisition request
-
Make a POST request to a Terminal API endpoint, specifying:
-
MessageHeader
: the standardSaleToPOIRequest.MessageHeader
object. Specify:Parameter Required Description ProtocolVersion
3.0 MessageClass
Service MessageCategory
CardAcquisition 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].
-
CardAcquisitionRequest
: The request body with:Parameter Required Description SaleData.SaleTransactionID
An object with: TransactionID
: your reference to identify the refund. We recommend using a unique value.TimeStamp
: date and time of the request in UTC format.
SaleData.TokenRequestedType
Customer. Returns the card alias in the TokenValue
field of the response. Note that the card alias is always returned in theAdditionalResponse
.CardAcquisitionTransaction
This object contains: TotalAmount
: the amount you want to refund.PaymentType
: Refund.
The terminal shows the refund amount with a minus sign (for example, -24.98) and asks the shopper to present their card.
-
-
When you receive the response, save the following details:
POIData.POITransactionID.TimeStamp
andPOIData.POITransactionID.TransactionID
: you need these details later in your payment request for an unreferenced refund.
From the
AdditionalResponse
(depending on the format you used in the request, you receive either a string of form-encoded key-value pairs or a Base64 string that you need to decode to get a JSON object):alias
: The card alias, to recognize the customer based on their card.
-
Search the payments stored in your back-end system for a match with the card alias returned in the card acquisition response and the refund amount.
Continue with a refund
If you decide to issue an unreferenced refund to the card that the shopper presented when you made the card acquisition request:
-
Make a POST request to a Terminal API endpoint, specifying:
-
MessageHeader
: the standardSaleToPOIRequest.MessageHeader
object. Specify: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 with:Parameter Required Description PaymentTransaction.AmountsReq
An object with: Currency
: The transaction currency.RequestedAmount
: The refund amount.
PaymentData.PaymentType
Refund PaymentData.CardAcquisitionReference
An object referring to the card acquisition: TimeStamp
: The time stamp returned in thePOIData.POITransactionID
of the card acquisition response.TransactionID
: The transaction ID returned in thePOIData.POITransactionID
of the card acquisition response.
-
-
Check whether we received your refund request. If we received it:
- The terminal shows Approved.
- You receive a JSON response with:
Result
: SuccessPOIData.POITransactionID.TransactionID
: The transaction identifier for this refund request.
-
To learn the result, wait for the REFUND_WITH_DATA webhook.
Refunds are always processed asynchronously. If successful, the refund is issued to the shopper's account.
Continue in a different way
If you decide not to issue an unreferenced refund to the card that the shopper presented when you made the card acquisition request, you need to cancel the card acquisition.
You can then, for example, ask the shopper for another card and start the process again.