Selling tickets
The voucher module is now "Tickets & vouchers": alongside monetary vouchers you sell tickets for events, theme nights and set menus — paid via Stripe, redeemed via QR code.
A ticket is a sellable allotment: wine night, New Year’s Eve menu, tasting for two. Unlike a monetary voucher it has a fixed price, an optional capacity and a validity window — and it is redeemed exactly once.
Creating tickets in the webapp
Tickets are created in the Tickets & vouchers module under "Tickets". Each ticket has:
- A name and description (e.g. "Wine night — 5 courses, 5 glasses").
- A price and currency.
- An optional capacity — pending checkouts count, so it never oversells.
- A valid-from date and an optional valid-until date.
- An optional image and an active toggle.
How guests buy
- 1
Discover the ticket
Active tickets appear in the restaurant’s ticket/voucher shop — in the guest app under "Angebote" (offers) and on the web. The public list comes from a CORS-open endpoint: GET/api/tickets/[restaurantId] - 2
Pay via Stripe — no account needed
Purchase runs as a Stripe guest checkout: the guest needs no Onboard account, only an email address for delivery. The ticket is only issued after successful payment. - 3
Receive the ticket
The guest receives the ticket with its QR code by email. In the guest app it also shows up under "My vouchers & tickets".
Entry & redemption
On the night itself the team scans the QR code with the team-app scanner — the same flow as vouchers, see Redemption. A ticket is consumed on first scan; a second scan immediately shows "already redeemed" with a timestamp.
Voucher = stored value, partially redeemable across visits. Ticket = entry/seat for a specific offer, with capacity and validity window, redeemable once. Both live in the same module, share the same QR mechanics and show up in the same report.