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

# Offers & redemptions

> Redemption codes that unlock a ticket type: invite guests to hidden tickets, reopen closed registration for the right people, and track every use.

The **Offers & redemptions** page manages redemption codes. A code is a key to one ticket type: it lets the holder register for that ticket even when the ticket is hidden or registration is closed. It is also the *only* way into a hidden guest ticket.

<Warning>
  A code grants **access, never a seat**. Capacity and sale windows still apply — a valid code against a sold-out ticket is still sold out. To guarantee places, give the guest ticket enough capacity of its own.
</Warning>

## Generate codes

<Steps>
  <Step title="Choose the ticket type">
    Click **Generate codes** and pick the ticket type each code will redeem. Create the ticket type first — often a hidden one dedicated to invitees.
  </Step>

  <Step title="One custom code, or a batch">
    Enter a **custom code** (e.g. `VIP2024` — letters, numbers, hyphens) to create exactly one, or leave it empty and set **How many** to generate up to 500 random codes in one batch. A batch can carry a shared **label** ("VIP partners") so you can tell campaigns apart.
  </Step>

  <Step title="Set uses and expiry">
    Choose uses per code — single use, a set number, or unlimited — and optionally an expiry (local time at the event; empty means no expiry).
  </Step>

  <Step title="Share">
    Use **Copy link** on any code: the link is the event page URL with `?code=…` appended, so it prefills and validates the code at checkout. Or copy the raw code for the visitor to type in.
  </Step>
</Steps>

## What a valid code bypasses — exactly two things

1. **Hidden-type visibility** — it reveals a hidden ticket to its holder.
2. **"Registration is closed"** — it lets its holder register when every published ticket is closed.

Nothing else. Capacity, the sale window and approval review all still apply.

## Use counting

Uses are counted from live registrations that carry the code — not a separate tally. Consequences:

* **Cancelling a registration releases its use.** A single-use code whose registration was cancelled works again.
* If a pending registration is **rejected** by the organizer, that use is released too.
* The list shows uses so far against the limit; a spent code simply stops validating.

## What the visitor sees

Every failure looks the same. A misspelt code, a disabled code, an expired code, a fully spent code, or a code pointing at a ticket that is no longer published — the visitor sees only that the code is **not valid**. They can never tell which case they hit, so a code is never a way to probe your event's configuration.

## Rules to know

* **Per-event unique and case-insensitive.** `vip2024` and `VIP2024` are the same code; two codes in one event cannot share a name.
* **Codes are disabled, never deleted.** Disable stops future redemptions immediately; existing registrations stay. You can re-enable later.
* **A code can carry its own perks**, added **on top of** the ticket type's perks — the same code mechanism can hand an invitee a lounge pass the ordinary ticket doesn't include. See [Perks](/en/ticketing/perks).
* **Already registered? No double-booking.** Someone registered who submits again with a code — even a spent one — is acknowledged as already registered, never sold a second seat and never shown an error. See [Orders](/en/ticketing/orders).
* **The code's page keeps a history** — created, redeemed, cancelled — so you can audit each redemption.
* Discount amounts (percentage or fixed) are **coming later** with paid ticketing; today a code grants access and perks, and every ticket is free anyway.

<Tip>
  Pattern for guest lists: create a **hidden** ticket type sized to the guest allocation, then generate one single-use code per guest. Capacity guards the allocation; single use guards each invitation.
</Tip>

## Related

<CardGroup cols={2}>
  <Card title="Ticket types" icon="tickets" href="/en/ticketing/ticket-types">
    Hidden visibility, capacity and sale windows — what codes unlock and what they don't.
  </Card>

  <Card title="Perks" icon="gift" href="/en/ticketing/perks">
    Extra perks a code stacks on top of the ticket's own.
  </Card>
</CardGroup>
