PassKit pricing and API vs WalletWallet API
PassKit costs from $39.50 a month plus per-pass fees and needs an Apple Developer account. Its 2026 rate card and API, compared with WalletWallet.
PassKit is a wallet-pass platform for loyalty, membership, coupons, tickets, and boarding passes on Apple Wallet and Google Wallet. It bills a monthly platform fee set by the number of team members, from $39.50, plus a fee for every pass on a tiered rate card, and it needs your own Apple Developer account.
WalletWallet creates, updates, and manages Apple and Google Wallet passes from a dashboard or a REST API. It is free up to 1,000 creations and updates a month and $39 a month up to 100,000, with no per-pass fee and no Apple Developer account.
Where PassKit is the better pick, this page says so.
Summary
| PassKit | WalletWallet | |
|---|---|---|
| Entry price | $39.50/mo platform fee for 1 team member, 250 multi-use and 250 single-use passes included | free for 1,000 creations and updates a month, $39/mo for 100,000 |
| Pricing unit | platform fee by team size, plus a fee per stored multi-use pass and per issued single-use pass | creations plus updates per month |
| Active passes | every multi-use pass kept is billed monthly; updates not billed separately | not billed; each creation and update counts toward the monthly total |
| Apple Developer account | required for Apple Wallet passes ($99/year) | not required; optional |
| Team members | priced per member, with roles | Business only ($99/mo) |
| Data location | choose EU (Netherlands) or US at signup | EU at rest, global edge processing |
| NFC | yes | no |
| Trial | 45 days, no payment method | 30 days of every feature, then 1,000 passes/mo free |
PassKit pricing in 2026
PassKit’s rate card has two parts: a platform fee and a pass-volume fee.
Platform fee (per month, by team members; the account owner counts as one, and so does anyone using the PassReader app):
| Team members | 1 | 2 | 3 | 4 | 5 | 6 to 10 | 11 to 20 | Unlimited |
|---|---|---|---|---|---|---|---|---|
| Fee | $39.50 | $59.25 | $75.75 | $89.50 | $99.75 | $114.75 | $159.25 | $249.50 |
Pass volume. Multi-use passes (loyalty, membership, gift, policy) are billed on the number of pass records you keep: records created minus records deleted. Single-use passes (coupons, tickets, boarding passes) are billed on the number issued that month. The first 250 of each are included in the platform fee, then:
| Passes | Multi-use, per pass | Single-use, per pass |
|---|---|---|
| 251 to 2,500 | $0.0450 | $0.0945 |
| 2,501 to 5,000 | $0.0340 | $0.0714 |
| 5,001 to 10,000 | $0.0230 | $0.0483 |
| 10,001 to 25,000 | $0.0162 | $0.0340 |
| 25,001 to 50,000 | $0.0125 | $0.0263 |
| 50,001 to 100,000 | $0.0088 | $0.0185 |
| 100,001 to 500,000 | $0.0042 | $0.0088 |
| 500,001 to 1,000,000 | $0.0021 | $0.0044 |
| 1,000,001 to 5,000,000 | $0.0010 | $0.0021 |
| Above 5,000,000 | $0.0005 | $0.0011 |
PassKit bills monthly in arrears in USD by card, adds VAT or GST where required, and offers no annual plans. Updates and API calls are not billed separately. The 45-day trial needs no payment method and covers unlimited draft projects and test passes; issuing to real customers needs a live project, a payment method, and your Apple signing certificate.
Pricing at common volumes
The two vendors count different things. PassKit charges for every multi-use pass you keep, however often it changes. WalletWallet charges for each creation and update in the month, however many passes you keep. The PassKit figures below use one team member.
| Workload | PassKit | WalletWallet |
|---|---|---|
| 1,000 loyalty cards, updated twice a month | $73.25/mo | $39/mo (Pro) |
| 10,000 loyalty cards, updated twice a month | $340.75/mo | $39/mo (Pro) |
| 25,000 loyalty cards, updated once a month | $583.75/mo | $39/mo (Pro) |
| 100,000 loyalty cards, updated once a month | $1,336.25/mo | $99/mo (Business) |
| 500,000 loyalty cards, updated once a month | $3,016.25/mo | $99/mo (Business) |
| 10,000 event tickets issued a month | $672.13/mo | $39/mo (Pro) |
| Apple Developer account | plus $99/year | $0 |
| 5 team members | platform fee rises from $39.50 to $99.75 | Business, $99/mo |
PassKit bills for the passes you keep and WalletWallet for the creations and updates you send, so frequent updates narrow the gap. 40,000 loyalty cards updated daily is about 1.2 million updates a month, above Business’s 1,000,000, while PassKit charges $731.25 for those cards whatever the update count.
What WalletWallet is

- Dashboard: the Pass Editor designs a pass with live Apple and Google previews. Pass Manager lists every pass, searches by any field value, shows Apple install counts and Google save state, edits and pushes updates, and exports to CSV. Batch import turns a CSV into passes from one design.
- API:
POST,PUT, andDELETEon/api/passes, documented in the docs and in/llms.txtfor AI agents. - Pass features: push on every update, up to 10 lock-screen locations, iOS 27 Featured Actions and the poster layout, barcode or code-less passes, and strip, thumbnail, logo, and wide Google logo images.
- Integrations: an MCP server for Claude and ChatGPT (Claude guide) and Zapier, both in beta.
- Teams: Business accounts invite members. The owner manages the plan, billing, and invites; members do everything else, including reading and rotating the API key.
- Compliance: a signable Data Processing Agreement, a public sub-processor list, and a security overview. Customer and pass data are stored at rest in Cloudflare’s EU region.
PassKit API
PassKit’s developer pages describe the integration:
- Credentials: request account-specific credentials in the PassKit portal; they are emailed to the registered address. Each account uses an assigned API region and host.
- Interfaces: REST and gRPC, an API reference, a Postman collection, and SDKs for Go, C#, Java, PHP, and Python, with QuickStarts built on them.
- Model: you set up a project (program) and a template, then create passes against the template. A template change can update every pass built from it.
- Events: webhooks for pass lifecycle changes, plus connectors in an integrations directory. Zapier and Make are supported as third-party services.
- AI: PassKit documents how to use a coding agent with its QuickStarts; it has not published an MCP server.
WalletWallet creates a pass with one call and no project or template step:
curl -X POST https://api.walletwallet.dev/api/passes \
-H "Authorization: Bearer ww_live_..." \
-H "Content-Type: application/json" \
-d '{
"barcodeValue": "MEMBER-12345",
"barcodeFormat": "QR",
"organizationName": "Corner Coffee",
"logoText": "Corner Coffee",
"primaryFields": [{"label": "POINTS", "value": "420"}],
"secondaryFields": [{"label": "MEMBER", "value": "Sarah K."}]
}'
The response carries the serialNumber, the signed applePass, a googleSaveUrl, and a hosted shareUrl. PUT /api/passes/{serial} updates the pass on every device on both wallets, and DELETE revokes it. Each pass carries its own design, so there is no template to change in one step; to change many passes, send a PUT for each.
Feature comparison
| PassKit | WalletWallet | |
|---|---|---|
| Apple Wallet and Google Wallet | yes | yes |
| Update installed passes with push | yes | yes, PUT on both wallets |
| Location triggers | yes | yes, up to 10 locations |
| NFC (Apple VAS, Google Smart Tap) | yes | no |
| Scanner and redemption app | PassReader | no |
| Visual pass designer | yes | yes, Pass Editor |
| Manage passes without code | yes, portal | yes, Pass Manager |
| CSV import and export | yes | yes |
| Hosted enrolment and data collection pages | yes | no |
| Email distribution | yes | no; share page and links |
| Analytics | yes, portal analytics | per-pass install counts |
| Webhooks | yes | no |
| SDKs | Go, C#, Java, PHP, Python | none; plain REST |
| Zapier | third-party connector | yes (beta) |
| MCP server | not published | yes |
| Revoke passes | yes | yes, DELETE |
| Team roles | Admin, portal, PassReader, certificates, billing | owner and member |
| White-labelled passes | yes; branded data collection pages cost extra | your logo, images, and colors on paid plans |
| Custom pass domain | extra fees | no |
| GDPR DPA | yes, accepted with the terms | yes, signable |
| Security documentation | SOC 2 materials in its trust center | security overview |
When PassKit is the better pick
- You need NFC or a redemption app. PassKit supports NFC passes and ships PassReader for staff validation.
- You want enrolment pages and email delivery handled for you. PassKit hosts data collection pages and sends passes by email.
- You need SDKs, gRPC, or webhooks to wire pass events into other systems.
- You need US data hosting or SOC 2 materials. PassKit lets you choose a US or EU cluster and publishes SOC 2 trust materials.
- You update each pass many times a day. PassKit bills the passes you keep, so the bill does not grow with how often they change.
- You need granular staff roles, such as billing-only or scanner-only access.
When WalletWallet is the better pick
- You want a free plan or a fixed bill. 1,000 passes a month are free, and $39 covers 100,000 creations and updates with no per-pass or per-seat fee.
- You issue short-lived passes. Tickets and coupons are PassKit’s most expensive pass type; WalletWallet prices every pass type the same.
- You want to start with one API call. No project, template, or emailed credentials; the API key is in the dashboard after signup.
- Your team works in the dashboard and your developers in the API. The Pass Editor, Pass Manager, and batch import cover the no-code side, and the same passes are reachable over the API, MCP, and Zapier.
- You want AI agents to create passes. The MCP server lets Claude or ChatGPT create, update, and revoke passes from a prompt.
FAQ
How much does PassKit cost? A platform fee from $39.50 a month for one team member to $249.50 for unlimited members, plus per-pass fees beyond the 250 multi-use and 250 single-use passes included. Multi-use passes start at $0.045 each and single-use passes at $0.0945, falling with volume. An Apple Developer account adds $99 a year.
Does PassKit charge for active passes? Yes. Every multi-use pass you keep is billed each month until you delete it, and every single-use pass is billed in the month it is issued. Updates and API calls are not billed separately. WalletWallet bills no pass for being stored, and counts each creation and update toward its monthly total.
Does PassKit have a free plan? No. It has a 45-day trial with unlimited test passes and no payment method. WalletWallet has a 30-day trial of every feature, then a free plan of 1,000 passes a month.
Does PassKit require an Apple Developer account? Yes. Its help center says: “there is no alternative to creating and managing a Pass Type ID without an Apple Developer account.” WalletWallet signs with its own certificate.
Does PassKit have an API? Yes: REST and gRPC, SDKs for Go, C#, Java, PHP, and Python, a Postman collection, and webhooks. Credentials are requested in the portal and emailed to you.
Where does PassKit store data? On Google Cloud, in either the Netherlands (europe-west4) or Iowa (us-central1), chosen at signup. Accounts cannot move between regions later. WalletWallet stores data at rest in Cloudflare’s EU region.
What are the alternatives to PassKit? WalletWallet, PassNinja, WalletThat, PassSlot, Passcreator, PassEntry, Passmeister, and TryBadge. PassKit alternatives compares their pricing and fit.
Can I migrate from PassKit to WalletWallet? Pass fields, barcodes, images, locations, and updates map to WalletWallet request fields. NFC, PassReader validation, hosted enrolment pages, and webhooks have no equivalent. Passes already installed from PassKit are signed with your certificate through PassKit, so holders install a new pass.
Last verified 2026-09-24 against passkit.com/pricing/rates/, /pricing/faq/, /pricing/whats-included/, /developers/, and help.passkit.com. If something here is out of date, email founder@walletwallet.dev and we will correct it.
Try WalletWallet in 60 seconds
Sign up with just an email and verification code (no card), then generate your first signed .pkpass with one curl. Free tier covers 1,000 passes/month, indefinite.