Safari refuses to download the pkpass file, or it downloads as a text blob, or the Add to Apple Wallet sheet never appears. The pkpass format is supposed to be the path of least resistance for Apple Wallet, so when Safari trips up the culprit is almost always a server-side header or a Safari setting.
Here is what Safari actually expects from a pkpass URL, the most common server misconfigurations, the iPhone settings worth checking, and a Mac to iPhone workaround that can help when the underlying .pkpass file is valid.
What Safari Expects from a pkpass URL
Apple Wallet's developer guide is explicit about how a pkpass file must be served. Safari hands the file to Apple Wallet only when the response matches the spec.
Correct MIME Type
Apple's Wallet developer guide says Mail and Safari expect application/vnd.apple.pkpass. Anything else (text/html, application/octet-stream) typically breaks the handoff.
Content-Disposition
Content-Disposition: attachment; filename="pass.pkpass" is a practical server recommendation. It is not an Apple spec requirement, but inline disposition can show the raw file.
GET Request
The download URL must respond to a GET request. POST-only endpoints fail because Safari follows links as GET.
iOS 6 or Newer
Pass support shipped with iOS 6 (then called Passbook, renamed Wallet in iOS 9). The .pkpasses bundle format (multiple passes in one file) requires iOS 15 or newer.
For a deeper look at the file format, see what is a pkpass file.
Server side, not Safari
How to Tell What Safari Is Receiving
A quick check tells whether the pass is broken or the server is misconfigured.
- Tapping the link shows an Apple Wallet preview sheet
- Add to Apple Wallet button appears in the top right
- File downloads silently and Wallet opens
- Page loads with garbled binary text
- Safari prompts to download but the file ends up as .zip or .html
- Long press, Download Linked File saves an unusable blob
- Page redirects through an OAuth flow that strips the file
iPhone Side: Safari Settings That Block Downloads
Even with a correctly served pkpass, a few iPhone settings can block the download.
- Private Browsing: Safari Private mode sometimes refuses to hand off downloads to Apple Wallet. Open the link in a regular tab.
- Content Blockers: Aggressive content blockers that strip script tags can break the download flow when issuers use JavaScript-driven download links. Disable the blocker for the issuer's domain.
- Safari Downloads location: Settings, Apps, Safari, Downloads. Set to On My iPhone or iCloud Drive. A misconfigured location can silently fail.
- Storage full: A nearly full iPhone refuses new downloads. Free a few hundred megabytes and retry.
- Active VPN: Some VPNs route Wallet verification traffic through regions where the issuer's server rejects the request.
Chrome, Firefox, and other iOS browsers
Skip the broken download
NeatPass makes it easy to convert any ticket, pass, or loyalty card to Apple Wallet.
Workaround 1: Open in Apple Mail
If Safari struggles with the URL, sending the link to yourself and opening it in Apple Mail often works. Mail's built-in handler routes pkpass attachments straight to Wallet.
Send the link to yourself
Open in Apple Mail
Tap Add to Apple Wallet
Workaround 2: Download on Mac, AirDrop to iPhone
A useful workaround when Safari on iPhone refuses the download. Mac browsers can save a pkpass to disk, and AirDropping a valid .pkpass file from Mac to iPhone can hand it directly to Apple Wallet. This cannot fix a corrupt HTML, ZIP, or blob file renamed as .pkpass.
Download on Mac
AirDrop to iPhone
Accept on iPhone
For more on transferring barcodes and passes between devices, see clipboard barcode from Mac to iPhone and the import methods overview.
Workaround 3: Capture the Barcode and Rebuild
If the source pkpass is broken at the issuer (expired certificate, malformed JSON), no client-side fix works. The pragmatic path is to take the barcode from the original ticket, screenshot, or PDF and create a fresh Wallet pass.
NeatPass reads barcodes from screenshots, PDFs, and the camera, then issues a clean PassKit-signed pass with the same scannable data. The barcode payload is preserved, so the new pass scans identically at any reader. The privacy model is documented in the privacy FAQ and the pass works without internet (offline mode).
Barcode data fidelity
For supported barcode formats during this rebuild, see supported barcodes and adding to Wallet.
FAQ
Build a clean Wallet pass
DownloadYour Pass in Wallet
Safari is usually right when it refuses a pkpass download. The file is misconfigured at the source, and the right fix is either to nudge the issuer or to bypass the broken delivery with AirDrop, Apple Mail, or by rebuilding the pass from the barcode.
For passes that simply will not install once they are on the device, see the Wallet issues guide.
