Transit
The Transit pass turns your transport tickets into a live, always-available pass in Apple Wallet and Google Wallet. Route information, departure times, and passenger details are securely stored and can be updated in real time — without requiring your customers to open an app.
To create a new Transit pass template, go to the "Pass templates" module (Hub > Wallet > Pass templates).
Click on the Create a pass template button.

Once your template is created, you will need to define template personalizations from the Manage pass templates module.
One template must be created per route or transport service. If you operate multiple routes, create one template per route.
Step 1 - Setup

This first step enables you to define the basic information of your template:
- Name: the internal name of your template. This is only visible to you and your team in your licence. We recommend using a clear naming convention.
- Type: the type of your pass template. This determines the visual layout and available fields for this template.
Your template name is what appears in your pass list and reporting. If you plan to issue passes for multiple routes, include the route name and transport type in the template name from the start.
Step 2 - Fields
Fields are the data that populate your passes. Every field you want to display or use, whether fixed or personalised, must be defined here first.
There are two types of fields:
- Common fields: the value is fixed and identical for all passes generated from this template. It cannot be changed at pass creation. Use these for route-level data that is the same for every passenger: issuer name, transit logo.
- Pass fields: the value can be overridden at pass creation. The value defined here is the default, used if no other value is provided. Use these for journey-level data: origin, destination, fare name.
You will have to add all fields you will be using in your pass template. These fields may then be included in your passes and ultimately define what data is displayed to users. In step 3, you will define where these fields will be displayed on the pass.
The fields that need to be personalised based on profile attributes will need to be configured in the template personalizations.
You may notice that some fields appear in both Common fields and Pass fields — for example, logo. This is intentional: Apple Wallet allows certain properties to be personalised at the individual pass level, meaning each issued pass can have its own value. Google Wallet, however, does not support this level of personalisation for those same properties and requires a single value shared across all passes. If you are issuing passes for both platforms, defining the field in both sections ensures maximum flexibility.
Common fields
Common fields define the route-level data shared across all passes generated from this template.
Common fields are shared across all passes generated from this template. Their values can only be edited by updating the template directly. Note that changes to common fields will only apply to newly created passes. Existing passes can only be updated through an update campaign.
| Key | Type | Description |
|---|---|---|
issuerName | String | The name of the organisation issuing the pass (e.g. My Company). Displayed on the pass and used by screen readers. |
transitLogo | Image | The transit operator logo displayed on the pass. Recommended size: 512×512 px. Use a PNG with a transparent background. |
Pass fields
Pass fields control the visual appearance of the pass and the personalised data displayed for each individual journey.
Unlike common fields, these fields are reserved for any properties that contain unique details of a specific pass issued to a specific user. These fields may be changed whenever you create or update a specific pass.
| Key | Type | Description |
|---|---|---|
backgroundColor | Color | The background colour of the pass in hexadecimal format (e.g. #FFFFFF). |
foregroundColor | Color | The colour of the primary text on the pass (e.g. #000000). Ensure sufficient contrast with the background colour for legibility. |
labelColor | Color | The colour of the field labels (e.g. #000000). Labels are the small captions above each value. |
icon | Image | The app icon displayed in system notifications and the pass list. Size: 29×29 pt (@2x: 58×58 px). PNG with transparent background. |
logo | Image | Your logo displayed in the top-left corner of the pass. Size: 160×50 pt (@2x: 320×100 px). Transparent background is mandatory. |
footer | Image | A thin strip displayed at the bottom of the pass, above the barcode. Size: 286×15 pt (@2x: 572×30 px). Often used for partner logos or regulatory information. |
heroImage | Image | A large decorative image displayed on the pass. Size: 1032×336 px. Use for route or transport imagery. |
from | String | The code or short name of the departure location (e.g. AMS). Displayed as the origin on the pass. |
to | String | The code or short name of the destination (e.g. RDM). Displayed as the destination on the pass. |
fromName | String | The full name of the departure location (e.g. Amsterdam). Displayed below the origin code for readability. |
toName | String | The full name of the destination (e.g. Rotterdam). Displayed below the destination code for readability. |
fareName | String | The fare or service type associated with the journey (e.g. Anytime). |
from, to, fromName, toName, and fareName are the fields you will typically inject dynamically at pass issuance, as they vary per journey.
Add and delete fields
You have the possibility to delete fields by ticking the box on the left side of the field and then clicking on Delete fields.
You also have the possibility to add fields if some are missing. Click on Add field.
For the added field, you will need to choose:
- the type: string, blob, date, number, money, color, image, JSON or boolean
- the key: the technical name of the field
- the value: the default value of the field

Step 3 - Design
Once all the fields you want to use in your template are added in the second step, you will have the possibility to define how your pass will be rendered on each platform. This step is split into two tabs, one for Apple Wallet and another for Google Wallet.
- Apple Wallet
- Google Wallet
Apple Wallet
The Apple Wallet tab is divided into four sub-tabs: General, Design, Data, and Semantics.
The Transit template looks like this:
General
In this tab, you can customize the basic information of your pass. For each field:
- You can choose common fields or pass fields you will have defined in the previous step. Only fields having the expected format will be available.
- You can add new field, if you forgot to add a field in the previous step, you can add it here and it will automatically be added to the list of fields from step 2.
- You can decide to use another value, a static value, that you are not planning on reusing in other fields.
In the following table, you'll find the fields and their description.
| Field | Description |
|---|---|
| Organisation name | The name displayed under your logo on the pass front. Typically your transport operator name. |
| Description | A short text description used by accessibility tools and device search. Example: Amsterdam to Rotterdam – Rail. |
| Transit type | The type of transport vehicle. Options include: Air, Boat, Bus, Generic, Train. This drives the native icon displayed between origin and destination on the pass. |
| Grouping Identifier | Groups related passes together in Apple Wallet. Useful for multi-leg journeys where you issue one pass per leg. |
| App Store Identifiers | Links your pass to an app in the App Store. A banner prompting the user to install your app appears on the back of the pass. |
| App's launch URL | An URL that opens your app directly when tapped from the pass. Requires an App Store Identifier. |
| User info | A metadata field for passing custom, non-displayed data alongside the pass. Useful for internal tracking or CRM linking. |
| Prevent pass sharing | When enabled, prevents the passenger from forwarding the pass. Recommended for named-passenger tickets. |
Design
The Design sub-tab maps directly to the Pass Fields defined in the second step. Select the corresponding field for each visual element using the dropdown.
For the Transit pass, the available visual elements are: Logo text, Icon (29×29 pt, @2x: 58×58 px), Logo (160×50 pt, @2x: 320×100 px), Footer (286×15 pt, @2x: 572×30 px), Background color, Foreground color, and Label color.
On the right side of your screen, you have a preview of what your pass template looks like.
Data
The Data sub-tab lets you assign your fields to the visual zones of the pass (Header, Primary, Secondary, Auxiliary and Back). Use the Label, Key, and Value columns to control what is displayed in each zone and in what order.
For each zone of the pass:
-
You can add a field, where you will have to define different fields. Note that here, you define the design of the pass. Therefore, you will define the labels you want to show, and the value that should be displayed. These two are not necessarily from the same field you have defined in step 2.
- Key: the unique key for the combination of label and value
- Label: the label of the field, which is the part above
- Value: the value of the field, which is the part below
- Alignment: the alignment of the field
As you are defining the design of your pass template, you have the possibility to play with the different fields:
- Example 1: you could decide to put "FROM" as the label, and the departure location name as the value
- Example 2: you could decide to put the departure code as the label, and the destination code as the value.

- You can delete a field from that zone of the pass, by ticking the box on the left side of the field and clicking on Delete field.
- You can edit a field by clicking on it.
The order of fields within each zone controls their left-to-right display order on the pass. Use the live preview on the right to check the layout as you configure it.
Semantics
Semantics are machine-readable metadata that Apple uses to power system-wide features such as Siri Suggestions, Spotlight Search, and proactive lock screen display. They are not visible on the pass itself — they work silently in the background to make your pass smarter.
For Transit passes, semantics are organised into seven categories:
- Trip Information — core journey data: confirmation code, confirmation number, original and current boarding dates, original and current departure and arrival dates, duration, transit status, transit status reason, security screening, and silence preferences.
- Origin — departure details: departure platform, departure station name, departure location (latitude/longitude), and departure location description.
- Destination — arrival details: destination platform, destination station name, destination location, and destination location description.
- Carrier Information — operator details: transit provider, vehicle name, vehicle number, and vehicle type.
- Boarding Information — boarding details: boarding group, boarding sequence number, and priority status.
- Seating Information — seat details: seats configuration.
- Passenger Information — passenger details: name prefix, name suffix, given name, middle name, family name, nickname, and phonetic representation.
- Pricing — the ticket price: currency code and amount.
- Other — additional contextual data, including Wi-Fi Access (networks the pass can grant access to).
Filling in semantics is optional but strongly recommended for transit passes — a pass with semantics configured will surface automatically on the passenger's lock screen as departure time approaches.
For each semantic:
- You can choose common fields or pass fields you will have defined in the previous step. Only fields having the expected format will be available.
- You can add new field, if you forgot to add a field in the previous step, you can add it here and it will automatically be added to the list of fields from step 2.
- You can decide to use another value, a static value, that you are not planning on reusing in other fields.
Google Wallet
The Google Wallet tab is divided into four sub-tabs: General, Design, Common Data, and Pass Data.
The Transit template looks like this:

General
In this tab, you can customize the basic information of your pass. For each field:
- You can choose common fields or pass fields you will have defined in the previous step. Only fields having the expected format will be available.
- You can add new field, if you forgot to add a field in the previous step, you can add it here and it will automatically be added to the list of fields from step 2.
- You can decide to use another value, a static value, that you are not planning on reusing in other fields.
In the following table, you'll find the fields and their description.
| Field | Description |
|---|---|
| Enable smart tap | Activates NFC-based contactless redemption for terminals that support Google Smart Tap. |
| Security Animation | An animated security pattern displayed on the pass to prevent counterfeiting. Options vary by implementation. |
| Unlock Requirement | Defines whether the device must be unlocked to display or redeem the pass. |
| Multiple devices and holders allowed | Controls whether the pass can be saved by multiple users. Set to Single User for named-passenger tickets. |
| Homepage URL | A URL displayed on the pass linking to your website or booking platform. Maps to a Common Field value. |
| Screenshot Eligibility | Controls whether the pass can be screenshotted on the device. |
| NFC Constraint | Defines additional restrictions on NFC redemption behaviour. |
Design
The Design sub-tab maps directly to the Pass Fields defined in Step 2. For Google Wallet, only two visual elements are configurable: the Hero image (516×168 pt, uploaded at @2x: 1032×336 px) and the Background color. Select the corresponding Pass Field for each using the dropdown.
Common Data
The Common Data sub-tab maps your Common Fields to Google Wallet's structured transit data model. Select the corresponding Common Field for each slot using the dropdown.
For each field:
- You can choose common fields you will have defined in the previous step. Only fields having the expected format will be available.
- You can add new field, if you forgot to add a field in the previous step, you can add it here and it will automatically be added to the list of fields from step 2.
- You can decide to use another value, a static value, that you are not planning on reusing in other fields.
Generic Data
| Field | Description |
|---|---|
| Issuer Name | The name of the organisation issuing the pass. Maps to issuerName. |
| Logo | The transit operator logo. Maps to transitLogo. Size: 512×512 px. |
| Wide Logo | An optional wider version of the operator logo. |
| Operator Name | The name of the transit operator. |
| Transit Type | The type of transport vehicle (e.g. Rail, Bus, Ferry). Drives the visual presentation on Google Wallet. |
| Enable Single Leg Itinerary | When enabled, displays the pass as a single-leg journey rather than a multi-leg itinerary. |
Custom Labels
| Field | Description |
|---|---|
| Ticket number label | The text displayed as the title of the ticket number field (e.g. Ticket, Ticket no.). |
| Concession category label | The text displayed as the title of the concession fare field (e.g. Fare, Category). |
| Transport terminus label | The text displayed as the title of the final destination field (e.g. Terminus, Destination). |
| Platform label | The text displayed as the title of the departure platform field (e.g. Platform, Track). |
| Zone label | The text displayed as the title of the travel zone field (e.g. Zone, Area). |
| Wagon label | The text displayed as the title of the wagon number field (e.g. Wagon, Car). |
| Coach label | The text displayed as the title of the coach number field (e.g. Coach, Vehicle). |
| Seat label | The text displayed as the title of the seat number field (e.g. Seat, Seat no.). |
| Fare class label | The text displayed as the title of the fare class field (e.g. Class, Cabin). |
| Purchase receipt label | The text displayed as the title of the receipt field (e.g. Receipt, Receipt no.). |
| Confirmation code label | The text displayed as the title of the booking reference field (e.g. Confirmation, Reference). |
| Face value label | The text displayed as the title of the ticket face value field (e.g. Value, Amount). |
| Purchase price label | The text displayed as the title of the price paid field (e.g. Price, Amount paid). |
| Discount message label | The text displayed as the title of the applied discount field (e.g. Discount, Reduction). |
Pass Data
The Pass Data sub-tab maps your Pass Fields to journey-specific data displayed on the Google Wallet pass.
For each field:
- You can choose pass fields you will have defined in the previous step. Only fields having the expected format will be available.
- You can add new field, if you forgot to add a field in the previous step, you can add it here and it will automatically be added to the list of fields from step 2.
- You can decide to use another value, a static value, that you are not planning on reusing in other fields.
Transit Ticket Data
| Field | Description |
|---|---|
| Ticket Number | The unique ticket number. |
| Trip Id | The unique identifier for the trip. |
| Trip Type | The type of trip (e.g. One Way, Round Trip). |
| Ticket Status | The current status of the ticket. |
| Custom Ticket Status | A custom status value for the ticket. |
| Passenger Type | The type of passenger (e.g. Adult, Child, Senior). |
| Passenger Name(s) | The name(s) of the passenger(s) travelling on this ticket. |
| Concession Category | The concession category applied to this ticket. |
| Custom Concession Category | A custom concession category value. |
Purchase Details
| Field | Description |
|---|---|
| Purchase Receipt Number | The receipt number for the ticket purchase. |
| Purchase Date | The date on which the ticket was purchased. |
| Account Id | The account identifier associated with the purchase. |
| Confirmation Code | The booking confirmation code. |
| Face Value Currency Code | The currency of the ticket face value. |
| Face Value | The face value of the ticket. |
| Purchase Value Currency Code | The currency of the actual purchase price. |
| Purchase Value | The actual price paid for the ticket. |
| Discount Message | A message describing any discount applied to the ticket. |
Ticket Leg
The Ticket Leg section defines the journey details for each leg of the trip, including Origin, Destination, Departure Date, and Arrival Date.
Other Restrictions — defines any additional restrictions applicable to the ticket.
App Links allows you to provide information about a companion app, across three sub-tabs — Android, iOS, and Web — each with the following fields: App logo image, App URL, Title, and Description.
Other allows you to enrich the back of the Google Wallet pass with additional content:
- Messages — contextual messages displayed to the pass holder.
- Images — additional images displayed on the pass.
- Info Texts — informational text blocks (e.g. terms and conditions, travel information).
- Links — external links displayed on the pass (e.g. to your booking platform or app).
Always preview both the Apple Wallet and Google Wallet versions of your pass before publishing. The live preview on the right side of the screen updates in real time as you configure your design.
Step 4 - Relevance
Relevance defines when and where your pass surfaces automatically on the passenger's lock screen, without requiring a notification to be manually triggered.
For Transit passes, relevance is one of the most impactful features available — a ticket that appears automatically on the passenger's lock screen as they approach the station or departure point removes friction at exactly the right moment.
Locations
Add GPS coordinates to trigger the pass on the lock screen when the passenger enters a defined radius around a location. For Transit passes, the most relevant use cases are:
- The departure station or stop
- The destination station or stop
Beacons (Apple Wallet only)
BTLE beacons allow ultra-precise, indoor triggering that GPS cannot achieve. If your stations or stops have deployed Bluetooth beacons at entrances or platforms, you can configure the pass to surface automatically when the passenger's device detects a specific beacon.
Configure each beacon with its UUID, and optionally its Major and Minor values for more granular targeting.
Beacon-based relevance requires physical beacon hardware to be deployed on-site. Coordinate with the station or venue operator before configuring this option.
Step 5 - Barcode
The barcode is the scannable element that connects your digital transit ticket to your physical entry or validation infrastructure.
| Format | Description | Recommendation |
|---|---|---|
| None | No barcode displayed on the pass. | Only if your validation is NFC-based exclusively. |
| QR Code | 2D matrix barcode. High data capacity, fast scanning, widely supported. | Recommended for most transit implementations. |
| PDF417 | 2D stacked barcode. | Use if your validation system requires PDF417 specifically. |
| 1D (Code 128) | Linear barcode. Low data capacity. | Suitable for simple transit implementations with short codes. |
| Aztec | 2D matrix barcode. Compact and efficient, native to Apple Wallet. | Suitable if your scanning infrastructure supports it. |
QR Code is the most universally supported format for transit passes. If your existing validation infrastructure uses a specific barcode format, match it here to ensure compatibility with your validators and gate systems.