---
api: 'Revolut Wallet Partner API'
---

# Create a pass

Create a pass in Revolut Wallet from its semantic content. Returns the Revolut-assigned pass
`id`.

Set `partner_reference` to your own key for the pass. Revolut uses it when it polls you for
updates. Use the returned `id` to push updates (`PUT /passes/{id}`). Re-using a
`partner_reference` that already exists returns `409`.

:::info
See [Create a pass](https://developer.revolut.com/docs/guides/revolut-wallet/operations/create-pass) for a step-by-step walkthrough.
:::

## Endpoint

POST `/passes`

## Parameters

### header parameters

- `Revolut-Api-Version` (string, required)
  Dated API version. Currently `2026-07-01`. Sent on every request.
  :::note
  If you receive a version you do not implement, respond with `400`.
  :::

- `Idempotency-Key` (string, required)
  UUID scoped to your Partner ID. Replaying a request with the same key and body returns the
  original outcome; the same key with a different body returns `409`. Retained ≥ 7 days.

- `Request-Id` (string, optional)
  Your correlation id for this request. Revolut echoes it back in the response.

## Request body

### Attributes

## Returns

### 201

Pass created.

#### Response attributes

- `id` (string)
    Revolut-assigned pass id (UUID). Use it to address the pass on `PUT /passes/{id}`.
- `partner_reference` (string)
    Your reference, echoed back.

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Malformed syntax or failed validation. |
| 401 | Missing or invalid credentials: no or failed OAuth token, an invalid JWS signature, or a missing/invalid client certificate. |
| 403 | Authenticated, but the credential lacks the required scope/permission (e.g. an OAuth token without `passes.write`). For OAuth, accompanied by `WWW-Authenticate: Bearer error="insufficient_scope"`. |
| 409 | The `id` already exists (on create), the pass `version` is stale, or an `Idempotency-Key` was reused with a different body. |
| 413 | The pass payload exceeds the size limit. |
| 422 | Well-formed, but the pass cannot be created/updated in its current state. |
| 429 | Rate limit exceeded. |
