Passmint
TemplatesIntegrationsDocsPricing
Log inGet started
Passmint

Apple and Google Wallet passes from one API. Built for people who ship.

  • GitHub
  • X
Product
  • Pass Designer
  • Developers
  • Distribution
  • Analytics
  • Templates
  • Integrations
  • Pricing
Resources
  • Free tools
  • Wallet card generator
  • pkpass validator
  • Pass anatomy
  • Live demo
  • Blog
  • Glossary
  • Compare
Developers
  • Documentation
  • API reference
  • Node SDK
  • Webhooks
  • MCP server
Company
  • Changelog
  • About
  • Contact
  • Support
  • Security
  • Terms
  • Privacy

© 2026 Passmint.

Apple Wallet & Google Wallet, one API.

Product · Developers

One API. Both wallets. Zero .p12 files.

One request issues the pass for Apple and Google Wallet and hands back a link to each. A typed Node SDK, signed webhooks, and Passmint holding the key for your own Pass Type ID. The whole PassKit ceremony, reduced to a POST.

Get started freeRead the docs
server.tsTest mode
await passmint.passes.update(pass.id, {
  fieldValues: { count: "8 / 10" },
})
200 OK
{
  "id": "pass_8d2kq9vx4m",
  "field_values": { "count": "8 / 10", … }
}
Blackbird Coffee
Punches
8 / 10
Member
Ana García
Next reward
Free latte
Blackbird Coffee
Punches
8 / 10
Member
Ana García
Next reward
Free latte
Pushed to Wallet

Built like the APIs you already like

REST resources, a typed SDK, signed webhooks and request logs, with the Apple and Google plumbing handled behind one endpoint.

await passmint.passes.create({
  templateId: "tmpl_ironworks",
  holderName: "Jordan Reyes",
})
Iron Works
Member
Jordan Reyes
Member ID
IW-4821
Tier
Unlimited
Member Since
Jan 2024
Expires
Dec 31, 2026
download_url
Iron Works
Gym membership
Member
Jordan Reyes
Member ID
IW-4821
Tier
Unlimited
Member Since
Jan 2024
Expires
Dec 31, 2026
google_wallet_url

One call, both wallets

POST /v1/passes signs the .pkpass and creates the Google Wallet object in the same request. The response carries download_url for Apple, google_wallet_url for Google, and a hosted url that picks the right one for whoever opens it.

$ npm install @passmint/node
Node 20+BunDenoTypeScript
Idempotency-Key auto
429 · 5xx retried w/ backoff

A typed SDK that retries safely

@passmint/node ships typed resources and errors, retries 429s and 5xx responses with backoff, and adds an idempotency key to every create and update so a retry never issues twice.

POST /hooks/passmint
Passmint-Signature: t=…,v1=…
pass.issued200
pass.added_to_wallet200
pass.update_pushed200
pass.removed200

Signed webhooks

Subscribe to pass.issued, pass.added_to_wallet, pass.removed and more. Every delivery is HMAC-SHA256 signed, and constructEvent() verifies and parses it in one call.

whd_… · pass.added_to_wallet

Attempt 1now503
Attempt 2+30s503
Attempt 3+5m200
Attempt 4+30m
Attempt 5+2h
Attempt 6+12h
Attempt 7+24h

Retries you can see

A failed delivery is retried up to seven times, backing off from 30 seconds to 24 hours. Delivery history and request logs are in the dashboard; replay or backfill deliveries through the API.

TestLive

API key

pmk_test_4f9a…

Shared Passmint certificate

Test and live keys

pmk_test_ keys issue test passes on Passmint's shared certificate; pmk_live_ keys sign with your own. Passes stay separate per mode, and templates are shared by both.

Pass Type ID

pass.com.blackbird.loyalty

Private key

Held by Passmint

WWDR

Detected

You upload

.cer from Apple

Expires

in 14 days

Expiry reminder emails (days left)

3014710

Certificates without the ceremony

Live Apple passes are signed with a Pass Type ID from your own Apple Developer account. Passmint generates and holds the private key, so you swap a signing request for Apple's .cer. The WWDR intermediate is detected for you, and expiry reminders arrive by email.

await passmint.passes.update(id, {
  fieldValues: { stamps: "7" },
})
B

Blackbird Coffeenow

You now have 7 stamps

Change a field, every phone updates

Updating a pass re-signs it, pushes installed Apple passes over APNs and patches the Google Wallet object. Give a field a changeMessage and Apple Wallet shows the new value on the lock screen.

Changelog

Automatic delivery retries and template republish

Pass updates that hit a temporary Apple or Google error now retry by themselves, and a template change can be pushed to every pass already issued from it.

Oct 8, 2026

Google Wallet loyalty balance

Store card templates can show a field as the native Google Wallet balance, like "Stamps: 6 / 10", and a field as the card holder's name.

Oct 8, 2026

Fix for Apple Wallet update notifications

Apple Wallet passes now receive update notifications reliably again.

Oct 1, 2026

Try a live pass on your own phone

The new live demo puts a real pass in your Apple Wallet and lets you push updates to it from the browser, with no account required.

Jul 6, 2026

View all

Explore the platform

Pass Designer

Design passes in the browser. No code, no deploys.

Distribution

One link that opens the right wallet, plus a QR code for every pass.

Analytics

The full pass funnel, from issue to wallet, in the dashboard and API.

  • DocumentationQuickstarts, API reference, and SDK guides.
  • SecurityHow Passmint handles certificates, keys, and data.

First pass on your phone in under two minutes.

Get started freeTry the live demo

Free for 10 active passes. No card required.

Event Ticket
Event
Midnight Sessions
Doors
Fri, Mar 21 · 8:00 PM
Venue
Berghain, Berlin
Section
Floor
Seat
GA
DevSummit '26
Attendee
Sarah Chen
Role
Staff Engineer
Company
Linear
Track
All Access
Dates
May 12–14, 2026
Ship Weekly
Student
Maya Patel
Cohort
Cohort 7
Instructor
Alex Stuart
Starts
Apr 6, 2026
Ends
May 18, 2026
Iron Works
Member
Jordan Reyes
Member ID
IW-4821
Tier
Unlimited
Member Since
Jan 2024
Expires
Dec 31, 2026
Blackbird Coffee
Punches
7 / 10
Member
Ana García
Next reward
Free latte
Northside Goods
Offer
20% off
Code
WALLET20
Expires
Apr 30, 2026
Hauser Museum
Admission
Annual Member
Name
Robin Hayashi
Valid through
Mar 31, 2027
Current exhibition
Light & Matter
Members
Member
Sam Okafor
Tier
Founding
Member ID
M-0142
Member since
Feb 2026
Maison Meridian
Room
1204
Guest
Jonas Lindqvist
Check-out
Sun, Apr 12 · 11 AM
Floor
12
Breakfast
7–11 AM
Aster & Vine
Balance
$50.00
For
Sam Rivera
From
Priya
The Supper Club
Member
Claire Fontaine
Tier
Founding table
Since
2023
Tonight
Chef's welcome pour
Powder Peak
Pass holder
Elias Moreno
Pass
Full season
Valid thru
Apr 20, 2026
Mountain
All lifts
Parking
Lot A
Still Point Studio
Classes left
6 of 10
Member
Nora Adeyemi
Expires
Jun 30, 2026
Northgate University
Student
Wei-Lin Chen
Program
Computer Science
Class of
2028
Student no.
N2028-4417
Status
Enrolled
Metro District
Valid through
March 2026
Zones
1–3
Rider
Adult
Event Ticket
Event
Midnight Sessions
Doors
Fri, Mar 21 · 8:00 PM
Venue
Berghain, Berlin
Section
Floor
Seat
GA
DevSummit '26
Attendee
Sarah Chen
Role
Staff Engineer
Company
Linear
Track
All Access
Dates
May 12–14, 2026
Ship Weekly
Student
Maya Patel
Cohort
Cohort 7
Instructor
Alex Stuart
Starts
Apr 6, 2026
Ends
May 18, 2026
Iron Works
Member
Jordan Reyes
Member ID
IW-4821
Tier
Unlimited
Member Since
Jan 2024
Expires
Dec 31, 2026
Blackbird Coffee
Punches
7 / 10
Member
Ana García
Next reward
Free latte
Northside Goods
Offer
20% off
Code
WALLET20
Expires
Apr 30, 2026
Hauser Museum
Admission
Annual Member
Name
Robin Hayashi
Valid through
Mar 31, 2027
Current exhibition
Light & Matter
Members
Member
Sam Okafor
Tier
Founding
Member ID
M-0142
Member since
Feb 2026
Maison Meridian
Room
1204
Guest
Jonas Lindqvist
Check-out
Sun, Apr 12 · 11 AM
Floor
12
Breakfast
7–11 AM
Aster & Vine
Balance
$50.00
For
Sam Rivera
From
Priya
The Supper Club
Member
Claire Fontaine
Tier
Founding table
Since
2023
Tonight
Chef's welcome pour
Powder Peak
Pass holder
Elias Moreno
Pass
Full season
Valid thru
Apr 20, 2026
Mountain
All lifts
Parking
Lot A
Still Point Studio
Classes left
6 of 10
Member
Nora Adeyemi
Expires
Jun 30, 2026
Northgate University
Student
Wei-Lin Chen
Program
Computer Science
Class of
2028
Student no.
N2028-4417
Status
Enrolled
Metro District
Valid through
March 2026
Zones
1–3
Rider
Adult