Sell a weekend pass. Refund one night of it.

A box office that understands what you actually sell — runs, passes, split days, sliding scale, reserved seats — and a finance side that can tell you afterwards where every cent went. Stripe pays you directly. We take 1–3% of the fixed-price part of an order, by how much the event sells, and we print that on this page rather than in a footnote.

How it works

Four steps from an empty event to money in your bank account

1. Connect Stripe

Onboard your organization's own Stripe account. Buyers pay you, not us: the money lands in your balance and Stripe pays it out to your bank.

2. Write the ticket types

Name them once for the whole event, then say which nights — and which parts of a night — each one admits.

3. Sell in four places at once

Your public event page, an iframe on your own website, the staff box office and a public kiosk — all drawing on one set of inventory.

4. Settle the night

Read real sales by type and by price, split the take with your partners, and trace the bank deposit back to the shows it covers.

What we take, and on which rail

Every fee below comes out of the payment before it reaches your Stripe balance. There is nothing after it.

Money coming in Our fee Card processing
Fixed-price tickets 1–3% of the ticket money, after any discount by how many tickets the event sells — the three bands are below 2.9% + $0.30 per order, passed straight through
Pay-what-you-can tickets Nothing 2.9% + $0.30 — Stripe's cost is not ours to waive
Donations Nothing We cover it — a donation reaches you whole
Room hire, deposits and invoices 1–3% by the size of the booking the three bands are below 2.9% + $0.30
A refund you issue Comes back to you with the refund Comes back to you with the refund

The ticket fee, in three bands

Tickets the event has sold Our fee On a $25 ticket…
The first 100 1% $0.25
101 to 1,000 2% $0.50
Over 1,000 3% $0.75

The band is set by how many tickets the event has sold when an order is placed, and it is never applied backwards. An event that passes 100 pays 1% on everything it sold up to that point and 2% after it — we do not go back and re-bill the early orders.

The booking fee, in three bands

Booking total Our fee On a booking of…
Under $1,000 1% $500 → $5.00
$1,000 to $10,000 2% $5,000 → $100.00
Over $10,000 3% $20,000 → $600.00

The band is set by the amount on that booking, not by your annual total, and it applies to the whole amount rather than only the part above the threshold. A deposit and the balance that follows it are two charges, so each is banded on its own size.

The buyer can cover it, exactly

Turn on the cover-fees option and $100 of tickets is charged at $104.38, and you receive exactly $100. That number is solved, not estimated, and the buyer sees it on the receipt as its own line rather than folded into the ticket price. It switches itself off if anything in the basket is pay-what-you-can — we will not gross up a price the buyer chose.

Ticketing is not a plan or an add-on

There is no ticketing tier to buy. What it needs is a connected Stripe account: until your organization is onboarded, checkout refuses rather than take money we cannot route to you. See pricing for the subscription plans and add-ons for the extras.

The 1% is the first band, and a small event never leaves it. There is no booking fee and no per-ticket service fee. We do not calculate, collect or remit sales tax — a ticket order carries no tax line, and that part stays with you. Prices and payouts are in US dollars.

Ticket types that match what you sell

A type belongs to the event, not to one night. You write it once and say which nights, and which parts of a night, it admits.

One "General Admission" for a whole run

Types live on the event and are admitted to the dates you pick, so a six-night run does not mean retyping the same three prices six times. Removing a type never breaks a ticket already sold under it, and re-adding the same name brings the original back rather than starting a second one.

Sliding scale, with a floor you set

A type is either fixed price or buyer-priced. Buyer-priced means a minimum, an optional maximum and preset buttons. An amount outside that range is refused, not quietly nudged to the nearest allowed one, so the price on the screen is the price on the card. This money carries no platform fee, cannot be discounted by a promo code, and is left out of the cover-fees gross-up.

Passes: one purchase, several nights

A pass is bought once, admits every night it declares, and is scanned separately at each one. Late joiners can buy into a run already in progress and get the nights that remain, at a reduced price if you want. Type what each night is worth and those numbers weight the refund and the late-join price; leave them blank and every night weighs the same. A pass is counted against its scarcest night, so a roomy Friday never advertises a seat Sunday does not have.

One day, sold in parts

Split a date into named phases and admit a type to some of them: a morning-only workshop ticket beside a full-day one. The door works out which part a scan is redeeming, with a 60-minute grace before a phase opens, so an early arrival is told when doors are rather than turned away. Adding a phase to a date later never locks out a ticket sold for the whole day.

Winter Festival · Fri 12 – Sun 14

On sale until doors

Weekend Pass × 1 $60.00

All three nights · saves $15

Saturday only × 1 $25.00

4 left in the room

Sunday matinee Pay what you can, $5 minimum
$5 $15 $30 Other
Friday only Sold out
Subtotal$85.00
Cover the fees for the venue$3.77
Total$88.77
Pay without leaving this page

An illustration, not a live checkout.

The room and the tier are different numbers

Most ticketing tools keep one number and call it capacity. That is how two ticket types come to each sell the last two seats.

Two layers, counted separately

What is on sale is the smaller of a type's own allocation and the seats left in the room it sells into. "Morning only" and "Full day" share the room, so they cannot each sell the last chair. Leave a room's capacity blank and it is unlimited; set it to zero and nothing sells into it.

The last two seats go to one buyer

Availability is checked twice: once straight away, so a sold-out basket is refused without queueing behind anyone, and once inside the transaction while the night is locked. Every date a basket touches is locked in the same order each time, and a clash is retried rather than dropped, so two buyers cannot both take the last two seats and neither gets an error page mid-payment.

Reserved seats, drawn once

Draw the chart on the venue — sections, seats, the shape of the floor — then bind a ticket type to a section. Buyers pick actual seats, and a basket covering several seated nights walks the picker one night at a time. Staff can move a sold ticket to a different seat. A seat is held for ten minutes while its buyer finishes.

An abandoned basket returns its seats in minutes

Tickets are minted the moment an order is created, before any money moves — which is the only way the count on the page can be true. So the release has to be just as reliable.

Pending

Seats are out of inventory. The checkout has 30 minutes.

Confirmed

Paid. Receipt sent, tickets grouped by the night each is for.

Expired

Swept every five minutes. Tickets, seat holds and the promo-code use all go back.

Refunded

In whole, or one night at a time. What is left stays scannable.

The sweep never cancels an order whose payment page is still open, and never one already paid. A $0 order — a free event, a full comp, a 100% code, a pay-what-you-can ticket priced at nothing — skips the card rails entirely and still sends the same receipt. An order between one cent and forty-nine is refused with a message the buyer can act on, because Stripe will not take it.

Refunds, to the cent

Three scopes, from one screen. Each pays back what was actually paid after discounts, not the price printed on the type.

The whole order

Everything goes back, every ticket is cancelled, and the seats return to inventory.

One night of it

The rained-off Saturday, out of an order covering three nights. The rest of the order stays live.

One ticket

One person out of a party of six, without unpicking the other five.

A pass refunded one night at a time

Cancel Saturday out of a weekend pass and the buyer gets Saturday's weighted share back and keeps Friday and Sunday, still scannable. A night already attended is never refunded, and still counts in the arithmetic, so three separate refunds against one pass add up to exactly what was charged and not a cent more. The ticket stays valid with fewer nights on it, and is only cancelled when nothing live is left.

Pressing it twice does not pay twice

A retry of the same refund replays the first one instead of issuing a second, because the request is fingerprinted to the exact tickets and nights being paid for. A refund of a different set is a different request, so it cannot be swallowed as a duplicate. Two staff refunding two different nights of the same pass at the same moment queue behind each other rather than both reading a stale balance. And the fee comes back with the money: you are not left paying us on a sale you reversed.

What we deliberately do not offer is a free-form "refund $17 of this order". A partial like that moves money and leaves nothing on record saying which tickets it covered, so the three scopes above are the only ones on the screen.

Sell it everywhere, count it once

Several surfaces, one set of inventory. A seat sold at the door is gone from the website on the next page load.

Checkout inside your own website

Not a link out and not a pop-up. Choosing tickets, picking seats, paying and collecting the QR code all happen in a frame on your domain, and the buyer never makes an account. There is an embeddable order lookup for buyers too — they verify with a six-digit code sent to their email — and an embeddable scanner for your staff.

The box office and the kiosk

One sale flow behind the staff till and the public kiosk. Cash and "they paid me another way" record a paid order without touching a card at all; card either sends the buyer to a payment page or, on the door app, takes Tap to Pay on the phone in your hand. Recording a cash sale is checked against the signed-in staff member every time, not merely hidden from the wrong person. More on the door and front of house page.

On sale from, on sale until

Set the window for the whole run at once, or per night. Leave the start blank and it is on sale now; leave the end blank and it closes at the date's own end, worked out fresh every time it is read, so moving the show moves the window with nothing to re-save. When it closes the buy buttons disappear rather than lead to a refusal. Staff door sales carry on after curtain so you can still reconcile the night.

Comps that are real tickets

Issue a full comp, a percentage off or a fixed amount off — one at a time, in bulk, or from a CSV — delivered as an emailed claim link or held for pickup at the door. A comp takes a real seat out of the room and out of its own tier — comp four of the twenty press seats and the box office is offered sixteen, everywhere it is counted. It is capped per event by a number you set, and can only be issued by the roles you allow. Overriding a full room takes an admin. A full comp claims itself; a half-price one sends the guest through checkout for the balance. Revoking one refunds it.

Promo codes that cannot leak

Percentage or fixed amount, with start and end dates, a usage cap and a minimum order. A code has to be switched on for tickets specifically, so one you made for a room rental can never zero out a ticket. The use is claimed as the order is placed and handed back if that order is cancelled, expires or is refunded. Discounts are spread across individual tickets so the arithmetic lands exactly: three $10 tickets less $5 charges 8.33, 8.33 and 8.34.

Codes that go stale in 30 seconds

A ticket's QR code is rebuilt on a 30-second clock, so a screenshot forwarded to a friend has already stopped working. A genuine double scan is reported as already used rather than admitting two people. Buyers can keep a pass in Google Wallet where that is set up, and cancelling a ticket takes the wallet pass down with it.

The money side

Sales by type and by price on the event, one ledger for the organization, and a bank deposit you can trace back to the shows that made it.

One row per price, not one lump total

A sliding-scale type sells at a dozen different prices, and a promo code splits a type in two. The event's finance tab breaks every ticket type down by the prices it actually sold at, each with its own refund column, beside tickets sold, orders, gross, and gross after refunds. Per-night figures split a pass across its nights on the same weights a refund would pay it back at, so the nights add up to the event instead of double-counting it.

Type Price Sold Gross
Sunday matinee$5.0014$70.00
Sunday matinee$15.0031$465.00
Sunday matinee$30.008$240.00
Weekend Pass$60.0022$1,320.00

An illustration, not live data.

Settle the night, not the guess

The same arithmetic runs the deal calculator you use before you book a show and the settlement you run after it, so an estimate and a settlement cannot disagree about the same night. The real one reads real ticket revenue. A finalised settlement is frozen: settling again writes a new one that supersedes it rather than editing history.

Gross from the sources you count $6,240
Less platform and card fees − $306
Less itemized overhead, capped if you cap it − $850
Less the house nut − $1,500
Overage, split with up to three partners $3,584

An illustration. Guarantees are handled too, and the fixed thirty cents is charged per order rather than once on the pooled gross — on a 200-order night that is real money out of the partners' share.

One Money page

Payments, payouts, promo codes, contracts, fiscal sponsorship and Stripe onboarding, in tabs: gross, net of fees and refunds, and what is still pending. Admins, managers and finance staff can open it; nobody else can.

CSVs a spreadsheet can total

Payments and payouts export in dollars with a real decimal point, no currency symbols in the cells, and refunds as their own column rather than quietly netted off. Both follow the same conventions, so they sit side by side against a Stripe statement.

"Which shows was that deposit?"

Bank payouts are mirrored in from Stripe, and your finance staff get an email when money actually lands — naming the events that deposit covers, traced through our own payment records. You can also pay a performer from your connected account, and reverse that payout if it should not have gone.

What runs without you

Three clocks, and one thing deliberately not on a clock at all.

Every five minutes

Abandoned checkouts are expired and their tickets, seat holds and promo-code uses go back into inventory. Payment pages for tickets are given a 30-minute life on purpose — shorter than our other payment types — so seats come back fast.

Ten minutes, per seat

A held seat lets go on its own ten-minute clock while its buyer is at the payment page, without waiting for any sweep to come round.

Nightly, and weekly

A nightly pass catches any payment left hanging after a missed webhook. Once a week your finance and admin staff get income and costs grouped by space, so you can see what the large theater earned. That email says plainly that space buckets attribute rather than partition, because an event can use two rooms.

Not on a clock, on purpose

The close of a sales window is worked out from the date's own end each time it is read, so rescheduling a show moves its window with no job and nothing to re-save. And admission is governed by nothing at all: a closed sales window never stops a ticket already sold from being scanned.

What this does not do

Worth knowing before you switch, and easier to read here than to discover in March.

Not today What that means for you
Sales tax Not calculated, not collected, not remitted. A ticket order carries no tax line. If your tickets are taxable, that stays with you and your accountant.
Currencies other than US dollars Every price, fee and payout is in USD.
Per-venue time zones There is one platform time zone. A venue in another one reads phase and window times shifted by the offset.
Selling with no connection There is no offline mode. Scanning and selling at the door both need the network up.
Free-form partial refunds Whole order, one date, or one ticket. No "give them $17 back", because nothing would record which tickets that covered.
Choosing the seat on a reservation Your staff and producers can hold real seats for a guest and send them a link to pay — that reservation is durable, comes off what the box office may sell, and is enforced by the database, not a cache. What you cannot do yet is say which seat: a reservation takes a number of seats out of a tier rather than row B, seats 12 and 13. A shopper's own working hold is still ten minutes.
Apple Wallet Google Wallet only, and only where it is configured. Every ticket works from the confirmation page and the emailed receipt regardless.
Selling a date pulled from Eventbrite A date imported from Eventbrite is sold by Eventbrite. We show it and check its attendees in, and we switch our own buy buttons off rather than sell a seat we do not hold. Eventbrite sync is a separate add-on.
Private confirmation links A confirmation URL works for whoever holds it — deliberately, because a guest needs it at the door from a forwarded email. After a short window it stops showing the buyer's name and what they paid; those need the signed-in owner.

Put the box office where the money is

Ticketing comes with every plan. Connect Stripe and you are selling: 1–3% of the fixed-price part of an order, plus the card processing Stripe charges, and nothing else.