5. Reversing a transaction

A reversal cancels a completed payment, same business day, before clearing. This article also owns the decision every integrator faces: reversal or refund?

Reversal or refund — the decision

ReversalRefund
WhenSame day, before clearingAny time, including after clearing
What it isCancels the original transactionA new, opposite transaction
References the original?Yes — by POITransactionIDNo (new transaction)
Typical triggerCashier error, cancelled saleProduct return

If the sale is from today and the cashier wants to undo it, reverse it. If it is older, or the reversal is refused, refund it. Refunding a transaction covers the second path; do not restate this decision there — link here.

The request

POST /reversal:

"ReversalRequest": {
  "Currency": "EUR",
  "OriginalPOITransaction": {"POITransactionID": {"TimeStamp": "2025-11-28T14:12:59.6+01:00", "TransactionID": "9990"}, "SaleID": "POS_01"},
  "ReversalReason": "MerchantCancel",
  "SaleData": {"OperatorID": "Cashier_01", "SaleTransactionID": {"TimeStamp": "...", "TransactionID": "9991"}}
}

The critical field is OriginalPOITransaction.POITransactionID — the terminal's identifier from the original PaymentResponse, which your POS stored at payment time. Referencing your own SaleTransactionID fails with "transaction not found" (ErrorCondition: NotAllowed with an explanatory AdditionalResponse).

ReversalReason values include MerchantCancel (cashier-initiated) and Unable2Compl (technical follow-up, e.g. after a too-late abort).

The response

Success returns ReversalResponse with ReversedAmount, the original transaction reference, and receipts to print. Failure follows the standard model — check ErrorCondition and AdditionalResponse.

When the reversal is refused — the credit fallback

The acquirer can refuse a reversal (typically when the original has already moved to clearing). The required behaviour is the credit fallback: on a refused reversal, your POS initiates a refund for the same amount instead. This fallback is a certification requirement — a POS that dead-ends on a refused reversal fails the campaign. Surface it to the cashier as one action ("cancel the sale") with the fallback automatic underneath.

Related

  • Refunding a transaction — the fallback path and standalone returns.
  • How the message model works — Rule 3: why the POITransactionID is the reference.