loyaltyState (pointsBalance, currentTierId, stampsCollected, voucher fields), or membershipStatus, or both, returns 200. Stell handles delivery to both platforms.
Voided and expired passes reject updates. A pass in either state returns 409 with a CONFLICT code — see Errors. There’s no wallet to sync the update to.
Notify when it matters. Include an optional notificationMessage to surface a lock-screen notification with the update. Use it for tier upgrades and rewards, not every point change. You can also configure standing change messages on the pass template, self-service in the portal.
No pass id stored? No problem. Look it up first with List passes filtered by programId and externalId.
Display is wallet-controlled. Apple Wallet and Google Wallet decide the final notification presentation and may coalesce rapid updates. Don’t rely on one visible notification per call.