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.
Four steps from an empty event to money in your bank account
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.
Name them once for the whole event, then say which nights — and which parts of a night — each one admits.
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.
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.
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 |
| 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.
| 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.
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.
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.
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.
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.
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.
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.
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
All three nights · saves $15
4 left in the room
An illustration, not a live checkout.
Most ticketing tools keep one number and call it capacity. That is how two ticket types come to each sell the last two seats.
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.
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.
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.
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.
Three scopes, from one screen. Each pays back what was actually paid after discounts, not the price printed on the type.
Everything goes back, every ticket is cancelled, and the seats return to inventory.
The rained-off Saturday, out of an order covering three nights. The rest of the order stays live.
One person out of a party of six, without unpicking the other five.
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.
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.
Several surfaces, one set of inventory. A seat sold at the door is gone from the website on the next page load.
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.
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.
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.
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.
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.
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.
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.
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.00 | 14 | $70.00 |
| Sunday matinee | $15.00 | 31 | $465.00 |
| Sunday matinee | $30.00 | 8 | $240.00 |
| Weekend Pass | $60.00 | 22 | $1,320.00 |
An illustration, not live data.
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.
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.
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.
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.
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.
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.
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. |
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.