Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in
Orgo Event Ticketing sells event tickets from inside your membership platform, with member-only
pricing tied to your fee levels, add-ons, discount vouchers, and QR code check-in.Built for membership organisations running paid events for members and non-members: professional
associations, youth organisations, alumni networks, trade unions, and similar member-based groups.Replaces Eventbrite, Ticket Tailor or Cvent with ticketing tied directly to your member database
and your own Stripe account. Orgo charges no per-ticket fee, you pay only Stripe’s rate.Buyers pay by card in an inline Stripe checkout, receive a ticket by email, and check in at the door
by QR scan.The screen is three cards: Ticket types first, then Add-ons and
Vouchers below it.
Ticketing is a property of the individual event, not a module you switch on once.
1
Connect Stripe
The Online Payments module must be active and your Stripe account connected, otherwise the
Paid option does not appear on the event form. See
Stripe Setup.
2
Set the event to Paid
On the event form, under Who can join, set Price to Paid instead of Free. This
choice is only visible to organisation-wide event admins and finance admins.
3
Add ticket types
A Tickets entry appears in the event sidebar. Open it and add one or more ticket types.
4
Publish
Tickets appear on the event page once the event is published and
they are inside their sales window. A draft event is only visible to the people who can edit it.
Switching an event to Paid also forces Require registration form for members on, and the
toggle becomes read only. Every ticket buyer goes through the
registration form, never a simple RSVP.
The Max capacity field disappears from the event form once ticketing is on, and event-level
capacity is not applied to ticket sales. Cap attendance with Seats on each ticket type
instead.
The Tickets and Payments sidebar entries appear only for organisation-wide event admins and
finance admins, and only once the event is Paid. Every change on the Tickets page (ticket types,
add-ons, vouchers and registration links) needs the organisation-wide event permission, which
organisation admins also hold. A chapter-level event admin can run the event and edit its
registration form but cannot change what is on sale.
Open the event, then Tickets in the sidebar. The Ticket types list shows each ticket with its
price, who can buy it, a status tag and a sold counter with a small fill bar. Use + Add ticket to
create one, or click a ticket’s name to edit it. The ... menu on each row offers Edit ticket,
Duplicate, Archive (or Restore) and Delete.
Setting
What it does
Name
What buyers see: “Member”, “Guest”, “Early bird”.
Price
Amount in your organisation’s currency. Leave at 0 for a free ticket.
Description
Optional text shown under the ticket name on the event page.
Who can buy it
Everyone (guests and members, no account needed), All members (any signed-in member, hidden from guests) or Specific members (see Member pricing).
Seats
Seats for this ticket type. Empty means unlimited. Cannot go below the number already sold.
On sale from / On sale until
Optional sales window. Leave both empty to sell while registration is open. The window cannot start before the event was created or end after the event ends.
The editor shows a “How buyers see it” preview and a plain summary of what your choices mean.
The Price is locked after the first sale. To change a price, archive the ticket and add a new one.
Tickets with no sales can still be edited freely.
When the event is not public (Members only on the event form), Everyone is switched off and
every ticket is members only. Make the event public to sell to guests.Allow only one ticket per order, a switch at the top of the Tickets page, hides the quantity
controls so a buyer can select one ticket per checkout.
Archive takes a ticket off sale but keeps its sales history; archived tickets are hidden from the
list until you choose Show N archived, and Restore puts one back. Delete is only possible
while nothing has been sold on the ticket: once it has sales the menu shows Delete (N sold)
greyed out and you archive instead. An archived ticket is gone for everyone, including signed-in
members who previously saw it as a members-only offer.
The admin list labels each ticket automatically: On sale, On sale from (date) (the window has
not opened), Sales ended, Sold out and Archived. The count beside the price reads “N / M
sold”, or “N sold, unlimited” when there is no seat limit.The public event page uses its own, vaguer tags: Sold Out, Only N left! (10 seats or fewer,
with the exact number), Limited availability (11 to 20 seats) and nothing above 20. Tickets whose
window has not opened appear under Coming soon, and ended ones under Past offers.
Under Who can buy it, All members and Specific members tickets are members only.
All members: the ticket stays visible to logged-out visitors but cannot be selected. It carries a
members only badge, and the public page shows a notice with login and register buttons.
Specific members: the ticket is narrowed by Membership levels, by Chapters, or both.
Guests and members who do not qualify never see it: it is simply absent from the page, with no badge
and no explanation, which is why the usual report is “the members ticket is not on the page”.
Members only is enforced when the person pays or registers, not only on the page: the buyer must be
signed in with an active account in your organisation, and the ticket is issued to them. The checkout
fills in their own name and email and locks those fields, and only one members-only ticket can be
bought per order. A signed-out person, or someone from another organisation, is refused.
Members only checks that the buyer is an active account in your organisation. It does not check
that their membership fee is paid, unless you narrow the ticket by membership level. Do not use a
plain All members ticket to keep a price away from lapsed members.
How Specific members decides:
Membership levels (shown when your organisation has a membership fee with levels): tick one or
more. Members on any ticked level qualify. A member with no level assigned sees no level-restricted
tickets. The ticket appears on the page only to members whose membership is currently active; the
level itself is what the checkout then compares.
Chapters (shown when the Local Centers module is on): tick one or more. Members of a ticked
chapter or any of its sub-chapters qualify. A member with no chapter does not.
Tick nothing in one list and that list does not restrict. Tick both and the member must match a
level and a chapter. At least one box must be ticked.
A member cannot take a second level-restricted ticket on the same event: the limit is one per
attendee, counted across the whole event rather than per ticket type.These checks are skipped when the person doing the booking is an organisation-wide event admin, a
chapter event admin for the event’s group, or the event’s owner, so an organiser can still book on
someone’s behalf. The test is against the person doing the booking, not the person attending.
The membership level list is read from your organisation’s membership fee
product. If none is configured the Membership levels list does not appear.
Two tickets with adjoining sales windows give you early bird then regular pricing; an All members
ticket beside an Everyone one gives you member and non-member prices; tickets priced 0 still
separate members from guests.
Every structure below is built from the same ticket type fields. The amounts and dates are
examples, not defaults: nothing here is preconfigured.
What you want
How to build it
Early bird, then regular
Two ticket types on the same event. “Early Bird” at 60, On sale until 31 March 23:59. “Regular” at 80, On sale from 1 April 00:00. Both stay listed in the admin list: the early bird turns Sales ended and the regular reads On sale from (date) until its window opens. Buyers see the regular under Coming soon and the early bird under Past offers, and neither is selectable outside its window.
Member versus non-member
”Member” at 40 with Who can buy it set to All members, “Standard” at 70 with Everyone. A logged-out visitor sees both, can select only Standard, and gets the login and register prompt on the member one.
Tiered access by membership level
Choose Specific members and tick levels under Membership levels: “Student rate” at 25 for your Student level, “Full rate” at 55 for Standard and Senior. A member whose level is not ticked does not see the ticket. Because only one membership-restricted ticket is allowed per attendee per event, these tiers are mutually exclusive by construction. Tick Chapters instead (or as well) to price by chapter.
Free event with categories
Price every type 0: “In person” with Seats 120, “Online” with no seat limit. A zero-priced ticket goes through free registration with no card step, so the attendee still fills in the registration form and still gets a QR ticket. An event where every ticket has a price cannot be used for free registration.
Paid event with one free category
Mix them: a paid ticket type and a 0 priced one on the same event. The free one is completed without a card; the paid ones go to Stripe.
One ticket per person
Turn on Allow only one ticket per order at the top of the Tickets page. For anything larger, note that one browser session can hold at most 10 tickets per event, so a company buying 12 places has to do it in two checkouts. To invite one named person at no charge, use an invitation link.
A ticket priced 0 is not the same as a members-only ticket priced 0. Price decides whether Stripe is
involved; Who can buy it decides who can select it. You can combine them freely.
Add-ons are extras sold alongside a ticket: a meal, a workshop track, parking, a partner place. They
live in the Add-ons section of the Tickets page, and you need at least one ticket type first
(+ Add add-on stays greyed out until then).
Setting
What it does
Name
What buyers see, for example “Partner seat”.
Price
Cost per unit. Set to 0 for a free extra. Locked after the first sale.
Description
Optional detail line under the name.
Offered with
Tick the ticket types the add-on appears under. At least one is required. Locked after the first sale.
Max per ticket
How many of this add-on one ticket can carry. Empty means unlimited.
Total available
Overall stock across all buyers. Empty means unlimited. When it runs out the add-on shows Sold Out. Cannot go below the number already sold.
Adds a separate attendee
The buyer fills in a name for each one, and each gets its own badge and check-in. Use it for partner or child seats, not for meals or parking. Locked after the first sale.
Each add-on row shows what it is offered with, a “max N per ticket” note, an Adds an attendee tag
where it applies, and “N sold” (or “N / M sold” when there is a total).
An add-on that has been sold cannot be deleted: the menu shows Delete (N sold) greyed out. Use
Archive instead, which hides it from checkout while keeping the sales history, and Restore to
bring it back.
Vouchers are per-event discount codes, listed under Vouchers on the Tickets page with + Add
voucher. Buyers enter the code at checkout under Have a voucher code?. The same panel also holds
registration links.
Setting
What it does
Voucher code
Letters, numbers and dashes, up to 50 characters. Unique within the event and matched in upper case. Generate suggests one.
Active
Turns the code off without deleting it. Inactive codes are refused at checkout, so you can prepare one and switch it on later.
Discount
Percentage (a share of each ticket) or Fixed amount (a sum off the order total).
Percent off / Amount off
The percentage (1 to 100) or the fixed amount, in your organisation currency.
Never more than
Percentage vouchers only. A ceiling on the money taken off one order.
Tickets per order
Percentage vouchers only. Discount only the first N tickets in an order.
Max orders
Number of separate checkouts that may use the code. Each checkout counts once whatever the ticket quantity. Empty means unlimited, and it cannot be set below the uses already taken.
Valid
Optional start and end date.
Applies to
Tick ticket types to limit the code to them; add-ons are then left out. Tick nothing and it applies to every ticket type, with add-ons in the same order included.
The editor shows an Example order so you can see the effect before saving. Each voucher row shows
its rule, what it applies to, its dates and “N / M orders used”. The status is Active, Starts
(date), Expired, All uses taken or Inactive, and vouchers that can still be used are
listed first. The ... menu offers Edit voucher, Copy code, Deactivate or Activate,
and Delete. A voucher that takes the order to zero completes without a card payment. Deleting a
voucher does not change discounts already applied to past orders, and a refund does not give a use
back.
A fixed-amount voucher comes off the order total once, not off each ticket. A percentage voucher is
the one that surprises people, because the percentage is applied to the order’s average ticket
price, multiplied by the number of tickets it is allowed to cover.Example. An order of two Regular tickets at 80 and one Student ticket at 25 totals 185.
Voucher
Discount taken
Why
20%, no other limits
37.00
20% of the whole 185.
20%, Tickets per order 2
24.67
The average ticket is 61.67; two of them is 123.34; 20% of that. Not 20% of the two dearest tickets.
20%, Tickets per order 2, Never more than 20
20.00
The cap wins.
20%, Applies to Regular only
32.00
Only the two Regular lines count, so the average is 80.
If you want a percentage to apply to specific tickets, tick them under Applies to. Tickets per
order limits how many tickets are covered but does not choose which ones.
Two single-use links sit beside vouchers on the Tickets page. Both are for one named person and both
need a public event, because the link opens the public event page; on a members-only event the
buttons are disabled with a note saying so. Creating them needs the organisation-wide event permission.
Link
What it does
+ Invitation
Registers one person on the ticket you choose, free of charge.
+ Ticket link
Lets one person buy the chosen ticket at its normal price, even outside its sales window.
In both cases the registration form still has to be filled in. Pick the Ticket and a Valid to
date (the link stops working after it; it must be in the future), then Create link. The editor then
shows the Link with a Copy link button; the row menu offers Copy link too. Send that link
to the person.A link works once. After someone registers through it the row reads Used, and the editor lists
under Registrations who used it, when, and whether that registration was later canceled or is
awaiting payment. Switch Active off to revoke an unused link (the row reads Revoked), or
Delete it, which stops it working immediately. An expired link reads Expired.
When a buyer starts selecting tickets, the seats are held so two people cannot buy the last one at
the same time.
A hold lasts 8 minutes, reset to a fresh 8 minutes when the buyer adds more of the same ticket.
One browser session can hold at most 10 tickets per event, counted across ticket types. Beyond
that the buyer is told how many more they can hold.
Holds are released when the buyer leaves the page, when the purchase completes, or by a
scheduled cleanup once they expire.
Held seats are unavailable to everyone else, so a ticket can read “Sold Out” while carts are open
and free up again when they expire.
Members-only tickets are not held in a cart: their seats are only taken when someone pays, so two
members can reach checkout for the last seat and only the first to pay gets it.
Listed cheapest first. Sold out tickets are shown but not selectable; tickets whose window has not
opened appear under Coming soon and ended ones under Past offers. A signed-in member sees any
members-only tickets that match them, some marked just for you.
2
Fill in the registration form
One card per ticket, collecting every attendee’s details; logged-in members arrive prefilled. See
Registration Forms.
3
Add extras and a voucher
Add-ons appear under Extras in the order summary. A voucher code can be applied and removed
before paying.
4
Consent and pay
The buyer confirms your GDPR policy and terms, then pays inline through Stripe without leaving
the page.
5
Get the tickets
A paid order sends the buyer one confirmation email with every ticket attached as its own PDF,
including tickets created by add-ons. On a free order each attendee registered under a different
email address gets their own confirmation too.
With the Invoices module on, the checkout also offers I want company invoice. Ticking it
adds a billing step for company details, after which the buyer can still pay by card or choose
Pay via bank transfer, which issues an invoice and confirms the tickets once payment arrives.
Hide the option with Settings → Events → Disable Company Invoice in Checkout.
The Payments entry in the event sidebar opens the order list, headed Orders.Each row shows the order id, status, the buyer (member or contact), amount, the voucher code if one
was used, and the payment date. Filter by name, email, or status (open, paid, refunded);
rows can also read on-hold or canceled. Where a Stripe account is connected, an arrow link
opens the payment or invoice in the Stripe dashboard.The Ticket type column stays empty for event ticket orders. It reads a product option, which is
a fee-product concept; event ticket purchases record the ticket tier as the product price instead.
To see which tier someone bought, use the Ticket column on
the participant list or the Revenue by ticket table in
Analytics.Refund appears on paid orders that were paid by card, for finance admins. It
refunds the full amount, with no partial refund in the interface, and on success cancels every
attendee record created by that order, returns their seats to the ticket type, and returns any add-on
quantities to stock. Voucher usage is not returned. An order with no Stripe payment behind it (recorded outside Orgo)
shows Mark as refunded instead: it sends no money back, so confirm you have already refunded the
buyer elsewhere. Orders paid by bank transfer have neither button: handle those in Stripe or through
invoice cancellation.With the Invoices module on, an organisation admin gets a Generate Invoice button on paid orders
that have no invoice yet, and a View Invoice link once one exists.
Every attendee record carries a random token that becomes their QR code, delivered in the
confirmation email and shown on the event page. Scanning it at the door opens the check-in screen
with the attendee’s name, ticket type, payment status and add-ons.
Scanning requires organisation-wide HR or event permission. A chapter-level event admin cannot
scan. The full flow, walk-ins and manual check-in are covered in
Check-in.
A member can download their own ticket as a PDF from the internal event page, and an administrator
can download someone else’s only with HR permission over that person. The public event page above has no
download button: it renders the status badge and the QR code only.
I need a discount code rather than a separate cheap ticket
Use a voucher. It is the only discount mechanism in Orgo: there is no automatic
group or bulk pricing.
Someone bought a ticket but cannot attend, can they transfer it?
There is no self-service transfer. An administrator cancels and refunds the original
registration, then invites the replacement as a complimentary attendee or has them buy a ticket.
I set a ticket price wrong and it is already saved
Prices are locked once a ticket has sold, because payments reference them. If nothing has sold, edit
the price directly. Otherwise add a corrected ticket and Archive the wrong one, which keeps its
history.
A ticket says Sold Out but I know seats are free
Seats in other people’s carts count as taken. Wait for the 8 minute hold to clear before raising
Seats.
A member cannot select the members-only ticket
Check that they are signed in with an active account in your organisation. For a ticket limited to
Specific members, check that their membership is active and on a ticked level, or that they are
in a ticked chapter, then whether they already hold another membership-restricted ticket for this
event: only one is allowed.
I want to stop sales without deleting anything
Open the event and choose Close registrations from the Actions menu in the header (it
becomes Reopen registrations afterwards). No new registrations or ticket purchases are
accepted, and existing attendees keep their tickets.
Deletion is blocked as soon as the ticket type has history: the menu shows Delete (N sold)
greyed out, and the server also refuses when payments, attendees or a ticket bundle point at it.
The records that point at it have to keep pointing at something. Archive the ticket instead: it
stops selling, keeps its history, and can be restored later.
Saving a ticket is rejected because of its dates
The sales window has to sit inside the event’s own lifetime: On sale from cannot be earlier
than the date the event was created, and On sale until cannot be later than the event’s end
(its start, if no end is set). The end must also come after the start.
A buyer is told they cannot hold more than 10 tickets
One browser session can hold at most 10 tickets per event across all ticket types, and the
message tells the buyer how many more they may take. This is a cap on a single cart, not on the
event: they complete that checkout and start another one for the rest.
A voucher code is rejected as invalid
“Invalid voucher code” covers three cases at once: the code does not exist on this event
(vouchers are per event, so a code created on last year’s event will not carry over), it is
switched off with Active, or it is outside its Valid dates. A code that has used up
Max orders says so instead (“reached its usage limit”). Codes are stored and matched in upper
case, so capitalisation in the email you sent does not matter.
The voucher took off less than the buyer expected
See How the discount is worked out. The usual causes are
Never more than capping the money, Tickets per order limiting how many tickets the
percentage covers, or the percentage landing on the order’s average ticket price rather than on
the dearest tickets.
Checkout fails with a message about the name
“Name can only contain letters, spaces, hyphens, apostrophes and periods.” Something that is not
a name went into a name box, most often a phone number. Orgo checks every buyer, attendee and
add-on attendee name before the card is charged rather than after, so the money is never taken.
Checkout fails because the tickets use different currencies
One order cannot mix currencies. This only happens when ticket types on the same event were
saved with different currencies; rebuild the odd one out in the event’s currency.
An add-on cannot be added to an order
Three separate limits produce three different messages: Max per ticket (“Maximum N of X per
ticket allowed”), Total available (“Only N X available”), and an archived add-on (“no longer
available”). Inventory counts sales across all buyers, so it can run out mid-event.
An attendee lost the confirmation email, can I resend it?
There is no resend button. A signed-in member can open the event page and download their own
ticket as a PDF; an administrator with HR permission over that member can download the same PDF and
forward it. The QR code is fixed when the attendee record is created and never regenerated, so a
re-downloaded ticket scans exactly like the original, and an attendee who shows the QR from the
original email is equally valid.
The Tickets page and the public event page disagree about how many seats are left
They count differently, and both are right. The Sold Out and Only N left! tags on the
admin ticket list subtract only tickets already sold. The public page also subtracts seats
currently held in other people’s carts, so it can warn buyers, or refuse them outright, while
your list still looks comfortable. The two converge once the open carts are paid for or their
8 minute holds expire.
I refunded an order but the voucher still counts as used
Refunding returns seats and add-on stock but never a voucher use. On a limited-use code, raise
Max orders by the number of orders you refunded, otherwise the code retires early.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Orgo Documentation","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/orgo-dc7abe63/BNSJo8TfEHWYUUsw/images/orgo-logo-transparent.png?fit=max\u0026auto=format\u0026n=BNSJo8TfEHWYUUsw\u0026q=85\u0026s=b68efcea74a9c92be763019ff7faf5ff","dark":"https://mintcdn.com/orgo-dc7abe63/BcaQGMmLlvrr9oyS/images/orgo-logo-white.png?fit=max\u0026auto=format\u0026n=BcaQGMmLlvrr9oyS\u0026q=85\u0026s=4da1dfe66530649ff52ed677d39f0037","href":"https://orgo.space/docs/platform"},"favicon":"https://mintcdn.com/orgo-dc7abe63/Et5eDshrgsaFMKz4/favicon.svg?fit=max\u0026auto=format\u0026n=Et5eDshrgsaFMKz4\u0026q=85\u0026s=96f65e3e14f23ca1a179e6462a2398f8","api":{"playground":{"display":"simple"}},"navbar":{"links":[{"href":"https://app.orgo.space/start","label":"Get Started"}]},"footer":{"socials":{"website":"https://orgo.space","linkedin":"https://www.linkedin.com/company/orgospace","github":"https://github.com/Orgo-space"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"orgo-dc7abe63","hasAudioNarration":false,"actualSubdomain":"orgo-dc7abe63","customDomains":["orgo.space"],"gitSource":{"type":"github","owner":"orgo-space","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af4d4e0a517519e7040ea81","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":940},{"language":"default","tag":"Documentation","count":135},{"language":"default","tag":"Website","count":35},{"language":"default","tag":"Event","count":27},{"language":"default","tag":"Company","count":26},{"language":"default","tag":"Post","count":26},{"language":"default","tag":"Users \u0026 Profiles","count":25},{"language":"default","tag":"User","count":24},{"language":"default","tag":"Webhooks","count":18},{"language":"default","tag":"Events","count":17}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"platform/events/ticketing","slug":"/platform/events/ticketing","pageMetadata":{"title":"Event Ticketing","description":"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in","og:title":"Event Ticketing | Orgo","og:description":"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in","twitter:title":"Event Ticketing | Orgo","twitter:description":"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in","href":"/platform/events/ticketing"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,hr:`hr`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Heading,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Orgo Event Ticketing sells event tickets from inside your membership platform, with member-only\npricing tied to your fee levels, add-ons, discount vouchers, and QR code check-in.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Built for`}),` membership organisations running paid events for members and non-members: professional\nassociations, youth organisations, alumni networks, trade unions, and similar member-based groups.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Replaces`}),` Eventbrite, Ticket Tailor or Cvent with ticketing tied directly to your member database\nand your own Stripe account. Orgo charges no per-ticket fee, you pay only Stripe’s rate.`]}),`\n`,_jsx(_components.p,{children:`Buyers pay by card in an inline Stripe checkout, receive a ticket by email, and check in at the door\nby QR scan.`}),`\n`,_jsxs(_components.p,{children:[`The screen is three cards: `,_jsx(_components.strong,{children:`Ticket types`}),` first, then `,_jsx(_components.a,{href:`#add-ons`,children:`Add-ons`}),` and\n`,_jsx(_components.a,{href:`#vouchers`,children:`Vouchers`}),` below it.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`turning-ticketing-on`,children:`Turning ticketing on`}),`\n`,_jsx(_components.p,{children:`Ticketing is a property of the individual event, not a module you switch on once.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Connect Stripe`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Online Payments`}),` module must be active and your Stripe account connected, otherwise the\n`,_jsx(_components.strong,{children:`Paid`}),` option does not appear on the event form. See\n`,_jsx(_components.a,{href:`/platform/fees/stripe-integration`,children:`Stripe Setup`}),`.`]})}),_jsx(Step,{title:`Set the event to Paid`,children:_jsxs(_components.p,{children:[`On the event form, under `,_jsx(_components.strong,{children:`Who can join`}),`, set `,_jsx(_components.strong,{children:`Price`}),` to `,_jsx(_components.strong,{children:`Paid`}),` instead of `,_jsx(_components.strong,{children:`Free`}),`. This\nchoice is only visible to organisation-wide event admins and finance admins.`]})}),_jsx(Step,{title:`Add ticket types`,children:_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`Tickets`}),` entry appears in the event sidebar. Open it and add one or more ticket types.`]})}),_jsx(Step,{title:`Publish`,children:_jsxs(_components.p,{children:[`Tickets appear on the `,_jsx(_components.a,{href:`/platform/events/public-page`,children:`event page`}),` once the event is published and\nthey are inside their sales window. A draft event is only visible to the people who can edit it.`]})})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Switching an event to `,_jsx(_components.strong,{children:`Paid`}),` also forces `,_jsx(_components.strong,{children:`Require registration form for members`}),` on, and the\ntoggle becomes read only. Every ticket buyer goes through the\n`,_jsx(_components.a,{href:`/platform/events/registration-forms`,children:`registration form`}),`, never a simple RSVP.`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Max capacity`}),` field disappears from the event form once ticketing is on, and event-level\ncapacity is not applied to ticket sales. Cap attendance with `,_jsx(_components.strong,{children:`Seats`}),` on each ticket type\ninstead.`]})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Tickets`}),` and `,_jsx(_components.strong,{children:`Payments`}),` sidebar entries appear only for organisation-wide event admins and\nfinance admins, and only once the event is Paid. Every change on the Tickets page (ticket types,\nadd-ons, vouchers and registration links) needs the organisation-wide event permission, which\norganisation admins also hold. A chapter-level event admin can run the event and edit its\n`,_jsx(_components.a,{href:`/platform/events/registration-forms`,children:`registration form`}),` but cannot change what is on sale.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`ticket-type-settings`,children:`Ticket type settings`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-tickets.png?fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=eddee319f0b764925493c5bb49b67116`,alt:`The Tickets screen of an event, with the ticket types listed with their price, status tag and sold bar, and the Add-ons and Vouchers cards beneath them`,style:{width:`100%`,borderRadius:`8px`,border:`1px solid var(--border-color)`,marginBottom:`1rem`},\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`2160`,height:`2160`,\"data-path\":`images/platform/events/event-tickets.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-tickets.png?w=280\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=e3e072b4a63390400ef049d96a1bc8d7 280w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-tickets.png?w=560\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=cd0da2a4e0fcaee3336808ac9ca06666 560w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-tickets.png?w=840\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=e8d5e541463b901deab8e44c6b7f98b7 840w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-tickets.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=f868b5a584a1226ab6682928fa0e5b07 1100w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-tickets.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=c4c409f2caaa4629cb797acded28e2c9 1650w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-tickets.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=7b79b378d437eebc0d628e1f96f27abf 2500w`}),`\n`,_jsxs(_components.p,{children:[`Open the event, then `,_jsx(_components.strong,{children:`Tickets`}),` in the sidebar. The `,_jsx(_components.strong,{children:`Ticket types`}),` list shows each ticket with its\nprice, who can buy it, a status tag and a sold counter with a small fill bar. Use `,_jsx(_components.strong,{children:`+ Add ticket`}),` to\ncreate one, or click a ticket’s name to edit it. The `,_jsx(_components.code,{children:`...`}),` menu on each row offers `,_jsx(_components.strong,{children:`Edit ticket`}),`,\n`,_jsx(_components.strong,{children:`Duplicate`}),`, `,_jsx(_components.strong,{children:`Archive`}),` (or `,_jsx(_components.strong,{children:`Restore`}),`) and `,_jsx(_components.strong,{children:`Delete`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Name`})}),_jsx(_components.td,{children:`What buyers see: “Member”, “Guest”, “Early bird”.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Price`})}),_jsx(_components.td,{children:`Amount in your organisation’s currency. Leave at 0 for a free ticket.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Description`})}),_jsx(_components.td,{children:`Optional text shown under the ticket name on the event page.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Who can buy it`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Everyone`}),` (guests and members, no account needed), `,_jsx(_components.strong,{children:`All members`}),` (any signed-in member, hidden from guests) or `,_jsx(_components.strong,{children:`Specific members`}),` (see `,_jsx(_components.a,{href:`#member-pricing`,children:`Member pricing`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Seats`})}),_jsx(_components.td,{children:`Seats for this ticket type. Empty means unlimited. Cannot go below the number already sold.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`On sale from`}),` / `,_jsx(_components.strong,{children:`On sale until`})]}),_jsx(_components.td,{children:`Optional sales window. Leave both empty to sell while registration is open. The window cannot start before the event was created or end after the event ends.`})]})]})]}),`\n`,_jsx(_components.p,{children:`The editor shows a “How buyers see it” preview and a plain summary of what your choices mean.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-ticket-type-editor.png?fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=79892635c1c3c24b6a0eec423a185f42`,alt:`The New ticket editor, with the name, price and description under Basics, the Everyone, All members and Specific members choice for who can buy it, the seat count and the sales window, and a live preview of how buyers will see the ticket beside a summary of what the choices mean`,style:{width:`100%`,borderRadius:`8px`,border:`1px solid var(--border-color)`,marginBottom:`1rem`},\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`2580`,height:`2580`,\"data-path\":`images/platform/events/event-ticket-type-editor.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-ticket-type-editor.png?w=280\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=96712d2722b4eb28c941cc0cf3c2001c 280w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-ticket-type-editor.png?w=560\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=5613fda759dfc39647b6be32e8fa3346 560w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-ticket-type-editor.png?w=840\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=5eb69d63db6f26b0e05defd134c0eef2 840w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-ticket-type-editor.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=db156f8bf7b94d009c7e13bf872c39f8 1100w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-ticket-type-editor.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=73bb65ae08d9ce67cd40cd2fa8f0a1e9 1650w, https://mintcdn.com/orgo-dc7abe63/Qw34E-hBCU8WDSEU/images/platform/events/event-ticket-type-editor.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Qw34E-hBCU8WDSEU\u0026q=85\u0026s=1be6fe06f1167057674958ecf6b738c4 2500w`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Price`}),` is locked after the first sale. To change a price, archive the ticket and add a new one.\nTickets with no sales can still be edited freely.`]})}),`\n`,_jsxs(_components.p,{children:[`When the event is not public (`,_jsx(_components.strong,{children:`Members only`}),` on the event form), `,_jsx(_components.strong,{children:`Everyone`}),` is switched off and\nevery ticket is members only. Make the event public to sell to guests.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Allow only one ticket per order`}),`, a switch at the top of the Tickets page, hides the quantity\ncontrols so a buyer can select one ticket per checkout.`]}),`\n`,_jsx(Heading,{level:`3`,id:`archive-and-delete`,children:`Archive and delete`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Archive`}),` takes a ticket off sale but keeps its sales history; archived tickets are hidden from the\nlist until you choose `,_jsx(_components.strong,{children:`Show N archived`}),`, and `,_jsx(_components.strong,{children:`Restore`}),` puts one back. `,_jsx(_components.strong,{children:`Delete`}),` is only possible\nwhile nothing has been sold on the ticket: once it has sales the menu shows `,_jsx(_components.strong,{children:`Delete (N sold)`}),`\ngreyed out and you archive instead. An archived ticket is gone for everyone, including signed-in\nmembers who previously saw it as a members-only offer.`]}),`\n`,_jsx(Heading,{level:`3`,id:`ticket-status-tags`,children:`Ticket status tags`}),`\n`,_jsxs(_components.p,{children:[`The admin list labels each ticket automatically: `,_jsx(_components.strong,{children:`On sale`}),`, `,_jsx(_components.strong,{children:`On sale from (date)`}),` (the window has\nnot opened), `,_jsx(_components.strong,{children:`Sales ended`}),`, `,_jsx(_components.strong,{children:`Sold out`}),` and `,_jsx(_components.strong,{children:`Archived`}),`. The count beside the price reads “N / M\nsold”, or “N sold, unlimited” when there is no seat limit.`]}),`\n`,_jsxs(_components.p,{children:[`The public event page uses its own, vaguer tags: `,_jsx(_components.strong,{children:`Sold Out`}),`, `,_jsx(_components.strong,{children:`Only N left!`}),` (10 seats or fewer,\nwith the exact number), `,_jsx(_components.strong,{children:`Limited availability`}),` (11 to 20 seats) and nothing above 20. Tickets whose\nwindow has not opened appear under `,_jsx(_components.strong,{children:`Coming soon`}),`, and ended ones under `,_jsx(_components.strong,{children:`Past offers`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`member-pricing`,children:`Member pricing`}),`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Who can buy it`}),`, `,_jsx(_components.strong,{children:`All members`}),` and `,_jsx(_components.strong,{children:`Specific members`}),` tickets are members only.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`All members`}),`: the ticket stays visible to logged-out visitors but cannot be selected. It carries a\n`,_jsx(_components.strong,{children:`members only`}),` badge, and the public page shows a notice with `,_jsx(_components.strong,{children:`login`}),` and `,_jsx(_components.strong,{children:`register`}),` buttons.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Specific members`}),`: the ticket is narrowed by `,_jsx(_components.strong,{children:`Membership levels`}),`, by `,_jsx(_components.strong,{children:`Chapters`}),`, or both.\nGuests and members who do not qualify never see it: it is simply absent from the page, with no badge\nand no explanation, which is why the usual report is “the members ticket is not on the page”.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Members only is enforced when the person pays or registers, not only on the page: the buyer must be\nsigned in with an active account in your organisation, and the ticket is issued to them. The checkout\nfills in their own name and email and locks those fields, and only `,_jsx(_components.strong,{children:`one`}),` members-only ticket can be\nbought per order. A signed-out person, or someone from another organisation, is refused.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Members only`}),` checks that the buyer is an active account in your organisation. It does not check\nthat their membership fee is paid, unless you narrow the ticket by membership level. Do not use a\nplain `,_jsx(_components.strong,{children:`All members`}),` ticket to keep a price away from lapsed members.`]})}),`\n`,_jsxs(_components.p,{children:[`How `,_jsx(_components.strong,{children:`Specific members`}),` decides:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Membership levels`}),` (shown when your organisation has a membership fee with levels): tick one or\nmore. Members on any ticked level qualify. A member with no level assigned sees no level-restricted\ntickets. The ticket appears on the page only to members whose membership is currently active; the\nlevel itself is what the checkout then compares.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Chapters`}),` (shown when the Local Centers module is on): tick one or more. Members of a ticked\nchapter or any of its sub-chapters qualify. A member with no chapter does not.`]}),`\n`,_jsxs(_components.li,{children:[`Tick nothing in one list and that list does not restrict. Tick both and the member must match a\nlevel `,_jsx(_components.strong,{children:`and`}),` a chapter. At least one box must be ticked.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`A member cannot take a second level-restricted ticket on the same event: the limit is one per\nattendee, counted across the whole event rather than per ticket type.`}),`\n`,_jsx(_components.p,{children:`These checks are skipped when the person doing the booking is an organisation-wide event admin, a\nchapter event admin for the event’s group, or the event’s owner, so an organiser can still book on\nsomeone’s behalf. The test is against the person doing the booking, not the person attending.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The membership level list is read from your organisation’s `,_jsx(_components.a,{href:`/platform/fees/fees`,children:`membership fee`}),`\nproduct. If none is configured the `,_jsx(_components.strong,{children:`Membership levels`}),` list does not appear.`]})}),`\n`,_jsxs(_components.p,{children:[`Two tickets with adjoining sales windows give you early bird then regular pricing; an `,_jsx(_components.strong,{children:`All members`}),`\nticket beside an `,_jsx(_components.strong,{children:`Everyone`}),` one gives you member and non-member prices; tickets priced 0 still\nseparate members from guests.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`common-ticket-structures`,children:`Common ticket structures`}),`\n`,_jsxs(_components.p,{children:[`Every structure below is built from the same ticket type fields. The amounts and dates are\n`,_jsx(_components.strong,{children:`examples`}),`, not defaults: nothing here is preconfigured.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`What you want`}),_jsx(_components.th,{children:`How to build it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Early bird, then regular`})}),_jsxs(_components.td,{children:[`Two ticket types on the same event. “Early Bird” at 60, `,_jsx(_components.strong,{children:`On sale until`}),` 31 March 23:59. “Regular” at 80, `,_jsx(_components.strong,{children:`On sale from`}),` 1 April 00:00. Both stay listed in the admin list: the early bird turns `,_jsx(_components.strong,{children:`Sales ended`}),` and the regular reads `,_jsx(_components.strong,{children:`On sale from (date)`}),` until its window opens. Buyers see the regular under `,_jsx(_components.strong,{children:`Coming soon`}),` and the early bird under `,_jsx(_components.strong,{children:`Past offers`}),`, and neither is selectable outside its window.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Member versus non-member`})}),_jsxs(_components.td,{children:[`”Member” at 40 with `,_jsx(_components.strong,{children:`Who can buy it`}),` set to `,_jsx(_components.strong,{children:`All members`}),`, “Standard” at 70 with `,_jsx(_components.strong,{children:`Everyone`}),`. A logged-out visitor sees both, can select only Standard, and gets the login and register prompt on the member one.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Tiered access by membership level`})}),_jsxs(_components.td,{children:[`Choose `,_jsx(_components.strong,{children:`Specific members`}),` and tick levels under `,_jsx(_components.strong,{children:`Membership levels`}),`: “Student rate” at 25 for your Student level, “Full rate” at 55 for Standard and Senior. A member whose level is not ticked does not see the ticket. Because only one membership-restricted ticket is allowed per attendee per event, these tiers are mutually exclusive by construction. Tick `,_jsx(_components.strong,{children:`Chapters`}),` instead (or as well) to price by chapter.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Free event with categories`})}),_jsxs(_components.td,{children:[`Price every type 0: “In person” with `,_jsx(_components.strong,{children:`Seats`}),` 120, “Online” with no seat limit. A zero-priced ticket goes through free registration with no card step, so the attendee still fills in the registration form and still gets a QR ticket. An event where every ticket has a price cannot be used for free registration.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Paid event with one free category`})}),_jsx(_components.td,{children:`Mix them: a paid ticket type and a 0 priced one on the same event. The free one is completed without a card; the paid ones go to Stripe.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`One ticket per person`})}),_jsxs(_components.td,{children:[`Turn on `,_jsx(_components.strong,{children:`Allow only one ticket per order`}),` at the top of the Tickets page. For anything larger, note that one browser session can hold at most 10 tickets per event, so a company buying 12 places has to do it in two checkouts. To invite one named person at no charge, use an `,_jsx(_components.a,{href:`#registration-links`,children:`invitation link`}),`.`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`A ticket priced 0 is not the same as a members-only ticket priced 0. Price decides whether Stripe is\ninvolved; `,_jsx(_components.strong,{children:`Who can buy it`}),` decides who can select it. You can combine them freely.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`add-ons`,children:`Add-ons`}),`\n`,_jsxs(_components.p,{children:[`Add-ons are extras sold alongside a ticket: a meal, a workshop track, parking, a partner place. They\nlive in the `,_jsx(_components.strong,{children:`Add-ons`}),` section of the Tickets page, and you need at least one ticket type first\n(`,_jsx(_components.strong,{children:`+ Add add-on`}),` stays greyed out until then).`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Name`})}),_jsx(_components.td,{children:`What buyers see, for example “Partner seat”.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Price`})}),_jsx(_components.td,{children:`Cost per unit. Set to 0 for a free extra. Locked after the first sale.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Description`})}),_jsx(_components.td,{children:`Optional detail line under the name.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Offered with`})}),_jsx(_components.td,{children:`Tick the ticket types the add-on appears under. At least one is required. Locked after the first sale.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Max per ticket`})}),_jsx(_components.td,{children:`How many of this add-on one ticket can carry. Empty means unlimited.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Total available`})}),_jsxs(_components.td,{children:[`Overall stock across all buyers. Empty means unlimited. When it runs out the add-on shows `,_jsx(_components.strong,{children:`Sold Out`}),`. Cannot go below the number already sold.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Adds a separate attendee`})}),_jsx(_components.td,{children:`The buyer fills in a name for each one, and each gets its own badge and check-in. Use it for partner or child seats, not for meals or parking. Locked after the first sale.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Each add-on row shows what it is offered with, a “max N per ticket” note, an `,_jsx(_components.strong,{children:`Adds an attendee`}),` tag\nwhere it applies, and “N sold” (or “N / M sold” when there is a total).`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`An add-on that has been sold cannot be deleted: the menu shows `,_jsx(_components.strong,{children:`Delete (N sold)`}),` greyed out. Use\n`,_jsx(_components.strong,{children:`Archive`}),` instead, which hides it from checkout while keeping the sales history, and `,_jsx(_components.strong,{children:`Restore`}),` to\nbring it back.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`vouchers`,children:`Vouchers`}),`\n`,_jsxs(_components.p,{children:[`Vouchers are per-event discount codes, listed under `,_jsx(_components.strong,{children:`Vouchers`}),` on the Tickets page with `,_jsx(_components.strong,{children:`+ Add\nvoucher`}),`. Buyers enter the code at checkout under `,_jsx(_components.strong,{children:`Have a voucher code?`}),`. The same panel also holds\n`,_jsx(_components.a,{href:`#registration-links`,children:`registration links`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Voucher code`})}),_jsxs(_components.td,{children:[`Letters, numbers and dashes, up to 50 characters. Unique within the event and matched in upper case. `,_jsx(_components.strong,{children:`Generate`}),` suggests one.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Active`})}),_jsx(_components.td,{children:`Turns the code off without deleting it. Inactive codes are refused at checkout, so you can prepare one and switch it on later.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Discount`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Percentage`}),` (a share of each ticket) or `,_jsx(_components.strong,{children:`Fixed amount`}),` (a sum off the order total).`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Percent off`}),` / `,_jsx(_components.strong,{children:`Amount off`})]}),_jsx(_components.td,{children:`The percentage (1 to 100) or the fixed amount, in your organisation currency.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Never more than`})}),_jsx(_components.td,{children:`Percentage vouchers only. A ceiling on the money taken off one order.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Tickets per order`})}),_jsx(_components.td,{children:`Percentage vouchers only. Discount only the first N tickets in an order.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Max orders`})}),_jsx(_components.td,{children:`Number of separate checkouts that may use the code. Each checkout counts once whatever the ticket quantity. Empty means unlimited, and it cannot be set below the uses already taken.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Valid`})}),_jsx(_components.td,{children:`Optional start and end date.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Applies to`})}),_jsx(_components.td,{children:`Tick ticket types to limit the code to them; add-ons are then left out. Tick nothing and it applies to every ticket type, with add-ons in the same order included.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The editor shows an `,_jsx(_components.strong,{children:`Example order`}),` so you can see the effect before saving. Each voucher row shows\nits rule, what it applies to, its dates and “N / M orders used”. The status is `,_jsx(_components.strong,{children:`Active`}),`, `,_jsx(_components.strong,{children:`Starts\n(date)`}),`, `,_jsx(_components.strong,{children:`Expired`}),`, `,_jsx(_components.strong,{children:`All uses taken`}),` or `,_jsx(_components.strong,{children:`Inactive`}),`, and vouchers that can still be used are\nlisted first. The `,_jsx(_components.code,{children:`...`}),` menu offers `,_jsx(_components.strong,{children:`Edit voucher`}),`, `,_jsx(_components.strong,{children:`Copy code`}),`, `,_jsx(_components.strong,{children:`Deactivate`}),` or `,_jsx(_components.strong,{children:`Activate`}),`,\nand `,_jsx(_components.strong,{children:`Delete`}),`. A voucher that takes the order to zero completes without a card payment. Deleting a\nvoucher does not change discounts already applied to past orders, and a refund does not give a use\nback.`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-the-discount-is-worked-out`,children:`How the discount is worked out`}),`\n`,_jsxs(_components.p,{children:[`A fixed-amount voucher comes off the order total once, not off each ticket. A percentage voucher is\nthe one that surprises people, because the percentage is applied to the order’s `,_jsx(_components.strong,{children:`average`}),` ticket\nprice, multiplied by the number of tickets it is allowed to cover.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example.`}),` An order of two Regular tickets at 80 and one Student ticket at 25 totals 185.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Voucher`}),_jsx(_components.th,{children:`Discount taken`}),_jsx(_components.th,{children:`Why`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`20%, no other limits`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`37.00`}),_jsx(_components.td,{children:`20% of the whole 185.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`20%, `,_jsx(_components.strong,{children:`Tickets per order`}),` 2`]}),_jsx(_components.td,{\"data-numeric\":`true`,children:`24.67`}),_jsx(_components.td,{children:`The average ticket is 61.67; two of them is 123.34; 20% of that. Not 20% of the two dearest tickets.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`20%, `,_jsx(_components.strong,{children:`Tickets per order`}),` 2, `,_jsx(_components.strong,{children:`Never more than`}),` 20`]}),_jsx(_components.td,{\"data-numeric\":`true`,children:`20.00`}),_jsx(_components.td,{children:`The cap wins.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`20%, `,_jsx(_components.strong,{children:`Applies to`}),` Regular only`]}),_jsx(_components.td,{\"data-numeric\":`true`,children:`32.00`}),_jsx(_components.td,{children:`Only the two Regular lines count, so the average is 80.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`If you want a percentage to apply to specific tickets, tick them under `,_jsx(_components.strong,{children:`Applies to`}),`. `,_jsx(_components.strong,{children:`Tickets per\norder`}),` limits how many tickets are covered but does not choose which ones.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`registration-links`,children:`Registration links`}),`\n`,_jsxs(_components.p,{children:[`Two single-use links sit beside vouchers on the Tickets page. Both are for one named person and both\nneed a `,_jsx(_components.strong,{children:`public`}),` event, because the link opens the public event page; on a members-only event the\nbuttons are disabled with a note saying so. Creating them needs the organisation-wide event permission.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Link`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`+ Invitation`})}),_jsx(_components.td,{children:`Registers one person on the ticket you choose, free of charge.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`+ Ticket link`})}),_jsx(_components.td,{children:`Lets one person buy the chosen ticket at its normal price, even outside its sales window.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`In both cases the registration form still has to be filled in. Pick the `,_jsx(_components.strong,{children:`Ticket`}),` and a `,_jsx(_components.strong,{children:`Valid to`}),`\ndate (the link stops working after it; it must be in the future), then `,_jsx(_components.strong,{children:`Create link`}),`. The editor then\nshows the `,_jsx(_components.strong,{children:`Link`}),` with a `,_jsx(_components.strong,{children:`Copy link`}),` button; the row menu offers `,_jsx(_components.strong,{children:`Copy link`}),` too. Send that link\nto the person.`]}),`\n`,_jsxs(_components.p,{children:[`A link works once. After someone registers through it the row reads `,_jsx(_components.strong,{children:`Used`}),`, and the editor lists\nunder `,_jsx(_components.strong,{children:`Registrations`}),` who used it, when, and whether that registration was later canceled or is\nawaiting payment. Switch `,_jsx(_components.strong,{children:`Active`}),` off to revoke an unused link (the row reads `,_jsx(_components.strong,{children:`Revoked`}),`), or\n`,_jsx(_components.strong,{children:`Delete`}),` it, which stops it working immediately. An expired link reads `,_jsx(_components.strong,{children:`Expired`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`seat-holds`,children:`Seat holds`}),`\n`,_jsx(_components.p,{children:`When a buyer starts selecting tickets, the seats are held so two people cannot buy the last one at\nthe same time.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A hold lasts `,_jsx(_components.strong,{children:`8 minutes`}),`, reset to a fresh 8 minutes when the buyer adds more of the same ticket.`]}),`\n`,_jsxs(_components.li,{children:[`One browser session can hold at most `,_jsx(_components.strong,{children:`10 tickets`}),` per event, counted across ticket types. Beyond\nthat the buyer is told how many more they can hold.`]}),`\n`,_jsx(_components.li,{children:`Holds are released when the buyer leaves the page, when the purchase completes, or by a\nscheduled cleanup once they expire.`}),`\n`,_jsx(_components.li,{children:`Held seats are unavailable to everyone else, so a ticket can read “Sold Out” while carts are open\nand free up again when they expire.`}),`\n`,_jsx(_components.li,{children:`Members-only tickets are not held in a cart: their seats are only taken when someone pays, so two\nmembers can reach checkout for the last seat and only the first to pay gets it.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`what-a-buyer-sees`,children:`What a buyer sees`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-checkout.png?fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=ce85f19ba9fac4114f83d4154339243a`,alt:`Event checkout with the registration form on the left (email, full name) and an order summary on the right showing the ticket, total, the newsletter and company invoice options, and Pay with Card`,style:{width:`100%`,borderRadius:`8px`,border:`1px solid var(--border-color)`,marginBottom:`1rem`},\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`2160`,height:`2160`,\"data-path\":`images/platform/events/event-checkout.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-checkout.png?w=280\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=9441411220dfbdf21631e157658e4718 280w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-checkout.png?w=560\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=7c3acb81bf5a1499e627efcb6770a9bc 560w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-checkout.png?w=840\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=4b670f7a5386e4ad6fbf3ca7acf09a52 840w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-checkout.png?w=1100\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=288e0087669a6fe3f9849988f4fc5911 1100w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-checkout.png?w=1650\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=cc385b409a85f2bc5cfcc5b4d613d405 1650w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-checkout.png?w=2500\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=d81d37e814cd60ddddfac571ad4cc668 2500w`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Pick tickets`,children:_jsxs(_components.p,{children:[`Listed cheapest first. Sold out tickets are shown but not selectable; tickets whose window has not\nopened appear under `,_jsx(_components.strong,{children:`Coming soon`}),` and ended ones under `,_jsx(_components.strong,{children:`Past offers`}),`. A signed-in member sees any\nmembers-only tickets that match them, some marked `,_jsx(_components.strong,{children:`just for you`}),`.`]})}),_jsx(Step,{title:`Fill in the registration form`,children:_jsxs(_components.p,{children:[`One card per ticket, collecting every attendee’s details; logged-in members arrive prefilled. See\n`,_jsx(_components.a,{href:`/platform/events/registration-forms`,children:`Registration Forms`}),`.`]})}),_jsx(Step,{title:`Add extras and a voucher`,children:_jsxs(_components.p,{children:[`Add-ons appear under `,_jsx(_components.strong,{children:`Extras`}),` in the order summary. A voucher code can be applied and removed\nbefore paying.`]})}),_jsx(Step,{title:`Consent and pay`,children:_jsx(_components.p,{children:`The buyer confirms your GDPR policy and terms, then pays inline through Stripe without leaving\nthe page.`})}),_jsx(Step,{title:`Get the tickets`,children:_jsx(_components.p,{children:`A paid order sends the buyer one confirmation email with every ticket attached as its own PDF,\nincluding tickets created by add-ons. On a free order each attendee registered under a different\nemail address gets their own confirmation too.`})})]}),`\n`,_jsxs(_components.p,{children:[`With the `,_jsx(_components.strong,{children:`Invoices`}),` module on, the checkout also offers `,_jsx(_components.strong,{children:`I want company invoice`}),`. Ticking it\nadds a billing step for company details, after which the buyer can still pay by card or choose\n`,_jsx(_components.strong,{children:`Pay via bank transfer`}),`, which issues an invoice and confirms the tickets once payment arrives.\nHide the option with `,_jsx(_components.strong,{children:`Settings → Events → Disable Company Invoice in Checkout`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`orders`,children:`Orders`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Payments`}),` entry in the event sidebar opens the order list, headed `,_jsx(_components.strong,{children:`Orders`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-payments.png?fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=77193b21a5fb0e47c6cef08b1ee011e3`,alt:`Event orders table with order id, status, buyer name, amount and created date columns, and a Generate Invoice action per paid order`,style:{width:`100%`,borderRadius:`8px`,border:`1px solid var(--border-color)`,marginBottom:`1rem`},\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`2160`,height:`2160`,\"data-path\":`images/platform/events/event-payments.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-payments.png?w=280\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=93c57d05b478bfe71b4e9e727d699daf 280w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-payments.png?w=560\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=d45f5c68c3a5eec4ee5d48556d64e482 560w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-payments.png?w=840\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=6ff8420e2b3ac2536a9fa2679651c9c9 840w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-payments.png?w=1100\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=7d7b71740cb650cbaa104b385a2d6d6e 1100w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-payments.png?w=1650\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=950be969ef71ac1b200f8fc6162d1622 1650w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-payments.png?w=2500\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=7e8afd7579e3379f24db6a7ce6250fd5 2500w`}),`\n`,_jsxs(_components.p,{children:[`Each row shows the order id, status, the buyer (member or contact), amount, the voucher code if one\nwas used, and the payment date. Filter by name, email, or status (`,_jsx(_components.strong,{children:`open`}),`, `,_jsx(_components.strong,{children:`paid`}),`, `,_jsx(_components.strong,{children:`refunded`}),`);\nrows can also read `,_jsx(_components.strong,{children:`on-hold`}),` or `,_jsx(_components.strong,{children:`canceled`}),`. Where a Stripe account is connected, an arrow link\nopens the payment or invoice in the Stripe dashboard.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Ticket type`}),` column stays empty for event ticket orders. It reads a product `,_jsx(_components.em,{children:`option`}),`, which is\na fee-product concept; event ticket purchases record the ticket tier as the product `,_jsx(_components.em,{children:`price`}),` instead.\nTo see which tier someone bought, use the Ticket column on\n`,_jsx(_components.a,{href:`/platform/events/attendance`,children:`the participant list`}),` or the Revenue by ticket table in\n`,_jsx(_components.a,{href:`/platform/events/analytics`,children:`Analytics`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Refund`}),` appears on paid orders that were paid by card, for finance admins. It\nrefunds the full amount, with no partial refund in the interface, and on success cancels every\nattendee record created by that order, returns their seats to the ticket type, and returns any add-on\nquantities to stock. Voucher usage is not returned. An order with no Stripe payment behind it (recorded outside Orgo)\nshows `,_jsx(_components.strong,{children:`Mark as refunded`}),` instead: it sends no money back, so confirm you have already refunded the\nbuyer elsewhere. Orders paid by bank transfer have neither button: handle those in Stripe or through\n`,_jsx(_components.a,{href:`/platform/fees/cancelling-invoices`,children:`invoice cancellation`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`With the Invoices module on, an organisation admin gets a `,_jsx(_components.strong,{children:`Generate Invoice`}),` button on paid orders\nthat have no invoice yet, and a `,_jsx(_components.strong,{children:`View Invoice`}),` link once one exists.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`tickets-and-check-in`,children:`Tickets and check-in`}),`\n`,_jsx(_components.p,{children:`Every attendee record carries a random token that becomes their QR code, delivered in the\nconfirmation email and shown on the event page. Scanning it at the door opens the check-in screen\nwith the attendee’s name, ticket type, payment status and add-ons.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-qr-ticket.png?fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=e2bab1caea8e930c2572008128d83067`,alt:`Attendee view of a confirmed registration on the public event page, with the Registration confirmed badge and the QR code to show at the entrance`,style:{width:`100%`,borderRadius:`8px`,border:`1px solid var(--border-color)`,marginBottom:`1rem`},\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`2160`,height:`2160`,\"data-path\":`images/platform/events/event-qr-ticket.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-qr-ticket.png?w=280\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=5d462da0a0cc55130eccf89cc30c8e4f 280w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-qr-ticket.png?w=560\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=84cede4130df91507892e8cb0459c22a 560w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-qr-ticket.png?w=840\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=3f0bdcfddf7068b5b7dc80533285a8ca 840w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-qr-ticket.png?w=1100\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=5ad92fe07066f0c2c2c6252219d23ae6 1100w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-qr-ticket.png?w=1650\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=b9fd104d83728cd4ecbd099b284b7202 1650w, https://mintcdn.com/orgo-dc7abe63/axp5c55eLuwTlqp3/images/platform/events/event-qr-ticket.png?w=2500\u0026fit=max\u0026auto=format\u0026n=axp5c55eLuwTlqp3\u0026q=85\u0026s=ac12a864d489d1c9c2a2e5fe6d944b62 2500w`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Scanning requires organisation-wide HR or event permission. A chapter-level event admin cannot\nscan. The full flow, walk-ins and manual check-in are covered in\n`,_jsx(_components.a,{href:`/platform/events/check-in`,children:`Check-in`}),`.`]})}),`\n`,_jsx(_components.p,{children:`A member can download their own ticket as a PDF from the internal event page, and an administrator\ncan download someone else’s only with HR permission over that person. The public event page above has no\ndownload button: it renders the status badge and the QR code only.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`common-scenarios`,children:`Common scenarios`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`I need a discount code rather than a separate cheap ticket`,id:`i-need-a-discount-code-rather-than-a-separate-cheap-ticket`,children:_jsxs(_components.p,{children:[`Use a `,_jsx(_components.a,{href:`#vouchers`,children:`voucher`}),`. It is the only discount mechanism in Orgo: there is no automatic\ngroup or bulk pricing.`]})}),_jsx(Accordion,{title:`Someone bought a ticket but cannot attend, can they transfer it?`,id:`someone-bought-a-ticket-but-cannot-attend-can-they-transfer-it`,children:_jsx(_components.p,{children:`There is no self-service transfer. An administrator cancels and refunds the original\nregistration, then invites the replacement as a complimentary attendee or has them buy a ticket.`})}),_jsx(Accordion,{title:`I set a ticket price wrong and it is already saved`,id:`i-set-a-ticket-price-wrong-and-it-is-already-saved`,children:_jsxs(_components.p,{children:[`Prices are locked once a ticket has sold, because payments reference them. If nothing has sold, edit\nthe price directly. Otherwise add a corrected ticket and `,_jsx(_components.strong,{children:`Archive`}),` the wrong one, which keeps its\nhistory.`]})}),_jsx(Accordion,{title:`A ticket says Sold Out but I know seats are free`,id:`a-ticket-says-sold-out-but-i-know-seats-are-free`,children:_jsxs(_components.p,{children:[`Seats in other people’s carts count as taken. Wait for the 8 minute hold to clear before raising\n`,_jsx(_components.strong,{children:`Seats`}),`.`]})}),_jsx(Accordion,{title:`A member cannot select the members-only ticket`,id:`a-member-cannot-select-the-members-only-ticket`,children:_jsxs(_components.p,{children:[`Check that they are signed in with an active account in your organisation. For a ticket limited to\n`,_jsx(_components.strong,{children:`Specific members`}),`, check that their membership is active and on a ticked level, or that they are\nin a ticked chapter, then whether they already hold another membership-restricted ticket for this\nevent: only one is allowed.`]})}),_jsx(Accordion,{title:`I want to stop sales without deleting anything`,id:`i-want-to-stop-sales-without-deleting-anything`,children:_jsxs(_components.p,{children:[`Open the event and choose `,_jsx(_components.strong,{children:`Close registrations`}),` from the `,_jsx(_components.strong,{children:`Actions`}),` menu in the header (it\nbecomes `,_jsx(_components.strong,{children:`Reopen registrations`}),` afterwards). No new registrations or ticket purchases are\naccepted, and existing attendees keep their tickets.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Orgo will not let me delete a ticket type`,id:`orgo-will-not-let-me-delete-a-ticket-type`,children:_jsxs(_components.p,{children:[`Deletion is blocked as soon as the ticket type has history: the menu shows `,_jsx(_components.strong,{children:`Delete (N sold)`}),`\ngreyed out, and the server also refuses when payments, attendees or a ticket bundle point at it.\nThe records that point at it have to keep pointing at something. `,_jsx(_components.strong,{children:`Archive`}),` the ticket instead: it\nstops selling, keeps its history, and can be restored later.`]})}),_jsx(Accordion,{title:`Saving a ticket is rejected because of its dates`,id:`saving-a-ticket-is-rejected-because-of-its-dates`,children:_jsxs(_components.p,{children:[`The sales window has to sit inside the event’s own lifetime: `,_jsx(_components.strong,{children:`On sale from`}),` cannot be earlier\nthan the date the event was created, and `,_jsx(_components.strong,{children:`On sale until`}),` cannot be later than the event’s end\n(its start, if no end is set). The end must also come after the start.`]})}),_jsx(Accordion,{title:`A buyer is told they cannot hold more than 10 tickets`,id:`a-buyer-is-told-they-cannot-hold-more-than-10-tickets`,children:_jsx(_components.p,{children:`One browser session can hold at most 10 tickets per event across all ticket types, and the\nmessage tells the buyer how many more they may take. This is a cap on a single cart, not on the\nevent: they complete that checkout and start another one for the rest.`})}),_jsx(Accordion,{title:`A voucher code is rejected as invalid`,id:`a-voucher-code-is-rejected-as-invalid`,children:_jsxs(_components.p,{children:[`“Invalid voucher code” covers three cases at once: the code does not exist on `,_jsx(_components.strong,{children:`this`}),` event\n(vouchers are per event, so a code created on last year’s event will not carry over), it is\nswitched off with `,_jsx(_components.strong,{children:`Active`}),`, or it is outside its `,_jsx(_components.strong,{children:`Valid`}),` dates. A code that has used up\n`,_jsx(_components.strong,{children:`Max orders`}),` says so instead (“reached its usage limit”). Codes are stored and matched in upper\ncase, so capitalisation in the email you sent does not matter.`]})}),_jsx(Accordion,{title:`The voucher took off less than the buyer expected`,id:`the-voucher-took-off-less-than-the-buyer-expected`,children:_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`#how-the-discount-is-worked-out`,children:`How the discount is worked out`}),`. The usual causes are\n`,_jsx(_components.strong,{children:`Never more than`}),` capping the money, `,_jsx(_components.strong,{children:`Tickets per order`}),` limiting how many tickets the\npercentage covers, or the percentage landing on the order’s average ticket price rather than on\nthe dearest tickets.`]})}),_jsx(Accordion,{title:`Checkout fails with a message about the name`,id:`checkout-fails-with-a-message-about-the-name`,children:_jsx(_components.p,{children:`“Name can only contain letters, spaces, hyphens, apostrophes and periods.” Something that is not\na name went into a name box, most often a phone number. Orgo checks every buyer, attendee and\nadd-on attendee name before the card is charged rather than after, so the money is never taken.`})}),_jsx(Accordion,{title:`Checkout fails because the tickets use different currencies`,id:`checkout-fails-because-the-tickets-use-different-currencies`,children:_jsx(_components.p,{children:`One order cannot mix currencies. This only happens when ticket types on the same event were\nsaved with different currencies; rebuild the odd one out in the event’s currency.`})}),_jsx(Accordion,{title:`An add-on cannot be added to an order`,id:`an-add-on-cannot-be-added-to-an-order`,children:_jsxs(_components.p,{children:[`Three separate limits produce three different messages: `,_jsx(_components.strong,{children:`Max per ticket`}),` (“Maximum N of X per\nticket allowed”), `,_jsx(_components.strong,{children:`Total available`}),` (“Only N X available”), and an archived add-on (“no longer\navailable”). Inventory counts sales across all buyers, so it can run out mid-event.`]})}),_jsx(Accordion,{title:`An attendee lost the confirmation email, can I resend it?`,id:`an-attendee-lost-the-confirmation-email-can-i-resend-it`,children:_jsx(_components.p,{children:`There is no resend button. A signed-in member can open the event page and download their own\nticket as a PDF; an administrator with HR permission over that member can download the same PDF and\nforward it. The QR code is fixed when the attendee record is created and never regenerated, so a\nre-downloaded ticket scans exactly like the original, and an attendee who shows the QR from the\noriginal email is equally valid.`})}),_jsx(Accordion,{title:`The Tickets page and the public event page disagree about how many seats are left`,id:`the-tickets-page-and-the-public-event-page-disagree-about-how-many-seats-are-left`,children:_jsxs(_components.p,{children:[`They count differently, and both are right. The `,_jsx(_components.strong,{children:`Sold Out`}),` and `,_jsx(_components.strong,{children:`Only N left!`}),` tags on the\nadmin ticket list subtract only tickets already sold. The public page also subtracts seats\ncurrently held in other people’s carts, so it can warn buyers, or refuse them outright, while\nyour list still looks comfortable. The two converge once the open carts are paid for or their\n8 minute holds expire.`]})}),_jsx(Accordion,{title:`I refunded an order but the voucher still counts as used`,id:`i-refunded-an-order-but-the-voucher-still-counts-as-used`,children:_jsxs(_components.p,{children:[`Refunding returns seats and add-on stock but never a voucher use. On a limited-use code, raise\n`,_jsx(_components.strong,{children:`Max orders`}),` by the number of orders you refunded, otherwise the code retires early.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/platform/events/create-event`,children:`Create Event`}),` - the event form and its Access setting`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/platform/events/registration-forms`,children:`Registration Forms`}),` - what buyers are asked`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/platform/events/public-page`,children:`Public Event Pages`}),` - where tickets are sold`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/platform/events/check-in`,children:`Check-in`}),` - QR scanning and walk-ins`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/platform/fees/stripe-integration`,children:`Stripe Setup`}),` - connecting the payment account`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Event Ticketing","description":"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in","og:title":"Event Ticketing | Orgo","og:description":"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in","twitter:title":"Event Ticketing | Orgo","twitter:description":"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in","href":"/platform/events/ticketing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Turning ticketing on","slug":"turning-ticketing-on","depth":2,"children":[]},{"title":"Ticket type settings","slug":"ticket-type-settings","depth":2,"children":[{"title":"Archive and delete","slug":"archive-and-delete","depth":3,"children":[]},{"title":"Ticket status tags","slug":"ticket-status-tags","depth":3,"children":[]}]},{"title":"Member pricing","slug":"member-pricing","depth":2,"children":[]},{"title":"Common ticket structures","slug":"common-ticket-structures","depth":2,"children":[]},{"title":"Add-ons","slug":"add-ons","depth":2,"children":[]},{"title":"Vouchers","slug":"vouchers","depth":2,"children":[{"title":"How the discount is worked out","slug":"how-the-discount-is-worked-out","depth":3,"children":[]}]},{"title":"Registration links","slug":"registration-links","depth":2,"children":[]},{"title":"Seat holds","slug":"seat-holds","depth":2,"children":[]},{"title":"What a buyer sees","slug":"what-a-buyer-sees","depth":2,"children":[]},{"title":"Orders","slug":"orders","depth":2,"children":[]},{"title":"Tickets and check-in","slug":"tickets-and-check-in","depth":2,"children":[]},{"title":"Common scenarios","slug":"common-scenarios","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"orgo-dc7abe63","siteName":"Orgo Documentation","title":"Event Ticketing | Orgo","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-11T20:47:23.670Z","originalFileLocation":"platform/events/ticketing.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in\">\u003cmeta data-mint-head name=\"application-name\" content=\"Orgo Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Event Ticketing | Orgo\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Orgo Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://orgo.space/docs/platform/events/ticketing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://orgo-dc7abe63.mintlify.site/docs/_mintlify/api/og/v2?division=Events\u0026amp;title=Event+Ticketing\u0026amp;description=Sell+tickets+with+multiple+price+tiers%2C+member+pricing%2C+add-ons%2C+vouchers+and+QR+check-in\u0026amp;theme=5de34bab2c106b7e5e539a7b\u0026amp;signature=fe3beac9bfeb20b9c2d8627d24229b62a819913022baa06f461c53f27bbfc51b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Event Ticketing | Orgo\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://orgo-dc7abe63.mintlify.site/docs/_mintlify/api/og/v2?division=Events\u0026amp;title=Event+Ticketing\u0026amp;description=Sell+tickets+with+multiple+price+tiers%2C+member+pricing%2C+add-ons%2C+vouchers+and+QR+check-in\u0026amp;theme=5de34bab2c106b7e5e539a7b\u0026amp;signature=fe3beac9bfeb20b9c2d8627d24229b62a819913022baa06f461c53f27bbfc51b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/orgo-dc7abe63/8V1Y5PxooYj41P5E/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Orgo Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://orgo.space/docs/platform/events/ticketing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/platform/events/ticketing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://orgo.space/#organization\",\"name\":\"Orgo Documentation\",\"url\":\"https://orgo.space\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/orgo-dc7abe63/BNSJo8TfEHWYUUsw/images/orgo-logo-transparent.png?fit=max\u0026auto=format\u0026n=BNSJo8TfEHWYUUsw\u0026q=85\u0026s=b68efcea74a9c92be763019ff7faf5ff\"}},{\"@type\":\"WebSite\",\"@id\":\"https://orgo.space/docs#website\",\"name\":\"Orgo Documentation\",\"url\":\"https://orgo.space/docs\",\"publisher\":{\"@id\":\"https://orgo.space/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://orgo.space/docs/platform/events/ticketing#webpage\",\"url\":\"https://orgo.space/docs/platform/events/ticketing\",\"name\":\"Event Ticketing\",\"description\":\"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in\",\"dateModified\":\"2026-11-11T20:47:23.670Z\",\"isPartOf\":{\"@id\":\"https://orgo.space/docs#website\"},\"breadcrumb\":{\"@id\":\"https://orgo.space/docs/platform/events/ticketing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://orgo.space/docs/platform/events/ticketing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Events\",\"item\":\"https://orgo.space/docs/platform/events\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Event Ticketing\",\"item\":\"https://orgo.space/docs/platform/events/ticketing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://orgo.space/docs/platform/events/ticketing#article\",\"headline\":\"Event Ticketing\",\"name\":\"Event Ticketing\",\"description\":\"Sell tickets with multiple price tiers, member pricing, add-ons, vouchers and QR check-in\",\"url\":\"https://orgo.space/docs/platform/events/ticketing\",\"mainEntityOfPage\":{\"@id\":\"https://orgo.space/docs/platform/events/ticketing#webpage\"},\"dateModified\":\"2026-11-11T20:47:23.670Z\",\"publisher\":{\"@id\":\"https://orgo.space/#organization\"},\"isPartOf\":{\"@id\":\"https://orgo.space/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Orgo Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Orgo Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/platform/events/ticketing.md","siteName":"Orgo Documentation","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Documentation","groups":[{"group":"Home","pages":[{"title":"Welcome to Orgo","href":"/platform"}]},{"group":"Setup Templates","pages":[{"title":"Setup Templates","href":"/platform/templates/index"},{"title":"Orgo for federations and multi-tier organizations","href":"/platform/templates/federations"},{"title":"Orgo for political parties","href":"/platform/templates/political-party"},{"title":"Orgo for fundraising","href":"/platform/templates/fundraising"},{"title":"Orgo for member communication","href":"/platform/templates/communication"},{"title":"Orgo for scouting and youth organizations","href":"/platform/templates/scouting"}]},{"group":"Organization","pages":[{"title":"Organization Settings","href":"/platform/organisation/index"},{"title":"Organization Info","href":"/platform/organisation/organisation-info"},{"title":"Branding","href":"/platform/organisation/branding"},{"title":"Custom Domain","href":"/platform/custom-domain"},{"title":"Website Builder","href":"/platform/organisation/website-builder"},{"title":"Modules","href":"/platform/organisation/modules"},{"title":"Usage \u0026 Billing","href":"/platform/usage-billing"},{"title":"Activity Log","href":"/platform/logs"},{"title":"Insights \u0026 Ask Orgo","href":"/platform/insights"},{"title":"Reports","href":"/platform/reports"}]},{"group":"Users \u0026 Profiles","pages":[{"title":"Users \u0026 Profiles","href":"/platform/users/index"},{"title":"Member Profile","href":"/platform/users/member-profile"},{"title":"Adding Members","href":"/platform/users/adding-members"},{"title":"Registration Form","href":"/platform/users/registration-form"},{"title":"Profile Fields","href":"/platform/users/profile-fields"},{"title":"Profile Activity \u0026 Notes","href":"/platform/users/profile-activity"},{"title":"User Types \u0026 Roles","href":"/platform/users/user-types"},{"title":"Custom Fields","href":"/platform/users/custom-fields"},{"title":"Lists \u0026 Segments","href":"/platform/users/lists"},{"title":"Merging Duplicates","href":"/platform/users/merging-duplicates"},{"title":"Permissions","href":"/platform/permissions"},{"title":"Assigning Permissions","href":"/platform/permissions-assigning"},{"title":"Member Invitations","href":"/platform/users/invitations"},{"title":"Family Members","href":"/platform/users/family-members"},{"title":"Companies","href":"/platform/users/companies"},{"title":"Adhesion (Membership Applications)","href":"/platform/users/adhesion"},{"title":"Referral Program","href":"/platform/users/referral"},{"title":"Waitlist","href":"/platform/users/waitlist"},{"title":"User Statuses","href":"/platform/users/statuses"},{"title":"Troubleshooting Member Access","href":"/platform/users/troubleshooting-access"},{"title":"Privacy Settings","href":"/platform/users/privacy-settings"},{"title":"Professional Network","href":"/platform/professional-network"},{"title":"Identity Validation","href":"/platform/identity-validation"},{"title":"Resignation","href":"/platform/users/resignation"},{"title":"Deletion of Account","href":"/platform/users/deletion-of-account"}]},{"group":"Contacts","pages":[{"title":"Contacts","href":"/platform/contacts/index"},{"title":"The Contact Record","href":"/platform/contacts/record"},{"title":"Where contacts come from","href":"/platform/contacts/sources"},{"title":"Contacts and Money","href":"/platform/contacts/payments"},{"title":"Contacts and the newsletter","href":"/platform/contacts/newsletter"},{"title":"Contacts at Events","href":"/platform/contacts/events"},{"title":"Turning a Contact into a Member","href":"/platform/contacts/becoming-a-member"},{"title":"Contact Permissions \u0026 Data Protection","href":"/platform/contacts/permissions"}]},{"group":"Groups","pages":[{"title":"Groups \u0026 Teams","href":"/platform/groups/index"},{"title":"Main Group","href":"/platform/groups/main-group"},{"title":"Local Centers","href":"/platform/groups/local-groups"},{"title":"Units","href":"/platform/groups/units"},{"title":"Member Transfers","href":"/platform/groups/transfers"},{"title":"Role Groups","href":"/platform/groups/role-groups"},{"title":"Private Groups","href":"/platform/groups/private-groups"}]},{"group":"Communication","pages":[{"title":"Discussions","href":"/platform/discussion/index"},{"title":"Discussion Namespaces","href":"/platform/discussion/discussion-namespaces"},{"title":"Discussion Moderation","href":"/platform/discussion/moderation"},{"title":"Blocking Members","href":"/platform/discussion/blocking-members"},{"title":"Newsletter","href":"/platform/newsletter"},{"title":"Newsletter builder","href":"/platform/newsletter-builder"},{"title":"Newsletter signup widgets","href":"/platform/newsletter-widgets"},{"title":"Communication analytics","href":"/platform/communication-analytics"},{"title":"Notifications","href":"/platform/notifications"}]},{"group":"Emails","pages":[{"title":"Emails","href":"/platform/emails/index"},{"title":"System emails","href":"/platform/emails/system-emails"},{"title":"Email templates","href":"/platform/emails/email-templates"},{"title":"Email logs","href":"/platform/emails/email-log"},{"title":"Email lists","href":"/platform/emails/email-lists"}]},{"group":"Events","pages":[{"title":"Events","href":"/platform/events/index"},{"title":"Create Event","href":"/platform/events/create-event"},{"title":"Event Registration Forms","href":"/platform/events/registration-forms"},{"title":"Event Types and Statuses","href":"/platform/events/event-types"},{"title":"Event Templates","description":"Save an event setup once and start every new event from it, tickets and registration form included","href":"/platform/events/event-templates"},{"title":"Event Ticketing","href":"/platform/events/ticketing"},{"title":"Public Event Page","description":"The standalone event page anyone can open without an account, and exactly what it exposes","href":"/platform/events/public-page"},{"title":"Sharing Events","href":"/platform/events/sharing"},{"title":"Event Attendance","href":"/platform/events/attendance"},{"title":"Speakers and Trainers","href":"/platform/events/speakers-trainers"},{"title":"QR Check-in","href":"/platform/events/check-in"},{"title":"Event Analytics","href":"/platform/events/analytics"},{"title":"Event Reports","href":"/platform/events/event-report"},{"title":"Annual Event Report","href":"/platform/events/annual-report"},{"title":"Event App","href":"/platform/events/event-app"},{"title":"Event App Program, Feed and Votes","href":"/platform/events/event-app-feed"},{"title":"Event App Networking","href":"/platform/events/event-app-networking"}]},{"group":"Projects \u0026 Work","pages":[{"title":"Projects","href":"/platform/projects"},{"title":"Tasks","href":"/platform/tasks"},{"title":"Forms","href":"/platform/forms"},{"title":"Workflows","href":"/platform/workflows"}]},{"group":"Payments \u0026 Fees","pages":[{"title":"Products","href":"/platform/fees/products"},{"title":"Membership Fees","href":"/platform/fees/fees"},{"title":"Recording a Payment Made Outside Orgo","href":"/platform/fees/record-payment"},{"title":"Invoices","href":"/platform/fees/invoices"},{"title":"VAT \u0026 Registration Fees","href":"/platform/fees/vat"},{"title":"Cancelling \u0026 Correcting Invoices","href":"/platform/fees/cancelling-invoices"},{"title":"Renewals \u0026 Reminders","href":"/platform/fees/renewals"},{"title":"Stripe Integration","href":"/platform/fees/stripe-integration"},{"title":"Donations","href":"/platform/fees/donations"},{"title":"Donation Pages \u0026 Widgets","href":"/platform/fees/donation-pages"},{"title":"Chapter Fees","href":"/platform/local-group-fees/create-local-fees"},{"title":"Member Fees Table","href":"/platform/local-group-fees/member-fees"}]},{"group":"Governance","pages":[{"title":"Organizational Chart","href":"/platform/organisational-chart"},{"title":"Official Gazette","href":"/platform/official-gazette"},{"title":"E-Voting","href":"/platform/e-voting"}]},{"group":"Resources","pages":[{"title":"Files \u0026 Documents","href":"/platform/files"},{"title":"E-Document Templates and Signing","href":"/platform/contracts"},{"title":"E-Document Records and Legal Weight","href":"/platform/e-documents"},{"title":"Badges","href":"/platform/badges"},{"title":"Gamification","href":"/platform/gamification"},{"title":"Courses","href":"/platform/courses"}]},{"group":"Support","pages":[{"title":"Issues","href":"/platform/issues"},{"title":"Help Desk","href":"/platform/help-desk"},{"title":"Orgo Support","href":"/platform/orgo-support"}]},{"group":"Customization","pages":[{"title":"Customization","href":"/platform/customization/index"},{"title":"Languages","href":"/platform/customization/languages"},{"title":"Texts (label replacements)","href":"/platform/customization/labels"},{"title":"Menu Organizer","href":"/platform/customization/menu-organizer"},{"title":"Dashboard Builder","href":"/platform/customization/dashboard-organizer"},{"title":"Dashboard Welcome","href":"/platform/customization/dashboard-welcome"},{"title":"Data Import","href":"/platform/customization/import/index"},{"title":"Preparing your file","href":"/platform/customization/import/preparing-your-file"},{"title":"Mapping Columns","href":"/platform/customization/import/mapping-columns"},{"title":"Custom fields in an import","href":"/platform/customization/import/custom-fields"},{"title":"Linking Records","href":"/platform/customization/import/linking-records"},{"title":"Import Type Reference","href":"/platform/customization/import/reference"},{"title":"Mobile Apps","href":"/platform/mobile-apps"}]},{"group":"Developers","pages":[{"title":"Integrations","href":"/platform/integrations"},{"title":"Single Sign-On","href":"/platform/single-sign-on"},{"title":"API Access","href":"/platform/api"},{"title":"Webhooks","href":"/platform/webhooks"},{"title":"Orgo MCP","href":"/platform/mcp"},{"title":"OAuth Server","href":"/platform/oauth"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/concepts/authentication"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Event Ticketing | Orgo","buildId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","deploymentId":"dpl_6PxPD4Fj1JDU9BJxEHvfdUmxKThw","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-hIK1nklX.js","lightbox-handle-r17bVUz3.js"]}