Zügli
Turn your public transport tickets into an Apple/Google Wallet passes.
Supported ticket types include:
- VDV - German local transport operators, Deutschlandticket
- UIC - Deutsche Bahn, NS, ÖBB and other long-distance operators, Klimaticket, InterRail
- SSB - Select long-distance operators (e.g. SNCB, VR), NS/DB Keycards
- RSP6 - UK train tickets
- RSP8 - UK Railcards
- SNCF domestic tickets
- ELB - Eurostar
- SwissPass/NOVA - SBB, ZVV, and other Swiss operators (VöV)
- IATA Barcoded Boarding Pass
- BahnBonus vouchers and lounge access codes
If you want your tickets to automatically update when they are renewed you can create an account and add the subscription. Currently, DB, SaarVV, S-Bahn Berlin, and AVV (Aachen) are supported.
If you're having trouble scanning your ticket uploading a picture/screenshot of your ticket usually works better. The decoder on the server is better than the one in your browser.
Upload a picture or a PDF instead
Paste your ticket as hex/text
Have your ticket on a Smartcard?
VDV-KA (German) Smartcards can also be read, click below to start.
Currently, it is not possible to convert Smartcard tickets to Wallet passes.
Read your SmartcardNot working?
Get in touch with a picture of your ticket and I'll see what I can do.
- Fedi: @q@glauca.space
- Email: q@magicalcodewit.ch
Privacy
Your ticket barcode will be stored to allow automatic updates to subscription tickets. Tickets commonly include your name and date of birth - this information is not processed except to generate the pass. Ticket data may be inspected by a human if you ask for help.
API
You can send scanned Aztec barcode contents to this service's API and retrieve PKPass files from it.
API details
POST /api/upload
Content-Type: application/json
{
"barcode_data": "<base64 encoded aztec contents>"
}
---
200 OK
Content-Type: application/json
{
"ticket_id": "EXAMPLE_ID",
"access_token": "EXAMPLE_TOKEN"
}
---
422 Unprocessable Entity
Content-Type: application/json
{
"title": "Invalid barcode",
"message": "This doesn't look like a valid ticket"
}
GET
/api/apple/v1/passes/pass.ch.magicalcodewit.vdv.ticket/EXAMPLE_ID
Authorization: ApplePass EXAMPLE_TOKEN
---
200 OK
Content-Type: application/vnd.apple.pkpass
Content-Disposition: attachment; filename="EXAMPLE_ID.pkpass"
Pass Contents