Redeeming vouchers
How to validate and burn vouchers issued by the Loyalty Engine's voucher management system.
Overview
Vouchers are rewards that users actively redeem to receive a discount, free item, or other benefit. Unlike Offers, which are automatically applied when a member is identified at POS, Vouchers require the user to take action — such as claiming a reward in the loyalty app or microsite and then scanning or entering the voucher at checkout.
Each voucher has a unique code that must be validated by your POS or ecommerce platform through the Rewards API before it can be applied. Once validated, the response will include a discounts object describing how to apply the reward (for example, “£5 off” or “free coffee”).
Vouchers are typically used for:
One-off rewards (e.g. £5 off your next purchase)
Specific incentives (e.g. free item, birthday gift, prize redemption)
Limited-use or time-bound promotions
Offers, by contrast, are “always on” discounts that apply automatically to eligible users and do not require redemption.
Context
Rewards & benefits
See Understanding rewards & benefits.
When a user gets a voucher-type reward, a benefit representing the voucher is added to their account.
Voucher codes
A voucher code is assigned to a benefit when it is created, which is used for validation and burning.
The assigned voucher code can either be randomly generated by the Loyalty Engine (one-time voucher codes) or assigned from a pool of pre-determined codes (code pools). See Vouchers for more information on the various code types.
Voucher actions
Redeem a benefit: A benefit has an inferred state based on the presence of one or more timestamps. A voucher code can only be validated or burned if the benefit is in the redeemed state. See Benefit lifecycle for more information.
POST /commands/redeem_benefitredeems a benefit and makes it ready for validation.Validating and burning a voucher code:
POST /commands/validate_voucherverifies the voucher’s validity, associated reward, and discount details and marks the voucher as used (burnt).To validate a voucher code without burning it at the same time, set
allowFutureValidation = truewhen calling the validate voucher command.
Redemption journey
You can implement voucher redemption in two main ways:
1. Enter a Voucher Code
User retrieves a voucher code from their wallet or email before checkout.
They enter the code (online checkout) or present it at POS (in-store).
2. Select a Voucher
User is shown a list of vouchers in their wallet at checkout.
They select one to apply to the transaction.
Enter a voucher code
In-store cashier POS / self-serve
Simple to implement, minimal integration needed
User must retrieve and enter/present code manually
Select a voucher
Online checkout / app-led journeys
Seamless UX, no manual code entry
More complex integration; in-store it can slow service times and increase risk of misuse
Implementation steps
Redeem & retrieve voucher(s)
Voucher code flow: User redeems voucher themself, and provides code directly.
Voucher selection flow: Retrieve the user's benefits with
GET /benefitsand the relevant filter(s) applied, and let the user select a benefit from the list. If the benefit is not already redeemed, usePOST /commands/redeem_benefitto redeem it. Then, retrieve the benefit withGET /benefits/{id}and get the associated voucher code (data.code.value).
Validate and burn voucher
Call POST /commands/validate_voucher to verify validity, burn the voucher, and retrieve discount details.
Apply discount
Apply the discount(s) specified in the validate voucher API response to the transaction in POS.
Voucher redemption notes
Always validate/burn before payment completion to prevent duplicate use across multiple locations.
Voucher burns are final. If the transaction fails after redemption, customer service processes may be needed to issue a replacement.
If you want to check a voucher without burning it, set
allowFutureValidation = true(default isfalse).
FAQs
What happens if a voucher is validated, but the transaction then fails (payment declines, network error etc.)?
At this time it is not possible to 'unburn' a voucher. Ensure a sufficient customer service escalation process exists to account for and handle this edge case manually.
Can POS automatically suggest available vouchers to users?
Yes, the 'select a voucher' flow referenced above describes how to use our APIs to enable POS to fetch and display available vouchers for the user, letting the cashier select and redeem on their behalf.
Can the same voucher be used across multiple transactions?
No, vouchers are single-use by default and are marked as “burned” once validated.
Last updated
Was this helpful?