Get paid: your host royalty and its settlement

How a host actually earns on this platform, when the money is releasable, and how to cash it out.

Owned by Host / Promoter · 13 steps · about 20 minutes

Why this exists

Be clear about what this platform does and does not pay a host, because the paperwork and the plumbing are not the same thing.

Primary ticket sales post to the venue's revenue account. There is no automatic revenue share that pays a host out of primary ticket sales — whatever door split your contract describes is settled by the venue as a commercial matter. What the platform genuinely pays you, automatically and on a ledger, is the resale royalty: a per-event share, in basis points, of every ticket resold on the exchange for your event.

When a resale settles, one balanced transaction splits the sale price three ways — a venue fee, your royalty, and the seller's net — and your share is credited to your earned balance. The split is integer arithmetic with the remainder going to the seller, and the parts always sum to the price; the database enforces it.

Earned balance is spendable inside the club immediately, but cashing it out is held: every credit creates an earning lot whose release time is the event's completion plus a hold (24 hours by default), so a promoter cannot cash out on a show that has not happened yet. Above a yearly threshold on secondary sales you must complete KYC before any external cash-out; the platform stores only a hash of your tax id and its last four digits.

Both of those hold, and here is what makes them hold — checked 2026-08-27 against the running code, because both are the kind of promise that is easy to write and hard to keep. The split is a table constraint, not a rule the code remembers to apply: resale_settlements carries CHECK (price_cents = venue_fee_cents + host_royalty_cents + seller_net_cents), so a row that does not add up cannot be written at all. The hold looks weaker than it is: the release time falls back to immediately available when an event has no end time, and main_end is a nullable column — which reads like a way to cash out early. It is not, and the reason is four links away: a royalty needs a settlement, a settlement needs a sold ticket, a ticket needs an event that reached sale, and an event cannot be announced or put on sale without main_end. Take that last requirement away and the hold quietly stops applying.

Built behaviour that the paperwork does not tell you: ticking "Request resale royalty" on your application, and the royalty rider it puts in your contract, do not switch the money on. The royalty rate and the recipient are fields on the event's resale configuration, and an admin has to set them. If nobody sets host_royalty_bps and the host user on that config, every resale on your event pays you nothing — and the contract will still say you have a royalty. Check it before the on-sale, not after.

Before you start

  • A resale royalty configured on your event by an admin (rate in basis points plus the recipient user).
  • At least one completed resale on that event.
  • For an external cash-out: matured earning lots, and KYC once you pass the yearly threshold.

Practise with

PersonaEmailPasswordNote
host_promoterharper.host@demo.club harper-pass-123the seeded royalty recipient on demo-event-0001 (5 percent, 500 basis points)
adminadmin@club.test admin123sets the royalty and is the only persona that can release a payout

Steps 1–2 — Admin

their manual →

Sets the royalty rate and recipient, and is the only one who can process a payout.

  1. 1
    Set the event's resale configuration: the host royalty in basis points and the host user who receives it, alongside the venue fee, the price floor and cap, and any post-doors lock.
    /api/admin/resale/events/{event_id}/config PUT resale
    Expected result The updated config, with the change written to the append-only activation log showing the old and new values.
    Watch out for This is the switch that actually pays the host. The application flag and the contract rider do not set it, and the recipient is a plain user id — it is not derived from the scoped host grant, so it can legitimately point at somebody who is not the event's host.
  2. 2
    Open the event's exchange console to confirm the configuration, the per-tier modes, the live listings and the settlements.
    /admin/resale/{event_id} resale
    Expected result Config, tier modes, lock state, listings with seller emails, settlements and the audit log.
    Watch out for Admin only. Neither the host nor the venue manager can open this page.

Steps 3–9 — Host / Promoter

their manual →
  1. 3
    As the host, look at your event's exchange the way a buyer does: which tiers are trading and at what prices.
    /events/{event_id}/exchange resale
    Expected result Active listings per tier with the price floor and cap derived from face value.
    Watch out for Seller identity is never exposed on the exchange, to you or to anyone. You see prices, not people.
  2. 4
    Open your wallet and read the balances separately: prepaid credit, earned balance, and how much of the earned balance is actually eligible for payout.
    /my/credit ledger
    Expected result Your royalties sitting in the earned balance, with the payout-eligible figure lower until the hold matures.
    Watch out for Earned and payout-eligible are two different numbers and people confuse them constantly. Spending inside the club ignores the hold; cashing out does not.
  3. 5
    Pull the same balances as fields, including your year-to-date secondary sales and your KYC status.
    Expected result Prepaid, earned, payout-eligible earned, tab (if any), purchasing power, YTD secondary sales and KYC state.
    Watch out for The YTD figure is what the tax module reads for a 1099-K. Resales that were later unwound because an event was cancelled are excluded from it.
  4. 6
    Read the statement: every royalty arrives as its own line, tied to the settlement that created it, with a running balance.
    Expected result One line per ledger movement, newest first, filterable by date and account.
    Watch out for Nothing on this statement can ever be edited or deleted, by anyone — the ledger is append-only and enforced by database triggers, not by UI convention. A mistake is corrected with a new balanced entry, which also appears here.
  5. 7
    Submit KYC once your year-to-date secondary sales pass the threshold: legal name and tax id.
    /api/credit/kyc POST ledger
    Expected result A KYC record, and external cash-out unblocked.
    Watch out for Only a SHA-256 hash of the tax id and its last four digits are stored — the raw number is never persisted, and your user row carries only a masked form. Until it is submitted, a payout request above the threshold is refused with KYC_REQUIRED.
  6. 8
    Open the payouts page and check what is releasable and when the rest matures.
    Expected result Your payout history, the eligible amount and a countdown on held funds.
    Watch out for The hold is per earning lot and it is measured from the event's completion, not from the sale. Royalties from a show next month are simply not cashable this month.
  7. 9
    Request a payout for an amount you have available, with your ACH routing and account numbers.
    /api/credit/payouts POST ledger
    Expected result A payout request that starts held and becomes eligible once its lots have matured.
    Watch out for Only the last four digits of the account number are stored. Requests below the minimum payout setting are refused, as are amounts above your eligible earned balance. You can cancel your own request while it is still held or eligible — not after it is processing.

Steps 10–12 — Admin

their manual →

Sets the royalty rate and recipient, and is the only one who can process a payout.

  1. 10
    As an admin, review the payout queue: who is asking, how much, and whether their KYC is in order.
    Expected result Payout requests grouped by status with their lots.
    Watch out for Admin only — a venue manager is 403 on every ledger and payout surface. That boundary is deliberate and worth teaching rather than papering over.
  2. 11
    Process an eligible payout to send it to the ACH rail.
    /api/admin/payouts/{payout_id}/process POST ledger
    Expected result A transfer to the payments mock, a balanced payout posting, and the request moving toward paid on the settlement webhook.
    Watch out for Eligible only, and KYC is re-checked at process time rather than trusted from when the request was made. A failed transfer posts a reversal and restores the money to the host's earned balance as an immediately available lot.
  3. 12
    Reconcile the period: pull the settlements for the event with their totals.
    Expected result Gross, venue fee, host royalty and seller net across completed and failed settlements.
    Watch out for Those totals are the honest answer to 'what did the promoter earn'. They come from the settlement rows, which carry a database check that the three parts sum exactly to the sale price.

Steps 13 — Host / Promoter

their manual →
  1. 13
    Understand what happens if your event is cancelled: every resale on it is unwound, the buyer is refunded in full on the rail they paid on, and your royalty is clawed back.
    Expected result A reversal posting that mirrors the original settlement exactly.
    Watch out for The clawback can only take what you still have. Earned balances are never allowed to go negative, so if you already spent or cashed out the royalty, the shortfall is written off by the venue and recorded as an unrecovered receivable against your name. It is not forgiven quietly — it is a number somebody will call you about.