Kardin is built around one idea: your tickets, PDFs and photos don't need to leave your iPhone for you to get a Wallet pass. Here's exactly what happens to your data, step by step, and where the limits are.
The short version
- Files, photos and camera images are read on your iPhone and never uploaded.
- Only the content of the pass you confirm is sent to our server, because Apple requires passes to be signed there.
- The server signs the pass, sends it back and stores nothing. There's no account.
- No analytics, ads or trackers in the app.
Reading a ticket
When you scan, import a PDF, choose a photo or share a file to Kardin:
- The barcode is decoded with the iPhone's built-in barcode reading. It's never guessed, generated or "corrected" by AI: one wrong character and a ticket fails at the gate.
- The text comes from the PDF's own text layer, or from Apple's on-device text recognition for photos and scans. There's no cloud OCR and no AI model.
- The details (dates, times, seats, gates, venues, names) are picked out by rules running on your iPhone, and the colours come from the image.
- You review and edit everything on the review screen before anything is created.
The original file stays where it was. Kardin keeps a small temporary image in its own cache while you review, which iOS clears over time.
Signing the pass
Every Apple Wallet pass has to be signed with a certificate issued to the app's developer, and the private key for that certificate must never be inside an app: anyone could extract it and make passes in our name. So signing happens on our server:
- When you tap Add to Apple Wallet, the app sends the pass's content only: the labels and values on the pass, the barcode value and format, the colours and the Lock Screen date. Not the file, not the photo, not anything you didn't see on the review screen.
- The request travels over HTTPS. The server checks it (lengths, formats, colours), signs the pass with a fresh, random serial number, and sends the finished pass back.
- Nothing is written to a database or file. There's no account, so nothing could be linked to you anyway. Our host, Vercel, processes the connection's IP address to deliver the response, as any web host does.
- Your iPhone shows Apple's own Add to Apple Wallet screen, and the pass goes into Wallet only if you confirm.
On your iPhone
- Your pass list: Kardin keeps the details of passes you've added (not the original files) on your iPhone, so you can open them in Wallet, make corrected copies or delete them. It's stored in the app's private storage, which iOS protects with your device's encryption.
- App lock: you can require Face ID, Touch ID or your passcode to open Kardin (Settings → Require Face ID). Face ID itself is handled by iOS; the app only learns whether it succeeded.
- Deleting: delete a pass from the Home screen (and choose whether to remove it from Wallet too), remove all passes in Settings, or delete the app.
What Kardin can't protect against
- Apple Wallet's own rules. Once a pass is in Wallet, Apple Wallet controls it: passes can be opened without Face ID, may be suggested on the Lock Screen, and sync to your other devices through iCloud. That's why Kardin isn't for bank cards, PINs, passwords or ID documents.
- What's on the pass. Anyone who can see your unlocked iPhone, or your Lock Screen when a pass is suggested, can see the pass's details and barcode, just like the paper ticket.
- The organiser's checks. A pass made with Kardin has the same barcode as the original. Whether it's accepted is up to the venue, airline or store.
- Mistakes in reading. Extraction is automatic and can be wrong; the review screen is where you catch it.
Privacy
The full details, including your rights and the website, are in the privacy policy.
Reporting a vulnerability
If you find a security problem in the app, the pass-signing service or this website, please email support@kardin.app with "Security" in the subject. We'll reply as quickly as we can, and we won't take action against good-faith research that avoids harming users and gives us reasonable time to fix the issue.