Open or close the resale exchange
Activation, price floor and cap, the venue fee, the host royalty, and the post-doors lock.
Owned by Admin · 12 steps · about 22 minutes
Why this exists
The resale exchange exists so that a member who cannot come has somewhere legitimate to go, and so that the venue keeps control of the secondary market instead of watching it happen on somebody else's website. Every control on this page follows from that.
Activation is automatic by default. A tier's exchange opens when the tier sells out, and closes again if a refund puts inventory back. The logic is that a resale market only makes sense when the primary market is exhausted; otherwise you are competing with your own box office. You can override per tier — forced on, forced off, or automatic — and the override wins. An event-level enable switch sits above all of it.
Prices are bounded in basis points of face value, not in cents, so the bounds scale with the tier. The defaults allow a listing between eighty and one hundred and thirty percent of face. The floor is anti-dumping and the cap is anti-scalping. Bounds are enforced server-side at listing time, and a price outside them is a 422 whose message tells the seller the allowed range.
The splits are honest arithmetic. The venue fee and the optional host royalty come off the price, the seller gets the remainder, and the three parts must sum to the price to the cent — a database constraint, not a hope. The royalty only applies if a host is nominated to receive it, and it lands in that host's earned balance like any other credit.
The post-doors lock is the safety catch. At a configured number of minutes after doors, the exchange locks: active listings are cancelled, tickets and passes go back to their sellers, and no new listing can be made. The reason is the door — a ticket changing hands while people are queueing is how two people arrive holding the same seat. Null means never lock; zero means lock at doors exactly.
Before you start
- An admin session. Every exchange control is admin-only; a venue manager gets 403.
- An event that is on sale, sold out or in progress — a draft event has no exchange.
- A decision, before you start, about the fee, the royalty and who receives it.
Practise with
| Persona | Password | Note | |
|---|---|---|---|
| admin | admin@club.test | admin123 | the only persona that may configure or lock an exchange |
| member | nova@demo.club | nova-pass-123 | holds tickets and a live listing on the demo event |
| host_promoter | harper.host@demo.club | harper-pass-123 | the seeded royalty recipient |
| venue_manager | manager@club.test | manager123 | use it to see the boundary: the public exchange yes, the controls no |
Steps 1–4 — Admin
their manual →-
1Open the exchange index and see every non-draft event with its count of active listings.Expected result A list of events with live listing counts.Watch out for Draft events are absent because an exchange for an event nobody can buy into is meaningless.
-
2Open one event's exchange. Read the configuration, the per-tier activation states, the live listings with seller emails, the settlement totals and the activation log.Expected result Everything about this event's secondary market on one page.Watch out for The configuration is created lazily with defaults the first time you look. Seeing sensible values does not mean somebody chose them.
-
3Set the configuration: enabled or not, the floor and cap in basis points, the venue fee, the host royalty and the host who receives it, and the post-doors lock in minutes.Expected result The saved configuration, and an entry in the append-only activation log recording old and new values.Watch out for A cap below face value is legal and will astonish sellers. A royalty with no host nominated pays nobody — the royalty is only applied when a host is set. Invalid combinations are 422 CONFIG_INVALID.
-
4Before you announce anything, preview the arithmetic: give it an event and a price and it returns the venue fee, the host royalty and the seller net, plus the floor and cap for every tier.Expected result The exact split a sale at that price would produce.Watch out for The split uses integer division with the remainder going to the seller, so the parts always sum to the price exactly. Do not recompute it in a spreadsheet and expect the last cent to match a percentage.
Steps 5 — Member
their manual →They are the seller and the buyer: the bounds you set are the prices they are allowed to type.
-
5As a member, open the listing form for a ticket and see the bounds you configured, expressed in real money.Expected result The allowed price range for that ticket's tier.Watch out for A price outside the range is refused with 422 PRICE_OUT_OF_BOUNDS and the message names the allowed range. Listing also suspends the ticket's pass — you cannot sell a ticket and walk in on it.
Steps 6 — Admin
their manual →-
6Override activation for a single tier: automatic, forced on or forced off.Expected result The tier's mode is saved and the effective activation recomputed.Watch out for Forced on opens resale on a tier that has NOT sold out, so you are now competing with your own box office. That is sometimes the right call — make it knowingly.
Steps 7 — Host / Promoter
their manual →The royalty share you configure is paid to them, in earned house credit.
-
7As the nominated host, look at where your royalty lands when a resale settles.Expected result Your earned balance rises. It is spendable in the club immediately and cashable once the post-event hold expires.Watch out for The royalty percentage is snapshotted onto the listing when it is created. Changing the configuration afterwards does not re-price listings that already exist.
Steps 8–9 — Admin
their manual →-
8Engage the lock by hand when you need the exchange shut now rather than at the configured minute.Expected result Active listings are cancelled, tickets return to issued, suspended passes are restored to their sellers, and the lock is recorded in the activation log.Watch out for 409 ALREADY_LOCKED if it is already engaged. Sellers whose listings were cancelled by a lock get their ticket and their working pass back — they are not left with nothing.
-
9Clear the lock if you engaged it in error and the event has not started.Expected result The exchange reopens for new listings.Watch out for 409 NOT_LOCKED if it was not locked. Clearing the lock does NOT resurrect the listings it cancelled — sellers must list again.
Steps 10 — Venue Manager
their manual →They can see the exchange as customers do and cannot change any of it — teach the boundary rather than papering over it.
-
10As a venue manager, look at the exchange the way a customer does, and then try an admin route to feel where the line is.Expected result The public exchange page loads. Every configuration and lock route answers 403.Watch out for This is one of the clearest RBAC boundaries in the platform: managers run the room, admins set the market. Do not work around it by borrowing an admin session.
Steps 11–12 — Admin
their manual →-
11Read the settlement totals at the bottom of the exchange page: gross, venue fee, host royalty, seller net, completed and failed counts.Expected result The event's secondary market summarised.Watch out for Failed settlements are declined payments and insufficient credit, not errors you need to clean up. The listing simply did not sell to that buyer.
-
12Finish with the integrity check for the event before you walk away from a configuration change.Expected result A clean report, or named violations.Watch out for Read what it actually covers, because a clean report is narrower than it looks. It checks listings against settlements, the money split to the cent, the ledger transaction, that a transferred ticket is owned by its buyer, that the OLD pass was revoked and blacklisted, and that the buyer has a live pass. All of the pass checks are on the settlement side — after a sale. It does NOT check that an OPEN listing's pass is suspended, so a clean report is not evidence about the case you most care about: a listed seat whose pass still scans green is a seller who can walk in on a ticket that is about to be sold. Listing suspends the pass in the same transaction that lists the ticket, so that state should not arise — but this report is not what would tell you if it did.