This guide explains how to migrate from the legacy QR code–based ticketing system to the new digital wallet–based ticketing solution using wallet passes (.pkpass).
It is intended for developers integrating with the Museum API and focuses on practical, step-by-step changes required in existing implementations.
The previous ticketing flow relied on QR codes generated from ticket identifiers and displayed inside applications or emails.
The new approach replaces QR codes with digital wallet passes, which are stored natively in Apple Wallet or Google Wallet and generated by the backend.
- QR code generated client-side or embedded in emails
- Ticket presented as an image
- User had to open the app or email
- Higher risk of reuse (screenshots)
- Online access often required
- Ticket generated server-side
- Wallet-native pass (
.pkpass) - Stored directly in the device wallet
- Signed and tamper-resistant
- Works offline
The following parts of the integration do not change:
- Ticket purchase flow
- POST /tickets endpoint
- Ticket identifiers (
ticketId) - Event and admission logic
- Entry validation based on
ticketId
The following elements must be updated:
- QR code generation logic must be removed
- QR code rendering in UI must be removed
- New endpoint must be integrated to retrieve wallet passes
- UI flow should guide users to add tickets to their wallet
Tickets are still purchased using the same endpoint:
POST /tickets
Example request body:
{ "ticketType": "event", "eventId": "dad4bce8-f5cb-4078-a211-995864315e39", "ticketDate": "2023-09-05", "email": "user@example.com" }
Example response:
{ "ticketId": "b811f723-17b2-44f7-8952-24b03e43d8a9", "confirmationCode": "ticket-event-9c55eg-8v82a" }
The ticketId is required for all subsequent steps.
Remove any functionality that:
- Generates QR codes from ticketId
- Displays QR images in the UI
- Sends QR codes via email
- Relies on QR screenshots for entry
QR codes are no longer required in the new system.
Use the new endpoint to retrieve the wallet ticket:
GET /tickets/{ticketId}/pkpass
Example request:
GET /tickets/b811f723-17b2-44f7-8952-24b03e43d8a9/pkpass
The response contains a wallet-compatible ticket pass with:
- Event or admission name
- Date and time
- Ticket ID
- Embedded wallet barcode
- Replace “Show QR Code” with “Add to Wallet”
- Display Apple Wallet / Google Wallet branding
- Provide guidance for unsupported devices
If required, QR code tickets may remain valid during a transition period. However, all new integrations should default to digital wallet ticketing.
- Remove QR code generation
- Integrate /tickets/{ticketId}/pkpass endpoint
- Update frontend UI
- Test offline access
- Validate entry scanning
Digital wallet ticketing provides a more secure, reliable, and user-friendly experience. Migrating from QR codes simplifies entry validation and improves overall ticket lifecycle management.