Skip to content
Last updated

Migration Guide: From QR Codes to Digital Wallet Ticketing

Purpose

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.


Background

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.


Old vs New Ticketing Model

Legacy QR Code Model

  • 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

Digital Wallet Ticketing Model

  • Ticket generated server-side
  • Wallet-native pass (.pkpass)
  • Stored directly in the device wallet
  • Signed and tamper-resistant
  • Works offline

What Remains the Same

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

What Changes

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

Step-by-Step Migration

Step 1: Purchase Tickets (Unchanged)

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.


Step 2: Remove QR Code Logic

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.


Step 3: Fetch the Digital Wallet Pass

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

UI Recommendations

  • Replace “Show QR Code” with “Add to Wallet”
  • Display Apple Wallet / Google Wallet branding
  • Provide guidance for unsupported devices

Backward Compatibility

If required, QR code tickets may remain valid during a transition period. However, all new integrations should default to digital wallet ticketing.


Migration Checklist

  • Remove QR code generation
  • Integrate /tickets/{ticketId}/pkpass endpoint
  • Update frontend UI
  • Test offline access
  • Validate entry scanning

Summary

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.