Two events
Subscribing to
CARD_AUTHORIZATION_REQUESTED subscribes you to both. You cannot be
consulted on the first authorisation and silently skipped on the increase; that would mean
approving an exposure and never seeing it raised.
The two share a transaction.transaction_link_id, so you can tie an increase
back to the authorisation you already approved.
What you receive
Fields worth reading twice
transaction.retrieval_reference_number and transaction.transaction_link_id were called transaction.reference and transaction.group_id when this page first went up. They were renamed within a day of publication, before any programme was enabled, so no integration should be affected — but if you built against that first version, they are the same values under the provider’s own names.merchant.mcc was called merchant.category_code. Same rename, same window, same reason — and mcc_category and mcc_description are new alongside it.null.
Refunds are included
A refund (Returns/Refunds) is an authorisation too, and you are asked about it on the
same events. The payload tells them apart without a separate event name: amount is
positive on a credit and negative on a debit, and type carries the acquirer’s label.
What you must respond
200 with exactly this shape:
reason is optional, free text, and kept for support and investigation. It is never shown
to the cardholder, trimmed, and truncated at 200 characters.
What happens when you do not answer
Configured per programme asfailureMode:
Rolling out safely
Subscribing to the event does not immediately let it decline anything. Enforcement is a separate opt-in (enforceDecision).
Until you enable it, your endpoint runs in shadow mode: we call it, record what you
said and what we would have answered, and approve on our own verdict. Nothing you return
can decline a card. Use that period to confirm your receiver answers the right shape
inside the timeout, then turn enforcement on.
Going straight to enforcement with a receiver that answers 200 {"ok": true} would decline
every card in your programme.
enforceDecision and failureMode have no self-service control yet — ask us and we will
set them on your programme’s card policy. Same for the callback URL and timeout.Verifying the signature
Orenda-Payload-Signature is the same header name the notification webhooks use, with
a different signing base. If you serve both families on one URL, tell them apart by the
presence of Orenda-Signature-Timestamp — only these decisional deliveries carry it.Redeliveries
The card network retries authorisations it does not hear about in time, and we re-run the decision from scratch on each. You will see the same authorisation more than once.event_id is stable across those retries; Orenda-Delivery-Id is not. Dedupe your
exposure on event_id, or you will count one purchase twice and decline a customer who is
comfortably within their limit.
Other requirements
- HTTPS only. Plain HTTP is rejected before the call is made.
- Redirects are not followed. A
3xxis treated as no answer — publish the final URL. - Keep the response small. A response over 64 KiB is no answer — we stop reading
and, under
failureMode: "closed", decline. Answering{"decision":"approve"}followed by 65 KiB of rule context declines the card. - Be quick. Our timeout covers DNS, TLS, your processing and the response body.