Resell a ticket you can't use

List a ticket inside the price bounds, watch your pass suspend, and get paid in house credit.

Owned by Member · 12 steps · about 15 minutes

Why this exists

A resale on this platform is a transfer, not a refund and re-buy. The ticket row keeps its identity and simply changes owner; what gets destroyed and rebuilt is the door credential. This matters because the alternative — cancelling and re-selling — would return the seat to general inventory where anyone could take it, and the seller would lose the sale they had already agreed.

Built behaviour worth teaching explicitly: the ticket status enum has no "resold" value. While a ticket is listed its status is listed, and after settlement it goes back to issued under a new owner. If you are hunting for a resold ticket in the data, look at the settlement row, not at the ticket.

Listing suspends your pass — you cannot offer a seat for sale and also keep a working code for it. Delisting restores the very same pass and serial, because nothing was ever destroyed; only a sale destroys it.

Prices are bounded in basis points of face value, defaulting to a floor of 80% and a cap of 130%, and the face value is snapshotted at the moment you list. Bounds are the anti-scalping mechanism, and pinning face value at listing time means a later tier price change cannot retroactively make your live listing illegal.

You are paid in house credit, not cash. The venue takes a percentage fee and the event's host may take a royalty; the remainder lands in your earned balance, spendable on the platform immediately and cashable out to a bank only after a hold that runs to 24 hours past the event. And a correction to a common assumption: the venue fee is configured per event. There CORRECTED 2026-08-30: a VIP DOES pay a reduced resale fee. membership_tier_benefits.resale_fee_discount_bps is 5000 for vip_member in the shipped bootstrap — half the venue fee, taken off what the seller is charged — and the tier card says so to the member in as many words: “keeps 50% of the venue fee when reselling a ticket”. The discount is read at listing time and snapshotted onto the listing row, so a listing keeps the rate it was created under. What remains true is the sentence this one used to sit beside: the venue fee itself is configured per event.

Before you start

  • An issued ticket you own, not checked in, with a face value above zero.
  • An event whose exchange is active for that tier (it opens on sell-out, or an admin forces it on).
  • An admin session for the configuration steps.

Practise with

PersonaEmailPasswordNote
membernova@demo.club nova-pass-123owns tickets on the demo event and already has one live listing
adminadmin@club.test admin123sets the bounds, the fee and the host royalty
door_staffdoor@club.test door123demonstrates what a listed ticket does at the door

Steps 1–5 — Member

their manual →
  1. 1
    Find the ticket you cannot use.
    /my/tickets payments
    Expected result Your upcoming tickets with event and tier.
    Watch out for A comp ticket cannot be sold. Anything issued through the guest list has a zero face value and is rejected with a specific error — comps are a gift, not an asset.
  2. 2
    Open the sell page for that ticket and read the numbers before typing anything: face value, the allowed price range, and the fee preview.
    /resale/sell/{ticket_id} resale
    Expected result A floor and a cap in real money, plus what you would net at the price you type.
    Watch out for If the page says the tier's exchange is not active, no price will help. The exchange opens per tier when the tier sells out, or when an admin forces it on.
  3. 3
    List it. Set your asking price inside the bounds and submit.
    /resale/sell/{ticket_id} POST resale
    Expected result A live listing, your ticket flipped to listed, and your pass suspended in the same transaction.
    Watch out for A price outside the range is rejected with the exact allowed range in the message. The bounds come from face value, not from what you paid — if you bought on the exchange above face, the floor is still 80% of face.
  4. 4
    Note the API behind the form, which is what a mobile client would use.
    /api/resale/listings POST resale
    Expected result 201 with the listing including its floor and cap.
    Watch out for The refusals are specific and worth memorising: not your ticket, already listed, ticket not eligible (already checked in or not issued), comp not resalable, exchange locked, exchange not active.
  5. 5
    Open your wallet and look at the pass for that ticket.
    Expected result Suspended, labelled as listed for sale, with no live code.
    Watch out for Suspended is not revoked. This is reversible right up until someone buys.

Steps 6 — Door Staff

their manual →

Shows the consequence of listing: the seller's own credential now scans red.

  1. 6
    At the door, scan a credential for a ticket that is currently listed.
    /api/access/scan POST access
    Expected result Red, with the reason that the ticket is listed and suspended.
    Watch out for Read the reason to the guest verbatim. This one is almost always genuine forgetfulness — they listed it and came anyway — and the fix is for them to delist, not for you to override.

Steps 7–9 — Member

their manual →
  1. 7
    Track your listings and, once something sells, your net.
    Expected result Active listings with prices, and settled ones with the net you received.
    Watch out for Seller identity is hidden from buyers, but your own listings page is where you see the whole picture. A sale DOES mail you now, with your net — the page is where the detail lives, not where you find out.
  2. 8
    Change your mind and delist.
    /resale/listings/{listing_id}/delist POST resale
    Expected result The listing closes and the original pass and serial are restored, not replaced.
    Watch out for You cannot delist a listing that is mid-settlement — a buyer's payment in flight wins. And if the pass was revoked in the meantime (a refund, say), delisting refuses rather than pretending the credential still works.
  3. 9
    After a sale settles, look at where the money went.
    /my/credit ledger
    Expected result Your earned balance rises by the net after venue fee and any host royalty.
    Watch out for Earned credit is spendable on the platform straight away, but cashing out to a bank is held until roughly 24 hours after the event. That hold is what protects the venue if the show is cancelled and the sale has to be unwound.

Steps 10–12 — Admin

their manual →

Opens the exchange and owns the price bounds, the venue fee and the post-doors lock.

  1. 10
    As an admin, open the exchange configuration for the event and read every lever together.
    /admin/resale/{event_id} resale
    Expected result Floor and cap in basis points, venue fee, host royalty and recipient, the post-doors lock, per-tier modes and the live listings.
    Watch out for A cap below face value is legal configuration and it will astonish sellers. So will a 0% or a 100% venue fee — both are accepted.
  2. 11
    Change the bounds and confirm what it affects.
    /api/admin/resale/events/{event_id}/config PUT resale
    Expected result The new configuration, with the change written to the append-only activation log.
    Watch out for Config changes never touch existing listings. A listing created under the old bounds stays valid and purchasable — bounds are checked once, at creation.
  3. 12
    Preview the exact split for a price without creating anything.
    Expected result Venue fee, host royalty and seller net, summing exactly to the price.
    Watch out for Integer maths with the remainder going to the seller. The three parts always sum to the price — a database CHECK enforces it, so a rounding bug here is impossible to store.