TL;DR —
422 means fix the request (loyalty pairing or kind); a host timeout during a purchase degrades to a normal card-only AUTHORIZED, not an error — retry the redemption itself with a new request_id if you want another attempt.When this happens
- The purchase sent a
loyaltycomponent, but the routed acquirer has no loyalty leg configured —422 urn:radiumone:transaction:loyalty-leg-required. - The
loyalty.kindyou sent (voucherorcoupon) is schema-accepted but not dispatchable — onlysale(points redemption) is live —422 urn:radiumone:loyalty:redemption-kind-not-supported. - A balance inquiry succeeds at the host level but nothing is redeemable for this card right now —
success: truewith emptypools[]/vouchers[]. This is not an error. - The loyalty host doesn’t respond in time during a purchase’s redemption leg — the redemption is treated as a warning, not a fatal failure: the purchase falls through to a card-only authorization. See Pay with points: outcomes for exactly what your server sees (a degraded,
AUTHORIZED, no-loyalty-block result).
What you see
What to do
1
Hide redemption when there's no balance
If a balance inquiry returns empty
pools[]/vouchers[], don’t show a redemption option — let the shopper pay with the card alone (API reference):2
Only send kind: 'sale'
Don’t send
loyalty.kind: "voucher" or "coupon" — they’re accepted by the schema but always rejected. Points and voucher redemption both go through kind: "sale" (API reference):3
Confirm loyalty-leg pairing before relying on this in production
A
422 loyalty-leg-required means your acquirer/outlet isn’t paired with a loyalty leg — see the enablement checklist and contact support.4
Monitor for degraded outcomes on a host timeout
If the response has no
loyalty block, treat it exactly like a normal card purchase — the card is AUTHORIZED for the full gross amount, and you still need to capture or void it. Add monitoring so an uncaptured degraded authorization doesn’t go unnoticed. If you need to retry the redemption itself, use a new request_id per attempt.Test it
See Test your integration for partial, full, degraded, and timeout scenarios.Related
Check a rewards balance
Look up what’s redeemable before the shopper pays.
Pay with points
The redemption purchase, and every outcome it can return.
UOB Rewards overview
Eligibility and the enablement checklist.
Payment method errors
The full URN catalog for loyalty errors.