How Apple Wallet Multi-Event Passes Work for Season Ticket Holders
Season ticket holders have always faced the same frustration: a bulging wallet of physical tickets, or — in the digital era — a drawer of individual passes that pile up in Apple Wallet with no sense of order. Apple addressed this directly at WWDC 2025 with the Upcoming Events API, a mechanism that allows a single pass to contain the full schedule of future events and automatically surface the next one on the lock screen. For sports clubs, theatres, concert promoters and festival organisers, it changes how digital ticketing works at a fundamental level.
What the Upcoming Events API is
Announced at WWDC 2025 and available from iOS 18.4, the Upcoming Events API lets a single.pkpass bundle carry an array of future events rather than representing just one. Apple Wallet reads this array and automatically determines which event is next. That event surfaces on the lock screen as a relevant notification in the days and hours leading up to it — exactly as a single-event ticket would — without the holder needing to open the Wallet app or scroll through dozens of passes.
Once an event's date has passed, Apple Wallet automatically advances to the next entry in the array. The holder always sees the right ticket at the right time, with zero manual effort on their part.
How it works technically
The structure lives inside pass.json, the manifest file at the root of every.pkpass bundle. A new top-level key, eventTickets, accepts an ordered array of event objects. Each object in the array supports the same field set as a standalone event ticket pass — including relevantDate, venue information, seat details and back-field content.
A minimal season ticket pass.json structure looks like this:
- passTypeIdentifier — your registered Pass Type ID.
- serialNumber — the unique identifier for this season ticket holder's pass.
- eventTickets — the array of upcoming event objects, each containing arelevantDate in ISO 8601 format, primary fields (match or show name, kickoff time) and secondary fields (seat, row, block).
- webServiceURL — the endpoint Apple calls to fetch updated pass data, used to push reschedule notifications.
The relevantDate field drives Apple Wallet's lock screen behaviour. When a device's clock approaches a relevantDate, the corresponding event entry rises to prominence in the wallet and can trigger a lock screen notification. Once that date has passed, Apple Wallet moves to the next entry. You do not need to push a pass update for this advancement — it happens client-side based on the dates already stored in the bundle.
Use cases for multi-event passes
Football season tickets
A Premier League or Championship club issuing 20,000 season tickets can now deliver one pass per holder that covers the entire 38-match home schedule. The barcode or QR code rotates dynamically — each event entry carries its own barcode value, so the turnstile scanner reads the correct code for today's match without the holder doing anything. The lock screen shows the next fixture, kickoff time and the holder's seat number from the morning of match day.
Theatre subscriptions
Repertory theatres and subscription series — six shows spread across a season — have long struggled with pass proliferation. A subscriber who has booked Hamlet in October,The Importance of Being Earnest in January and a new commission in March no longer needs three separate passes. One multi-event pass holds the full subscription, and each production surfaces automatically when its performance date approaches.
Concert series and festival wristbands
Multi-night concert residencies and multi-day festivals benefit from the same logic. A Glastonbury-style wristband pass could surface Friday's headliner on Friday evening and then advance to Saturday's programme on Saturday morning. Each entry in theeventTickets array maps to a day or a specific session, with a unique barcode that prevents the same code being used across multiple days.
Annual festival memberships
Organisers who run recurring annual events — a food festival, a literary festival, a trade show with preview nights and public days — can issue a single pass that covers every entry event in the programme. The holder adds the pass once and never has to hunt for individual tickets again.
Why it reduces pass clutter
Before the Upcoming Events API, a season ticket issued digitally meant one of two things: either the issuer uploaded a new pass for every fixture (cluttering the holder's wallet with 20–38 individual passes) or a single static pass was used with a universal barcode that did not rotate per event (a security risk). Neither option was satisfactory.
The multi-event approach solves both problems. One pass, one barcode-per-event, automatic progression. From the holder's perspective, the wallet stays clean. From the issuer's perspective, pass management is dramatically simpler — one record per holder rather than one record per holder per match.
Handling postponements and rescheduled fixtures
The most operationally significant aspect of multi-event passes is how they handle changes. When a match is postponed — as happens regularly in football due to cup replays, weather or broadcast rescheduling — you need to update the relevant entry in the eventTicketsarray and push a notification to affected holders.
The process uses the same APNS push mechanism as any other pass update. Your server updates the pass record, changing the relevantDate and primary fields for the postponed fixture. You then send a lightweight APNS push payload containing the holder's push token. Their device fetches the updated pass bundle from your webServiceURL and reflects the new date immediately. Apple Wallet displays a lock screen notification confirming the pass has been updated — you can also use the pass's back fields to include a plain-text explanation of the change.
For large-scale operations — a club rescheduling a fixture affects every season ticket holder simultaneously — you need a system capable of batching APNS push calls efficiently. Issuepass handles this natively: a single API call updates a pass template and dispatches push notifications to all holders in one operation.
Barcodes and validation
Each entry in the eventTickets array supports its own barcode object. This means the QR code or barcode displayed at the turnstile is specific to the current event — a different value from any other event in the season. Reusing a barcode across events is a significant security weakness; the per-event barcode approach eliminates it.
Your existing barcode scanning infrastructure reads the code as it would any other pass. The only requirement is that your validation system recognises the event-specific barcode value and maps it to the correct fixture. Issuepass generates unique barcode values per event entry and exposes them through the pass API, so your scanner integration can validate against live data.
Getting started with Issuepass
We support the Upcoming Events API across all Issuepass plans. You define your event schedule in the template, upload holder data and we generate multi-event passes for each holder. When fixtures are added, removed or rescheduled, you update the template and trigger a bulk push in one step — no per-holder API calls required.
Start free and issue your first season ticket pass today.
Start issuing wallet passes today
Try Issuepass free for 14 days — no credit card required.