One API for Apple and Google Wallet passes

Managed signing — skip Apple Developer enrollment and Google service-account setup

issue-pass.ts
const { apple, google } = await pf.passes.generate({ template_id: "tmpl_gold", serial_number: "MBR-001", wallet_type: "both", data: { name: "Jane" } })
How It Works

Three steps to your
first wallet pass.

From zero to a pass in your user's wallet in under 10 minutes. No Apple Developer account gymnastics required.

01

Sign up

Create a free account in 30 seconds. Pick "We handle signing" to skip Apple Developer enrollment entirely. Or upload your own .p12 if you've already got one.

02

Design your template

Visual builder with side-by-side Apple + Google preview. Pick a preset (gym, coupon, event ticket, boarding pass) or start blank. Tap a field on the preview, the form scrolls to it.

03

Generate and share

One call returns both wallets. Drop the share link into WhatsApp, SMS, email, or paste the QR onto a receipt. Push updates land on the lock screen.

Features

Everything you need.
Nothing you don't.

A complete API for creating, distributing, and managing wallet passes — with a visual dashboard for your non-technical team.

Managed signing

No Apple Developer account. No Google service account. We sign with our credentials by default — bring your own anytime.

Both wallets, one call

Pass wallet_type: "both" and get an Apple .pkpass + a Google save URL in parallel. One template, two platforms.

Visual template builder

Side-by-side Apple + Google preview. Tap a field on the preview, the form scrolls to it. Eight presets to start from.

Built-in distribution

Every pass gets a public share page with QR code and Add-to-Wallet buttons for both platforms. Zero delivery infrastructure.

Real-time updates

PATCH a pass and APNs pushes silent refresh to Apple, Google’s API pushes to Android. Loyalty balance changes on the lock screen.

Validation + event webhooks

Pre-generation validation (HMAC-SHA256, fail-closed) for fraud checks. Event webhooks for every lifecycle stage, with retry.

Distribution

One link.
Every channel.

Every pass you generate comes with a universal link. Share it however your users expect to receive it — we handle platform detection and delivery.

No per-delivery fees. No channel lock-in. Your pass link is a plain URL — plug it into any messaging system, CRM, or automation tool you already use.

✉️

Email

Embed in any ESP — Resend, SendGrid, Postmark.

💬

SMS

Send via Twilio, MessageBird, or your own gateway.

📱

WhatsApp & RCS

Native rich links. No competitor supports this.

📷

QR Codes

Print on receipts, posters, packaging, signage.

📲

In-App

PassFast SDK or web download. Universal.

Pricing

Simple pricing for wallet passes

$0.015 per active pass per month. Apple + Google for the same pass count as one. First 100 generates free (once).

$0.015/active pass / month

$0.015 per active pass per month. Apple + Google for the same pass count as one. First 100 generates free (once).

  • Active means not voided or deleted — expired passes still count until you void them
  • After 100 free generates, add a card to keep creating
  • Dual wallet = one billable pass
  • No seats, tiers, or minimums

Don’t want next month’s charge? Void or delete passes you no longer need.

Ready to ship your
first wallet pass?

Get your API keys in 30 seconds. No credit card required. 100 free passes for life — enough to build, test, and launch.

Start for free →Read the docs