Payment with loyalty lookup

If you want to perfom a loyalty lookup before initiating a payment

If the ECR wants a loyalty lookup before initiating a payment, the ECR first initiates a CardAcquisition request. Based on the LoyaltyId in the CardAcquisition response, the ECR may choose to store loyalty points earned and/or update the amount in the Payment request that follows the CardAcquisition request. The following Payment request refers to the to the preceding CardAcquisition request. In this way, no additional acquisition of card data is needed, and the payment can be performed as a single tap transaction.

In the CardAcquisition request, relevant payment data needs to be provided, including the amount. The amount in the following Payment request must not exceed the amount of the CardAcquisition request.

The Payment requst must include a reference to the preceding CardAcquisition reference. The data are found in the POITransactionID data structure of the CardAcquisition response and are added to the CardAcquisitionReference of the PaymentData data structure of the Payment request.

ℹ️

Important

If the card acquisition is aborted before the card is read (for example by sending an AbortRequest from the ECR, pressing the STOP button on the terminal, or due to timeout), the CardAcquisitionResponse.ErrorCondition field will contain the value Aborted.

In such cases, the ECR must not automatically send a PaymentRequest, since the intention of the cashier or customer was to abort the transaction.

Example Payment request including CardAcquisitionReference:

{
  "SaleToPOIRequest": {
    "MessageHeader": {
      "ProtocolVersion": "3.1",
      "ServiceID": "2",
      "MessageClass": "Service",
      "MessageCategory": "Payment",
      "MessageType": "Request",
      "SaleID": "ECR123",
      "POIID": "AT12345"
    },
    "PaymentRequest": {
      "SaleData": {
        "SaleTransactionID": {
          "TransactionID": "12345678",
          "TimeStamp": "2026-04-18T22:16:13.178+02:00"
        }
      },
      "PaymentTransaction": {
        "AmountsReq": {
          "RequestedAmount": 123
        }
      },
      "PaymentData": {
        "PaymentType": "Normal",
        "CardAcquisitionReference": {
          "TransactionID": "87654321"
        }
      }
    }
  }
}

The terminal displays to the consumer that the loyalty is processed before payment authorization


Did this page help you?