> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gvb-staging.co.uk/llms.txt
> Use this file to discover all available pages before exploring further.

# Voucher redemption workflow

> Resolve first, then redeem deliberately.

<Warning>
  Redemption changes voucher state. Keep it behind an explicit operator action and make the
  resolve step visible before confirmation.
</Warning>

1. `POST /tenants/{tenant}/redemptions/resolve` with a QR token/URL or voucher reference.
2. Confirm `status` is `redeemable`, show voucher and tenant details to the operator, and retain the short-lived `redemption_token`.
3. `POST /tenants/{tenant}/redemptions` with that token. Include `amount` in major units only for a monetary voucher that permits partial redemption.

Blocked/failed reason codes include `void`, `already_redeemed`, `not_yet_active`, `expired`, `not_allowed_in_tenant`, `not_found`, and `not_redeemable`. Do not automatically retry a state-changing request unless you have reconciled the voucher's current state.
