What is a pkpass file? How Apple Wallet passes work

A hand holding an iPhone that shows a ticket pass in Apple Wallet
Photo: Airalo on Unsplash
Short answer

A .pkpass file is an Apple Wallet pass in one file. It's a compressed bundle that holds the pass's text, barcode, colours and images, plus a digital signature that proves who made it. When you open one on an iPhone, Wallet shows a preview and an Add button. You can't edit a signed pass without breaking it.

You might find a file ending in .pkpass attached to a booking email, or a website might download one when you tap "Add to Apple Wallet". So what is a pkpass file? It's the format Apple Wallet uses for every boarding pass, event ticket, loyalty card and coupon you add. This article covers what's inside one, how to open it on an iPhone, why it can't be edited, and what your options are when your ticket only comes as a PDF.

What a .pkpass file actually is

A .pkpass file is one complete Wallet pass in a single file. The name comes from PassKit, Apple's framework for passes. Inside, it's a ZIP archive with a different file extension. Websites usually send it with the type application/vnd.apple.pkpass, so Safari knows to hand it to Wallet and doesn't save it as a download.

A pass isn't a picture of your ticket. It's structured data: labelled fields (like "Gate", "Seat" or "Member number"), a barcode value, colours and a few images. Wallet uses that data to draw the pass. That's why passes look clean and consistent, and why Wallet can do things a PDF can't, like show the pass on your Lock Screen near departure time.

What's inside a pkpass file

If you copy a .pkpass file to a computer, rename it to .zip and open it, you'll usually find:

  • pass.json: the pass itself. It holds the pass style, the field labels and values, the barcode message and format, the colours, and optional extras like a relevant date or location.
  • Images: an icon, usually a logo, and sometimes a strip, thumbnail or background image. These often come in more than one resolution for different screens.
  • manifest.json: a list of every file in the pass, each with a checksum (a short fingerprint of its contents).
  • signature: a cryptographic signature of the manifest, made with a certificate Apple issues to the pass's creator.

Looking inside is harmless, but don't try to put the file back together after changing it. The next section explains why that won't work.

Why every pass has to be signed

Wallet only accepts a pass that's signed with a valid certificate from Apple. The signature covers the manifest, and the manifest covers every file. If one character changes in pass.json, the checksums no longer match, and Wallet rejects the pass.

This protects you and the issuer:

  • You can trust that a pass hasn't been changed since its creator signed it.
  • Airlines and venues know their passes can't be quietly edited after they're sent out.
  • Every pass can be traced back to a certificate holder registered with Apple.

The signing key is a secret. It has to stay on a server the pass creator controls. It can't be built into an app, because anyone could pull it out of the app. So any app that makes Wallet passes, including issuer apps and pass-maker apps, needs a server to sign them.

There's one newer exception for passes you make yourself. On iOS 27, Apple says you can edit certain fields and change the look of a pass you created with Wallet's own Create a Pass feature. Tickets signed by an airline or organiser still can't be edited.

How to open a .pkpass file on iPhone

Usually you don't have to do anything special. In Mail, Messages, Safari and most apps, tapping a .pkpass file opens Wallet's preview.

  1. Tap the attachment, link or "Add to Apple Wallet" button.
  2. Check the preview: name, date, seat, flight or member number.
  3. Tap Add in the top corner.
  4. Open the Wallet app to find the pass. If you have a paired Apple Watch, Apple says the pass is added to its Wallet automatically too.

If you saved the file to Files, tapping it there should show the same preview. If nothing happens, or you see an error, download the file again from the original email or website. If it still fails, ask the issuer for a new pass.

Pass styles and what they change

Every pass has a style, set in pass.json, that decides its layout and some of what it does:

  • Boarding pass: flights, trains, buses and ferries, with an origin and destination and a transport icon.
  • Event ticket: concerts, matches, theatre, conferences.
  • Store card: loyalty, gym, library and membership cards.
  • Coupon: offers and discounts.
  • Generic: anything that doesn't fit the others.

A pass can also include a relevant date or location. When it does, Wallet can suggest the pass on your Lock Screen around that time or place. Apple's example is a boarding pass that appears near departure time.

Barcodes inside a pass

The barcode isn't stored as an image. pass.json holds the barcode's message and format, and Wallet draws the barcode itself. Up to iOS 26, Wallet can show four formats: QR, PDF417, Aztec and Code 128. From iOS 27, Apple's developer docs add Code 39, Codabar, EAN-13 and ITF. UPC-A isn't on Apple's list. A pass can also list a backup barcode, so older iPhones show a format they support.

This matters for homemade passes. When a loyalty card's barcode is in a format Wallet can't show, a pass-making app may re-encode the same number in another format. Many scanners still read it, but some tills only accept the original format. Test a pass like that before you count on it.

Static passes and passes that update

A pass from an airline or organiser can include a web service address. With it, the issuer can push a new version of the pass when something changes, like a gate, a seat or a time. Wallet replaces the old pass and may show a notification.

Passes without that link are static: they stay exactly as they were made. Most homemade passes are static, so they won't show delays, gate changes or cancellations. Always check those with the airline, rail company or organiser.

Some tickets aren't in a pkpass file at all. A barcode that rotates or animates every few seconds inside an organiser's app is designed so it can't be copied. A screenshot of it, or a pass made from it, won't scan. Use the organiser's app for those tickets, and bring ID if the ticket rules require it.

When there's no .pkpass at all

Lots of tickets and cards never come as a pass. You might get a PDF, a barcode in an email, or a plastic card. Your options, starting with the official ones:

  1. Look for the issuer's own option. Apple says to look for "Add to Apple Wallet" in an app, email, message or web page. If there isn't one, Apple suggests asking the issuer whether they support Wallet. Airline and organiser apps often add the pass for you.
  2. Use Wallet's Create a Pass (iOS 27). In Wallet, tap Add Card → Create a Pass. Then either create the pass manually from a standard, membership or event template, or make it from a photo or screenshot of a barcode. The photo method needs an iPhone 15 Pro or later with Apple Intelligence. Apple describes this feature as useful for things like library and gym cards that have a barcode but no digital pass.
  3. Use a pass-maker app. These apps read your ticket and make a signed .pkpass for you. Kardin is one example. It suits a ticket that only exists as a PDF, or an iPhone without Apple Intelligence. You share the PDF or a photo to Kardin from Mail, Files or Photos, or scan the barcode with the camera. Kardin reads the first page of a PDF on your iPhone and decodes the barcode in its original format when it's QR, PDF417, Aztec or Code 128. It then fills in fields for a flight, train, bus, event or card pass. You check and edit every field on a review screen before tapping Add to Apple Wallet. Extraction can miss details on messy or small text, so check the review screen carefully.

For the full step-by-step, see how to add a PDF ticket to Apple Wallet. If you're at the door right now, see what to do when your PDF ticket has no Apple Wallet button.

On privacy, because every pass has to be signed on a server, some data has to leave your phone. With Kardin, your files and photos are read on the iPhone and never uploaded. Only the pass's content goes to Kardin's server to be signed: the fields, the barcode value and format, the colours and the date. The server sends the signed pass straight back and doesn't store it. The security page has the details.

Is a pkpass file safe?

A .pkpass file only holds data and images. It can't run code on your phone, and Wallet always shows you a preview before adding anything. Still, think about what the pass contains:

  • Passes in Wallet can be opened without Face ID or your passcode, and they sync to your other devices through iCloud.
  • So never put bank card numbers, PINs, passwords, bank security codes or official ID details into a pass made by a third-party app.
  • Delete passes you no longer need. In Wallet, tap the pass, then the More button, and remove it.

The short version

  • A .pkpass file is a ZIP bundle with the pass data (pass.json), images, a checksum list and an Apple-issued signature.
  • Tap it in Mail, Messages, Safari or Files, check the preview, and tap Add.
  • Changing anything breaks the signature, so fixing a pass means getting or making a new one.
  • Issuer passes can update themselves. Homemade passes are usually static, and rotating barcodes can't be turned into passes.
  • No pass? Check for the issuer's button first, then Wallet's Create a Pass on iOS 27, then a pass-maker app like Kardin for PDFs and photos.

Put your tickets and cards in Apple Wallet

Kardin turns PDFs, photos and scanned cards into real Wallet passes. Your files stay on your iPhone, and there's no account.

Coming soon to the App Store

Frequently asked questions

Can I open a pkpass file on Windows or Android?

A .pkpass file is Apple's format, and Apple Wallet is what opens it. On Windows you can rename a copy to .zip and look at the files inside, but you won't see a usable pass. On Android it depends on the apps you have installed. The simplest fix is to ask the issuer for a version made for your phone.

Can I edit a pkpass file to fix a wrong name or seat?

Not without breaking it. Any change makes the signature invalid, and Wallet will refuse the pass. Ask the issuer for a corrected pass. If you made the pass yourself, make a new one with the right details and delete the old one. Never change the barcode on a ticket.

Why does my iPhone say it cannot add a pass?

This usually means the file is damaged or its signature is no longer valid, for example because the issuer's certificate has expired. Try downloading the file again straight from the original email or website. If it still fails, contact the issuer and ask for a new pass or a different version of the ticket.

Can I send a pkpass file to someone else?

Some passes have a Share button in Wallet. If there isn't one, Apple says the issuer hasn't turned on sharing. A shared ticket has the same barcode as yours, so it doesn't get anyone an extra entry. Many venues accept the first scan only. To give a ticket to someone else, use the organiser's own transfer option.

Does a pass in Apple Wallet work without internet?

Yes. Once a pass is in Wallet, it opens and shows its barcode with no signal, which helps at stadiums and airports. Updates to the pass, like a gate change, need a connection, and so does adding a new pass.

Written with AI assistance and checked against Kardin’s privacy and security documentation. Spotted something wrong or out of date? Tell us at support@kardin.app.

Related reading