# Apple Wallet Pass Not Updating? How Updates Work

> Why an Apple Wallet pass stops updating: the Automatic Updates switch, the connection, and for developers the push, serial list and 304 that break it.

Canonical: https://cardr.co/blog/apple-wallet-pass-not-updating
Author: Kai, Founder of Cardr. Published 2026-09-23; last updated 2026-09-23.
Part of: [Apple Wallet business cards](https://cardr.co/apple-wallet-business-card)

## Short answer

**An Apple Wallet pass updates only if it was built to: it needs a web service address and token inside it, Automatic Updates switched on, a connection, and an issuer that pushes a notice when something changes. If yours is stale, open the pass, tap More or Info, check Automatic Updates is on, then remove it and add it again from the issuer.** If a freshly added copy is still wrong, the issuer’s server is the problem, and the developer half of this page is about finding it.

## Why is my Wallet pass not updating?

Usually one of four things: the pass was never built to update, Automatic Updates is off, the phone could not reach the issuer, or the issuer never told Apple anything changed.

A pass is a signed file, not a web page. When you add it, Wallet keeps a copy, and that copy changes only if the pass carries two extra keys, a `webServiceURL` and an `authenticationToken`, and the issuer runs a server that answers on that address. Apple’s own description, in [Adding a Web Service to Update Passes](https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes) (read 23 September 2026), is that “updating a pass is a cooperative effort between the user’s device, Apple servers, and your server.”

Plenty of passes never had those keys. A pass made by a one-off generator, or from a service that has since shut down, is a snapshot: it will show what it showed on the day you added it, forever. We explain how to tell from the file itself in [what a .pkpass file is](https://cardr.co/pkpass-file).

Two things that are normal and not faults. Updates are usually silent: Wallet shows an alert only when the issuer has written one for that field (more on that below). And a push from the issuer is a nudge, not a delivery. Apple’s [Wallet Developer Guide](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html) says push notifications “are not guaranteed to be delivered”, so a pass can lag behind its issuer for a while.

## How do I refresh an Apple Wallet pass?

Check the pass’s settings, give it a connection, and if it is still stale, remove it and add it again from the issuer. The steps, in the order that wastes the least time:

1. **Open the pass and find its settings** — In Wallet, tap the pass, then tap the More button or the Info button. Apple notes that not every option is available on every pass.
2. **Turn on Automatic Updates** — If the switch is there and off, turn it on. If there is no such switch, the pass was most likely never built to update, and nothing on your phone will change that.
3. **Give the phone a working connection** — Wallet has to reach the issuer’s server to fetch the new version. Move off flaky Wi-Fi or into signal, open the pass again, and give it a few minutes.
4. **Check the change was actually made** — An update only arrives after the issuer changes the pass and tells Apple. If you edited something yourself, confirm it saved on the issuer’s site or app.
5. **Remove the pass and add it again** — Tap the pass, tap More or Info, then Remove Pass, and download it again from wherever you first got it. Apple warns this removes it from your other devices too.
6. **Ask the issuer** — If a freshly added copy is still wrong, the fault is on the issuer’s side, not your phone’s. Their support team is the only one who can fix it.

Where the steps come from. Apple’s current [iPhone User Guide](https://support.apple.com/en-gb/guide/iphone/manage-passes-cards-and-keys-iphbea35dbc4/27/ios/27) (iOS 27, read 23 September 2026) says to tap an item, then tap its More or Info button and choose an option, and that “not all options are available on all cards and passes.” It does not name the update switch. Apple’s [iPod touch User Guide](https://support.apple.com/en-gb/guide/ipod-touch/manage-passes-iph46f49b562/ios) does, in the same menu: “Automatic Updates: Allow the pass to receive updates from the issuer.” On removal, the iPhone guide warns: “If you delete a pass on your iPhone, it’s permanently removed from Apple Wallet on your other devices.”

You may have read that pulling down on the back of a pass forces a refresh. We could not find that in any Apple document, so we are not telling you to rely on it. Removing and re-adding is the dependable manual route, because a pass you add is downloaded fresh from the issuer.

## How do Wallet pass updates actually work?

Five requests, in order. The phone registers, the issuer pushes an empty notice, the phone asks which passes changed, fetches each one, and compares it with the copy it had.

This is the protocol in Apple’s [Wallet Passes web service reference](https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes) (read 23 September 2026), which we run in production for every Cardr. The endpoints all hang off the pass’s `webServiceURL`; the ones that touch a single pass authenticate with the header `ApplePass` followed by the pass’s `authenticationToken`.

How an Apple Wallet pass update travels, request by request

| Step | Who asks | Request | A good answer | What we observed |
| --- | --- | --- | --- | --- |
| 1. Register | Phone, when the pass is added | `POST /v1/devices/{device}/registrations/{passType}/{serial}` with a push token | 201 new, 200 already registered | We store device, serial and push token; a missing token is refused |
| 2. Push | Issuer, when the pass changes | APNs, to every token registered for that serial | Payload `{}`, signed with the pass certificate | Topic is the pass type identifier; a token Apple rejects as gone is deleted |
| 3. Which changed? | Phone | `GET /v1/devices/{device}/registrations/{passType}?passesUpdatedSince={tag}` | 200 with `serialNumbers` and a new `lastUpdated`, or 204 | No auth token here: the serial is not known yet |
| 4. Fetch | Phone, once per serial | `GET /v1/passes/{passType}/{serial}` with `If-Modified-Since` | 200 with the new .pkpass, or 304 if unchanged | Compared to the card’s last edit, to the second; sent with `Last-Modified` |
| 5. Compare | Phone | None; the device diffs the old and new pass | Silent, or an alert if a changed field has a `changeMessage` | Cardr sets none, so edits land silently |
| Removal | Phone, when the pass is deleted | `DELETE` on the step 1 address | 200 | Registration dropped; no more pushes to that device |

Endpoints and responses from Apple’s [Adding a Web Service to Update Passes](https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes) and [Get the List of Updatable Passes](https://developer.apple.com/documentation/walletpasses/get-the-list-of-updatable-passes); the 304 and `If-Modified-Since` behaviour from the [Wallet Developer Guide](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html). All read 23 September 2026. The last column is Cardr’s own web service.

The design choice that confuses people is step 2. The push carries nothing: Apple says to send “an empty JSON dictionary for the payload”. The older [developer guide](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html) gives the reason: pushes “are not guaranteed to be delivered” and several from the same source “are coalesced into a single notification. If more information is included, it might be lost.” So the push only says *something of this pass type changed*, and the list in step 3 is what actually says what. That list is where most bugs live.

Two limits worth knowing before you design around them. Apple says you can update any information in a pass “except for the authentication token and the serial number”. And “a push notification for a pass update works only in the production environment”, so a pass signed and pushed from a sandbox setup will never update on a phone however correct the rest is.

## Why is there no notification when it updates?

Because no field has a changeMessage. Wallet updates the pass silently unless the field that changed carries one, and then it shows that message.

After fetching the new pass, the device “compares the latest version of the pass against the version it had before to determine which fields have changed. If the value of a field has changed and the field specifies a change message, the device shows the message” ([Wallet Developer Guide](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html)). The [field reference](https://developer.apple.com/documentation/walletpasses/passfieldcontent) (read 23 September 2026) describes `changeMessage` as “a format string for the alert text to display when the pass updates”, which must contain `%@` for the new value, as in `Gate changed to %@`, and adds: “You need to provide a value for the system to show a change notification.”

Two consequences. A change to the strip image, the logo or the barcode can never raise an alert, because only fields carry change messages. And a silent update is not a failed one. Apple’s guide is blunt about the cost of the other choice: “Change messages interrupt the user and must be read immediately.”

Cardr sets no change messages. A business card that buzzes its holder’s lock screen because they fixed a typo in their job title would be the wrong trade, so edits land quietly: the next time you open Wallet, the pass shows what you saved.

## Why did my push not update the pass?

Because a push only starts the chain. Most failures are later: the serial is missing from the list, the pass comes back 304, or the push was signed with the wrong certificate.

Each row below is a failure that looks, from the phone, exactly like “nothing happened”. None of them raises an error a user can see.

Why a pass does not update, from the server’s side

| Symptom | Likely cause | Fix |
| --- | --- | --- |
| Some edits update the pass, others never do | Only some code paths send the push | One shared update hook, called by every change that alters what the pass renders: fields, images, barcode |
| No request from the phone after a push | Push signed with the wrong certificate, wrong topic, or sent to the sandbox | Use the pass type certificate and key that signed the pass, with the pass type identifier as the topic, in production |
| Phone asks, gets 204, nothing changes | The change did not move the pass’s updated time, so the serial is not in the list | Bump the timestamp on every change that alters the pass, including image-only ones |
| Serial is listed, pass comes back 304 | Last-modified compared at the wrong precision, or not bumped | Derive `Last-Modified` and the 304 test from the same stored time |
| Updates arrive once, then stop | `lastUpdated` tags that do not increase, so later changes fall before the phone’s tag | Return a tag later than every earlier one; Apple treats it as opaque but ordered |
| Nothing at all, on every pass | Web service not on HTTPS, or unreachable | Production needs HTTPS; read `POST /v1/log` for the phone’s own error |
| Pass updates but the user never notices | No `changeMessage` on the changed field | Add one with `%@`, if the change is worth an interruption |

Certificate, production-only push and HTTPS from [Apple’s web service reference](https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes); tag ordering from the [Wallet Developer Guide](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html), which says the later tag “must also be later than every earlier tag”. Both read 23 September 2026. The first row is a bug we found and fixed in Cardr.

The first row is ours. On Cardr, one edit route pushed and three did not: changing your link, your photo, or removing your photo all saved correctly, and the saved pass kept the old QR code or the old face until something else touched the card. Nothing reported it, because APNs only tells a device to come and look, and a push that is never sent is indistinguishable from a pass that has not changed. The fix was one shared hook that every route which changes what the pass renders has to call. If your passes update for some edits and not others, look for exactly this.

The cheapest diagnostic is the one most servers leave unread. Wallet posts log messages to `POST /v1/log` on your web service ([Log a Message](https://developer.apple.com/documentation/walletpasses/log-a-message)), and a problem with your server’s answers, an unreachable URL or an unauthorised request usually shows up there first. Our [Apple Wallet pass developer guide](https://cardr.co/apple-wallet-pass-guide) covers signing and the rest of the format, and the [.pkpass viewer](https://cardr.co/tools/pkpass-viewer) shows whether a given pass carries a `webServiceURL` at all, in the browser, without uploading it.

## Does editing a Cardr update my Wallet pass?

Yes. Editing your card updates the pass in your Wallet and your page at cardr.co/yourname, on the free plan. A contact someone already saved from you does not change.

Everything on this page is what happens behind that sentence. Your pass is registered with our web service when you add it, an edit sends the empty push, and your phone fetches the new version. As above, it arrives silently, and it depends on your phone having a connection and Automatic Updates switched on. If a change has not arrived, the steps at the top of this page apply to a Cardr exactly as to any other pass.

What updating cannot do is reach into other people’s phones. Someone who saved your contact last month has a snapshot of it; the contact links back to your page, which does show your current details. The pass is yours, not theirs: they scan its QR code or open your link, and nobody but you ever adds it to Wallet. More on how the whole thing fits together on the [Apple Wallet business card](https://cardr.co/apple-wallet-business-card) page, and on setting one up in [how to add a business card to Apple Wallet](https://cardr.co/blog/how-to-add-business-card-to-apple-wallet-iphone).

## Questions, answered

### How do I refresh an Apple Wallet pass?

Open the pass in Wallet, tap the More or Info button and check Automatic Updates is on, then make sure the phone has a connection. If it is still stale, tap Remove Pass and add it again from the issuer; a newly added pass is always the current version. Apple does not document a manual refresh gesture.

### Where is the Automatic Updates switch on an iPhone?

In the pass’s own menu: open Wallet, tap the pass, then tap the More button or the Info button. Apple says not every option is available on every pass. If there is no Automatic Updates switch at all, the pass was most likely never set up to receive updates.

### Why don’t I get a notification when my pass updates?

Wallet only shows an alert when a changed field carries a changeMessage written by the issuer. Most updates, and all changes to images or barcodes, arrive silently. The pass is still updated; you will see the new version next time you open it.

### Does removing a Wallet pass delete it from my other devices?

Yes. Apple’s iPhone User Guide says that if you delete a pass on your iPhone, it is permanently removed from Apple Wallet on your other devices. Keep the link or email you got it from so you can add it again.

### What does an Apple Wallet pass update push contain?

Nothing. Apple says to send an empty JSON dictionary as the payload, using the same certificate and private key that signed the pass. The push only tells the device that passes of that type changed; the device then asks the server which serial numbers changed and fetches each pass.

### Can Apple Wallet pass updates be tested in the sandbox?

Apple says a push notification for a pass update works only in the production environment. The web service itself can run over plain HTTP during development if you allow it in the device’s developer settings, but production requires HTTPS.

### Does editing my Cardr update my Wallet pass?

Yes. Editing your card updates the pass in your Wallet and your page at cardr.co/yourname, including on the free plan. The update arrives silently and needs a connection. Contacts other people already saved from you do not change, though they link back to your current page.

---

Written by Kai for Cardr (https://cardr.co), a UK digital business card issued as a signed Apple Wallet pass. The card is free; Pro is £12/month, or £9/month billed annually (£108 a year). Prices and plans: https://cardr.co/pricing.md
