CashBack

Cashback is a service offered during a standard payment that allows a cardholder to receive an amount of cash along with their sale, all in a single card transaction. Essentially, it allows the customer to withdraw cash from their bank account at the Point of Sale (POS).

 

1. Availability and Constraints

Cashback is not universally available. Its implementation is subject to strict rules and technical prerequisites:

  • Geographic Availability: The service must be supported by the local payment network and the acquiring bank. If the scheme or acquirer does not support it, the transaction will be rejected.

  • Regulatory Limits: Local regulations often impose limits on the maximum amount of cash that can be withdrawn per transaction.

2. How it works

  1. The POS sends the total amount (Purchase + Cashback) along with the separate CashBackAmount value.

  2. The payment network authorizes the full amount (sale + cash).

  3. The terminal approves the transaction and returns the final PaymentResponse.

  4. The POS finalizes the sale and physically dispenses the cash to the customer.

3. CashBack Request

Cashback is integrated directly into the standard payment flow, requiring specific fields to be set in the PaymentRequest.

Header

The standard SaleToPOIRequest.MessageHeader object, with MessageClass set to Service and MessageCategory set to Payment.

Body

To enable CashBack, you need to prepare a standard Payment Request message. But with CashBackAmount set within the PaymentTransaction.AmountsReq object of the PaymentRequest to explicitly declare the amount of cash the customer wishes to receive. The total amount requested in the AmountsReq object must be the sum of the purchase amount plus the requested cash amount.

The JSON below illustrates the Cash Advance transaction with PaymentType being set as CashAdvance.

Payment request example with CashBack amount
{
  "MessageHeader": {
    "MessageCategory": "Payment",
    "MessageClass": "Service",
    "MessageType": "Request",
    "POIID": "Terminal_01",
    "ProtocolVersion": "3.1",
    "SaleID": "POS001",
    "ServiceID": "86"
  },
  "PaymentRequest": {
    "PaymentData": {
      "PaymentType": "Normal"
    },
    "PaymentTransaction": {
      "AmountsReq": {
        "Currency": "EUR",
        "RequestedAmount": 12.34
        "CashBackAmount": 20.00
      }
    },
    "SaleData": {
      "SaleTransactionID": {
        "TimeStamp": "2025-11-29T22:05:55.029",
        "TransactionID": "12345"
      }
    }
  }
}

Review the full schema on the API specification page for required fields.

4. CashBack Response

When you receive the payment response, check the PaymentResponse.Response.Result:

  • Success means the issuer authorized both the payment and the cashback.
    The amount in the PaymentResult.AmountsResp.CashBackAmount field is the amount that you need to pay to the customer in cash.
  • Partial means the issuer authorized the payment but not the cashback.