Updating a pass
Use the same endpoint to create and update a pass — it behaves as an upsert. Calling it with an existing pass ID updates that pass in place.GET /v1/pass/{templateId}/{passId}, change what you need, and send the result back.
Pass fields:
Example — update a membership points balance:
Read the pass so you have its current values:
primaryValue. Every other value is repeated unchanged, including the ones you aren’t updating:
backFields, locations, or metadata set has nothing to lose by omitting them.
Example — void a pass:
Voiding works the same way: send the complete pass with voided set to true, so the voided pass keeps its content.
How updates reach the wallet
After a pass is updated, Passform automatically notifies both wallets:- Apple Wallet — a silent push notification is sent to each device that has the pass installed. Apple Wallet then fetches the latest version of the pass in the background. The user sees the updated pass the next time they open it.
- Google Wallet — the pass object is updated directly via the Google Wallet API. Changes are reflected immediately.
waitForWalletUpdates to true in the request body to have the API wait until both wallets have been notified before it responds.
To show the user a lock-screen message alongside a change, see push messages.
Moving a pass to another template
Move a pass to a different template of the same type — for example from a “Silver” membership template to a “Gold” one. The pass keeps its ID and all of its field values, and the copies already installed in Apple Wallet and Google Wallet are updated in place rather than replaced./v1/pass/gold-members/member-123. To change field values as well, follow up with an upsert at the new template.
A move removes the pass from its original template, so retrying a request that already succeeded returns a
404. To make retries safe, send the optional Idempotency-Key header with a unique value per move — a retry with the same key replays the original response instead.400 if the two templates have different types, and 409 if a pass with the same ID already exists on the destination template.
Updating a template
Updating a template changes the appearance and shared content of every pass issued from it — colors, images, logo, title, and default field values.How template updates propagate
When a template is updated, Passform:- Updates the Google Wallet class — all Google Wallet passes reflect the new design immediately
- Rebuilds the Apple Wallet pass template with the new values
- Sends a push notification to every device that has a pass from this template, prompting Apple Wallet to fetch the updated version
Archiving a template
Archive a template you no longer need withPOST /v1/templates/{templateId}/archive. This voids every pass issued from the template and blocks new passes from being created on it.
Pass data vs template data
Template updates affect shared design and default content only. Per-pass data —fields, primaryValue, expiry, voided — is stored on the individual pass and is not affected by template updates.
Metadata
Metadata is a free-form object you can attach to a pass for your own tracking purposes. It is not displayed in the wallet, and is limited to 5,000 characters when serialized to JSON.Metadata is also part of the pass upsert body. Because an upsert replaces the whole pass, upserting without
metadata removes any metadata already stored on the pass.
