---
title: "Ticket pricing and offers"
description: "Set event-owned normal prices and run early-bird, scheduled, limited, and category-specific ticket offers."
---

Ticket offers temporarily replace the normal price of eligible ticket
categories. They are useful for an early-bird discount, a scheduled price
change, or a limited promotion for one part of the venue.

An offer changes **price**. It does not reserve inventory, restrict who can buy,
or close ticket sales.

## The one-minute model

Creating an event copies the seating chart's category and ticket-type prices.
From then on, those normal prices belong to that event. Edit them in **Pricing &
availability** without changing the chart or another event that uses it. When a
buyer selects a seat, SeatLayer checks whether an active offer matches that
seat's category.

<FlowDiagram
  label="Ticket offer price-resolution flow"
  steps={[
    {
      actor: "Buyer",
      title: "Selects a seat",
      detail: "SeatLayer reads this Event's current category and ticket-type pricing.",
      tone: "buyer",
    },
    {
      actor: "SeatLayer",
      title: "Resolves the active price",
      detail: "The highest-priority matching offer wins. If no offer matches, the Event's normal price applies.",
      tone: "seatlayer",
    },
    {
      actor: "SeatLayer",
      title: "Creates a hold",
      detail: "A held ticket temporarily uses one unit of the matching offer's quantity.",
      tone: "seatlayer",
    },
    {
      actor: "Outcome",
      title: "Returns or stays consumed",
      detail: "Expiry or release returns the quantity. A completed purchase keeps it consumed.",
      tone: "outcome",
    },
  ]}
/>

When an offer ends or reaches its limit, the next active matching offer takes
over. If none matches, that event's normal price returns automatically.

If the source chart's price defaults change later, linked events keep their
current prices. The Designer asks which events should receive the new defaults;
you can also review and apply them from the event's Pricing & availability
screen. Existing holds and bookings retain their locked price either way.

## Common setups

| Goal | Example |
|---|---|
| Early-bird discount | Stalls at €45 instead of €60, limited to 100 tickets |
| Scheduled price | Balcony at €30 until Friday at 23:59 |
| Category promotion | Boxes at €80 for the first 20 tickets |
| Price sequence | Early bird → Standard → Final price |

## Create an offer

Open the event and choose **Pricing & availability** (or **Tickets** when
SeatLayer Checkout is enabled).

Use **Edit normal prices** to change this event's base category or ticket-type
prices. Those changes apply to future selections in this event only. Then, to
add a temporary offer:

1. Choose an example or select **Create another offer**.
2. Give the offer the public name buyers should see.
3. Select the eligible ticket categories.
4. Enter the offer price and, if useful, a genuine regular or earlier price.
5. Add an optional ticket quantity, start time, or end time.
6. Review the summary and choose **Publish changes**.

The organizer list shows Draft, Upcoming, Live, Sold out, and Ended states. Use
the priority controls when scheduled offers overlap; the offer nearest the top
wins for a seat matched by more than one active offer.

## Quantities include active carts

An offer quantity measures tickets currently secured or purchased under that
offer. A ticket in an active buyer cart temporarily uses one unit. If the buyer
removes it or the hold expires, that unit returns automatically.

For an offer limited to 100 tickets:

| State | Available at the offer price |
|---|---:|
| 20 purchased, 5 held | 75 |
| Those 5 holds expire | 80 |
| 10 more are purchased | 70 |

The organizer screen and every open SeatPicker receive the updated quantity and
fallback price without a page reload.

## Eligible categories and ticket types

An offer can apply to one category or to **All eligible categories**. A category
that already uses ticket types such as Adult, Child, or VIP is excluded because
each ticket type has its own price. Use the chart's ticket types to price those
choices rather than putting a second price authority over them.

## Offers are not presale access

Before a scheduled offer begins, tickets remain available at their normal
prices. Scheduling an offer does not hide seats or make the event private.

| What you need | Use |
|---|---|
| Change the price temporarily | **Ticket offer** |
| Adult, Child, VIP, or concession choices | Ticket types |
| Private/member/partner access | [Sales channels](/platform/sales-channels) |
| Keep seats off sale | [Blocking](/server-api/blocking) |
| Stop all online sales | Event sales controls |

## What buyers see

The canonical SeatPicker shows the public offer name, current price, genuine
comparison price, remaining quantity, and end time. The same resolved price is
used in map tooltips, ticket-price rows, the selection tray, hosted pages,
iframes, popup pickers, and SDK integrations.

The server remains the charging authority. If an offer sells out while a buyer
is looking at the map, the picker receives the next matching offer or normal
price and redraws without losing the buyer's current selection.

## Ending an offer

Use **End now** to stop an offer price immediately. Tickets already purchased
retain the price paid, and active carts retain their secured price until their
hold expires. The ended offer remains in the organizer list as historical
context.