Abort

Attempt to abort a transaction that has been requested by the ECR, but not yet started

Attempt to abort a transaction that has been requested by the ECR, but not yet started. E.g. after a service request has been sent by the ECR, but before the cardholder has tapped the card or entered PIN and pressed OK.

Note: there is no AbortResponse - if successfully aborted, the status will be communicated in the original service response, in this example the PaymentResponse. If the abort request is unsuccessful, the transaction continues as it would otherwise.

sequenceDiagram
    participant ECR
    participant Terminal as Terminal (AIC)

    ECR->>Terminal: Payment Request
    Note right of Terminal: Customer leaves without using card
    ECR->>Terminal: Abort Request
    Terminal-->>ECR: Payment Response (ErrorCondition=Aborted)

Example request

{
  "SaleToPOIRequest": {
    "MessageHeader": {
      "ProtocolVersion": "3.1",
      "ServiceID": "2",
      "MessageClass": "Service",
      "MessageCategory": "Abort",
      "MessageType": "Request",
      "SaleID": "ECR123",
      "POIID": "AT12345"
    },
    "AbortRequest": {
      "MessageReference": {
        "MessageCategory": "Payment",
        "ServiceID": "1"
      },
      "AbortReason": "Aborted from ECR"
    }
  }
}
PropertyDescriptionMandatory / Optional
AbortRequestMandatory
MessageReferenceMandatory
MessageCategoryMessageCategory of request to be abortedOptional
ServiceIDServiceID of request to be abortedMust be present if DeviceID absent
DeviceIDDeviceID of request to be abortedMust be present if ServiceID absent.
AbortReasonReason for abort. Used for logging purposesMandatory

Example response, successful abort

{
  "SaleToPOIResponse": {
    "MessageHeader": {
      "MessageCategory": "Payment",
      "MessageClass": "Service",
      "MessageType": "Response",
      "POIID": "AT12345",
      "ProtocolVersion": "3.1",
      "SaleID": "ECR123",
      "ServiceID": "1"
    },
    "PaymentResponse": {
      "Response": {
        "AdditionalResponse": "",
        "ErrorCondition": "Aborted",
        "Result": "Failure"
      },
      "SaleData": {
        "SaleTransactionID": {
          "TransactionID": "12345"
        }
      },
      "POIData": {
        "POITransactionID": {
          "TransactionID": "0"
        }
      }
    }
  }
}

In this example, the Abort request was successful, and this is communicated to the ECR by setting Response/Result to 'Failure' and Response/ErrorCondition to 'Aborted' in the PaymentResponse message belonging to the PaymentRequest that was aborted. The returned transaction ID can be ignored, as the transaction was never initiated.


Did this page help you?