The end-to-end webhook sequence when an authorized transaction is cancelled before it settles.
A reversal cancels an authorization before it settles. It always references a specific prior authorization — a reversal never arrives on its own (see Non-Standard Transaction Scenarios). Because settlement never happens for the reversed amount, CardTransactionCleared is not sent for that authorization.
Sequence
sequenceDiagram
participant Cardholder
participant Merchant
participant Altery
participant Partner as Your System
Cardholder->>Merchant: Presents card / places order
Merchant->>Altery: Authorization request
Altery->>Partner: CardAuthorizationRequest (sync, 2s timeout)
Partner->>Altery: authorize: "true"
Altery-)Partner: CardTransactionApproved (notification)
Note over Merchant,Altery: Customer cancels order,<br/>duplicate auth, or hold expires
Merchant->>Altery: Reversal referencing the authorization
Altery-)Partner: CardTransactionReversed (notification)
Webhooks in this flow
| Step | Webhook | Type | Description |
|---|---|---|---|
| 1 | CardAuthorizationRequest | Request | Sent in real time; your response approves or declines the transaction |
| 2 | CardTransactionApproved | Notification | Sent once the authorization is approved and the transaction is created |
| 3 | CardTransactionReversed | Notification | Sent when the merchant or scheme cancels the authorization before settlement |
Amount in this flow
The amount on CardTransactionReversed is the amount being released from the hold, not the amount that remains authorized. A reversal can be partial: only part of the authorized amount is released, for example when a fuel-pump pre-authorization is higher than the amount actually dispensed. See CardTransactionReversed for the field-level explanation, and the "Partial reversals" section of Non-Standard Transaction Scenarios for worked examples.
A reversal is not a refund: a reversal always cancels an authorization that has not yet settled, while a refund (see Refund flow) returns funds after settlement.
