Skip to main content

Wallet Passes API

Wallet passes (Apple Wallet and Google Wallet) are issued and managed from the Joryio dashboard and journeys. This API covers the one step that happens outside Joryio: recording when a pass is scanned/redeemed at your point of sale.

That scan is what powers the Scanned stage of the Wallet adoption funnel and the Scan rate in Analytics -> Wallet Analytics. Neither Apple nor Google notifies Joryio when a pass is used in store, so your POS (or a middleware integration) must post the scan here.

Authentication

All requests use an API key as a bearer token and require the wallet:write permission:

Authorization: Bearer jry_live_xxxxxxxxxxxxxxxxxxxx

Record a pass scan / redemption

POST /wallet-passes/scan
FieldTypeNotes
serialNumberstringRequired. The pass's unique id, read from the barcode/QR printed on the pass.
propertiesobjectOptional. Free-form redemption metadata (store, amount, cashier, ...). Stored as-is on the resulting pass.scanned event and available in analytics.

Example

TOKEN=jry_live_xxxxxxxxxxxxxxxxxxxx
BASE=https://api-eu1.joryio.com

curl -sX POST "$BASE/wallet-passes/scan" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"serialNumber": "a1b2c3d4-e5f6-4789-abcd-1234567890ab",
"properties": { "storeId": "store_42", "amount": 19.90, "currency": "EUR" }
}'

Response

{ "recorded": true }

recorded is false when no pass with that serialNumber exists in your organization - nothing is logged in that case.

Notes

  • Idempotent per pass for analytics. The funnel counts distinct passes, so re-scanning the same serialNumber still counts as one scanned pass. Each call does emit its own pass.scanned event, so the properties of every scan are retained.
  • What the serial is. serialNumber is the pass identifier encoded in the pass barcode/QR. Read it at the register and send it verbatim.
  • Where it shows up. Scans feed the pass.scanned event stream and the Scanned stage / Scan rate in Wallet Analytics. Scan rate is computed as scanned / downloaded (a clean cross-platform basis).
  • Multi-workspace keys. If your API key spans multiple workspaces, add an X-Workspace-Id: <workspace-id> header. It is optional for a single-workspace key.