Wallet passes API

Create, list, fetch, update and delete Apple Wallet and Google Wallet passes with the Shakewell Wallet API, including identifiers, statuses and pagination.

Last updated 2026-11-05

A pass is one customer's card. Endpoints live under /wallet-passes.

Method and pathPurpose
GET /wallet-passesList passes, paginated
POST /wallet-passesCreate a pass from a template
GET /wallet-passes/{passId}Fetch one pass
PUT /wallet-passes/{passId}Update a pass (PATCH also works)
DELETE /wallet-passes/{passId}Void the pass in the wallets and delete it

Identifiers

{passId} accepts the string pass_id returned on create, or the numeric id. Only passes on your own account are found; anything else returns 404 WALLET_PASS_NOT_FOUND.

Create

POST /wallet-passes
{
  "template_id": 38,
  "person": {
    "forename": "Ada",
    "surname": "Lovelace",
    "emailAddress": "ada@example.com"
  }
}
FieldRequiredNotes
template_idyesa template on your account
personyesobject with forename, surname, emailAddress, mobileNumber, dateOfBirth, displayName, salutation. Template rules decide which are mandatory
metanotemplate field values, shaped by the template
universalnoextras such as a gift card expiry
barcode_valuenoup to 64 printable ASCII characters, unique on your account. Generated if omitted

List

Query parameters: per_page (default 10), current_page, template_id, query, sort_by (default created_at) and sort_order (default desc). Page details are in data.meta.

Update

Send status (active, inactive, suspended, expired or voided), expires_at, pass_data, field_values or meta. The change is pushed to the pass in the customer's wallet. If the template was removed the call returns 409 WALLET_PASS_TEMPLATE_MISSING; a wallet-side failure returns 500 WALLET_PASS_UPDATE_FAILED.

Delete

Apple and Google do not support hard deletion of an issued pass, so Shakewell voids it in the wallet with the reason deleted, then removes the record. If the wallet-side call fails, the record is still deleted.