Sandbox
Help

Revolut Wallet Partner API2026-07-01

Endpoints hosted by Revolut that partners call to put passes into Revolut Wallet and keep them current.

  • Create a pass: POST /passes registers a pass and returns its Revolut id.
  • Push a pass update: PUT /passes/{id} replaces the pass with its latest state and fans it out to every holder.

You give each pass a partner_reference, which is your own key to match it in your system, and the value Revolut uses when it calls the endpoints you host (see the companion Wallet Partner Callbacks API, /docs/api/revolut-wallet-callbacks). Revolut assigns its own pass id, returned when you create a pass; use that id to address the pass on PUT /passes/{id}.

Start with the Revolut Wallet guide and Get started to onboard your business.

Authentication

Security scheme type:oauth2
Flows:clientCredentials

OAuth 2.0 client credentials. Request a short-lived access token from the token endpoint (authenticating with your onboarding credential: client_secret, private_key_jwt, or your mTLS certificate) and send it as Authorization: Bearer <token>. The token carries the passes.write scope. May be used on its own or together with mTLS.

Passes

Create passes and push updates into Revolut Wallet.

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.

See Create a pass for a step-by-step walkthrough.

Request

Header parameters
Revolut-Api-Version
stringrequired
Idempotency-Key
string(uuid)required
Request-Id
string
Request body
partner_reference
stringrequired
type
stringrequired
version
integer(int64)required
relevant_at
string(date-time)
actions
array
triggers
array
type
string
semantics
objectrequired
template_id
string

Response

Pass created.

Headers
Request-Id
string
Body
object
id
string(uuid)required
partner_reference
stringrequired
post/passes
curl -X POST "https://partner.wallet.revolut.com/passes" \
  -H "Content-Type: application/json" \
  -H "Revolut-Api-Version: string" \
  -H "Idempotency-Key: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Request-Id: string" \
  -d '{
  "partner_reference": "skyjet-2241-R7K92M",
  "type": "boarding_pass",
  "version": 1,
  "template_id": "tmpl_skyjet_boarding",
  "relevant_at": "2026-08-02T06:15:00.000Z",
  "semantics": {
    "passenger": {
      "full_name": "Sarah Connor"
    },
    "flight": {
      "flight_number": "2241",
      "carrier_code": "SJ",
      "departure_airport": {
        "iata": "LTN",
        "terminal": "1"
      },
      "arrival_airport": {
        "iata": "OTP"
      },
      "scheduled_departure_at": "2026-08-02T06:15:00.000Z",
      "scheduled_arrival_at": "2026-08-02T09:40:00.000Z"
    },
    "boarding": {
      "gate": "B22",
      "seat": "14C",
      "boarding_at": "2026-08-02T05:30:00.000Z"
    },
    "booking": {
      "pnr": "R7K92M"
    }
  }
}'

Request body samples

{
  "partner_reference": "skyjet-2241-R7K92M",
  "type": "boarding_pass",
  "version": 1,
  "template_id": "tmpl_skyjet_boarding",
  "relevant_at": "2026-08-02T06:15:00.000Z",
  "semantics": {
    "passenger": {
      "full_name": "Sarah Connor"
    },
    "flight": {
      "flight_number": "2241",
      "carrier_code": "SJ",
      "departure_airport": {
        "iata": "LTN",
        "terminal": "1"
      },
      "arrival_airport": {
        "iata": "OTP"
      },
      "scheduled_departure_at": "2026-08-02T06:15:00.000Z",
      "scheduled_arrival_at": "2026-08-02T09:40:00.000Z"
    },
    "boarding": {
      "gate": "B22",
      "seat": "14C",
      "boarding_at": "2026-08-02T05:30:00.000Z"
    },
    "booking": {
      "pnr": "R7K92M"
    }
  }
}

Response body samples

{
  "id": "3f9a1c2e-8b7d-4e6a-9f10-2c3b4d5e6f70",
  "partner_reference": "skyjet-2241-R7K92M"
}

Update a pass

Replace the stored pass with the latest version from your system. Send the complete pass. This is a full replacement, not a partial update. Bump version on every change.

Address the pass by either the Revolut pass id (from the create response) or your own partner_reference prefixed with ref:. Addressing by partner_reference is the only option for passes created by auto-provisioning, where Revolut's id was never returned to you. Bump version on every change to avoid overwriting a newer version.

See Update a pass for push vs poll and implementation details.

Request

Header parameters
Revolut-Api-Version
stringrequired
Idempotency-Key
string(uuid)required
Request-Id
string
Path parameters
id
stringrequired
Request body
partner_reference
stringrequired
type
stringrequired
version
integer(int64)required
relevant_at
string(date-time)
actions
array
triggers
array
type
string
semantics
objectrequired

Response

Pass replaced.

Headers
Request-Id
string
put/passes/{id}
curl -X PUT "https://partner.wallet.revolut.com/passes/string" \
  -H "Content-Type: application/json" \
  -H "Revolut-Api-Version: string" \
  -H "Idempotency-Key: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Request-Id: string" \
  -d '{
  "partner_reference": "skyjet-2241-R7K92M",
  "type": "boarding_pass",
  "version": 2,
  "relevant_at": "2026-08-02T06:15:00.000Z",
  "semantics": {
    "passenger": {
      "full_name": "Sarah Connor"
    },
    "flight": {
      "flight_number": "2241",
      "carrier_code": "SJ",
      "departure_airport": {
        "iata": "LTN"
      },
      "arrival_airport": {
        "iata": "OTP"
      },
      "scheduled_departure_at": "2026-08-02T06:15:00.000Z",
      "scheduled_arrival_at": "2026-08-02T09:40:00.000Z"
    },
    "boarding": {
      "gate": "C14",
      "seat": "14C"
    },
    "booking": {
      "pnr": "R7K92M"
    }
  }
}'

Request body samples

{
  "partner_reference": "skyjet-2241-R7K92M",
  "type": "boarding_pass",
  "version": 2,
  "relevant_at": "2026-08-02T06:15:00.000Z",
  "semantics": {
    "passenger": {
      "full_name": "Sarah Connor"
    },
    "flight": {
      "flight_number": "2241",
      "carrier_code": "SJ",
      "departure_airport": {
        "iata": "LTN"
      },
      "arrival_airport": {
        "iata": "OTP"
      },
      "scheduled_departure_at": "2026-08-02T06:15:00.000Z",
      "scheduled_arrival_at": "2026-08-02T09:40:00.000Z"
    },
    "boarding": {
      "gate": "C14",
      "seat": "14C"
    },
    "booking": {
      "pnr": "R7K92M"
    }
  }
}

Response body samples

No contentThis response does not have a body.