# Revolut Wallet

**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 |
|------|-------------|-------------------|-------------|
| **:Voucher: 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) |
| **:Upload: 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) |
| **:Questionnaire: 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 |

:::info
For the full schema of each type, see the [Revolut Wallet Partner API reference](/docs/api/revolut-wallet-partner).
:::

### 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. |

## What's next

- [:Rocket: Get started](/docs/guides/revolut-wallet/get-started "Get your Partner ID, credentials, and template references in one exchange")
- [:Workflow: Operations](/docs/guides/revolut-wallet/operations/introduction "Create, update, and auto-provision passes in your customers' Revolut Wallet")
- [:16/Code: Partner API](/docs/api/revolut-wallet-partner "Endpoints Revolut hosts: create, push update")
- [:ArrowExchange: Wallet Partner Callbacks](/docs/api/revolut-wallet-callbacks "Endpoints you host: poll update, transaction results")