Put boarding passes, event tickets, and loyalty cards into your customers' Revolut Wallet and keep them current over time.
Revolut Wallet lets you put boarding passes, event tickets, and loyalty cards into a customer's digital wallet and keep them current over time. Revolut can also auto-provision passes from card transactions without any user action.
Core operations
Three operations - implement the ones that fit your business:
| Operation | What you do | What Revolut does | When to use |
|---|---|---|---|
| Create a pass | Call the Partner API with pass content and a template_id | Renders the pass in the customer's wallet | You want to push passes from your system (e.g. after a booking or ticket purchase) |
| Update a pass | Push the full updated pass via PUT, or return it when Revolut polls your endpoint | Keeps the pass in sync with your system | Pass details change after creation (e.g. gate change, seat update, points earned) |
| Auto-provision transaction results | Host an endpoint Revolut calls after an eligible card transaction | Pulls pass data from you and creates the pass automatically | You want passes to appear without any user action, driven by card transactions |
What a pass looks like
A pass is a combination of semantic content (the structured data behind the pass) and a template (the visual branding and layout). You create passes with their semantic content and a template_id; Revolut renders them in the customer's wallet.
Pass types
Each pass has a type that determines its semantic structure:
| Type | Description | Key semantic fields |
|---|---|---|
boarding_pass | Airline boarding pass | Passenger, flight (number, carrier, airports, times), boarding (gate, seat), booking (Passenger Name Record, PNR) |
event_pass | Concert, sport, conference ticket | Event (name, category, dates), venue (name, location, seat), ticket, participant, organiser |
loyalty_pass | Store loyalty card | Member (name, id), loyalty (program, tier, points balance, next reward) |
All types share common optional fields:
| Field | Description |
|---|---|
actions | Buttons on the pass (e.g. open external URL, get directions) |
triggers | Context-aware notifications (proximity, time before event, field change) |
relevant_at | When the pass becomes time-relevant; drives Revolut's polling cadence |
validity | When the pass is valid from/until |
For the full schema of each type, see the Revolut Wallet Partner API reference.
Templates
Branding and layout come from a template. Revolut sets up the template for you and gives you a template_id. Include it when you create a pass. It's fixed at creation and cannot be changed on updates.
Versioning
Every pass has a version field. Bump it on every change so Revolut can detect updates and avoid overwriting newer state with stale data.
Pass identifiers
Two identifiers work together:
| Field | Description |
|---|---|
partner_reference | Unique identifier of pass in your system (booking reference, membership number, ticket number). You set it at creation and use it to match the pass in your system. Revolut uses it when polling you for updates and when calling your transaction results endpoint. |
id | The Revolut-assigned pass ID (UUID), returned when you create a pass. Use it to address the pass on PUT /passes/{id}. For auto-provisioned passes where Revolut never returned you an id, address the pass by ref:<partner_reference> instead. |