Passmint
TemplatesDocsPricingBlog
Log inGet started
Passmint

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

Product
  • Pass Designer
  • Developers
  • Distribution
  • Analytics
  • Templates
  • Pricing
Developers
  • Documentation
  • API reference
  • Node SDK
  • Webhooks
Company
  • Changelog
  • About
  • Contact
  • Support
  • Security
  • Terms
  • Privacy
Social
  • GitHub
  • X

© 2026 Passmint. Built for indie makers.

Apple Wallet & Google Wallet, one API.

E-commerce & payments

Put a wallet loyalty card in every Square customer's pocket

Counter sales rarely give you a way back to the customer. Issue an Apple Wallet or Google Wallet loyalty card on each Square payment — points and visits on the card, your shop on their home screen.

Start freeRead the docs →
Apple & Google WalletNo-code via ZapierFree to start
Square
New Customer / Completed Payment
via Zapier
Passmint
Create Pass
Loyalty card

What you can do

A few ways teams put Square and Passmint to work together.

Issue the card on the first Square payment, then add a second Zap on completed payment that runs Find Pass (by holder email) → Update Pass to add points each time the customer pays. The balance climbs on the card in their wallet with every visit — no fresh card, no reprint, and the update is pushed to their phone the moment the sale clears.
Run a classic 'buy 9, get the 10th free' card by tracking a visits count instead of points. Create Pass sets visits: 1 on the first sale; a Find Pass → Update Pass Zap increments it on each return. The card shows the running tally — the digital version of the cardboard punch card every café counter already keeps by the till, minus the stamp that ends up at the bottom of a bag.
Trigger on Square's new-customer event and issue a coupon-style card with a one-time perk — '20% off your next visit' or 'free pastry on us'. The offer lives on their home screen instead of a receipt they'll lose, giving a first-time walk-in a concrete reason to come back to the counter a second time.
Use the payment amount from the Square sale to set a tier field — Silver, Gold — on the card, and re-evaluate it with Update Pass as a customer's spend grows. Higher-spending regulars carry a visibly better card, and you can route perks by tier without anyone managing a separate loyalty database.

Set it up

One Zap links the two — live in a few minutes, no code involved.

  • A Passmint account and an API key (pmk_live… or pmk_test…), from Developers → API Keys.
  • A Passmint loyalty (store-card) template — branded with your shop name, colours, and logo. Note its field names (e.g. points, visits, tier): the Field Values keys you map must match them exactly.
  • A Zapier account (the free plan is enough to build and test this).
  • A Square account taking payments in person (Square Point of Sale or a Square Reader). Collecting the customer's email at checkout is recommended so the card can be delivered and tied to that customer for later point top-ups.

In Zapier, add Passmint as a connected app and paste your API key when prompted. Zapier verifies it against your account immediately, so you'll know the connection works before building the rest of the Zap. Use a pmk_test… key while you're setting things up behind the counter.

Create a new Zap and choose Square as the trigger app. Pick the event that should hand out a card — typically a new customer being added, or a payment completing. Connect your Square account and select the location you want to watch if you run more than one. Send a test so Zapier can pull a real sample and learn the customer and payment fields.

TODO(verify): Confirm Square's exact trigger name for 'new customer' and/or 'payment completed' in Zapier, whether it asks you to pick a Square location, and which customer fields (email, name) the sample actually returns — in-person sales don't always capture an email.

Add an action step, choose Passmint, and select Create Pass. Pick your loyalty store-card template from the dropdown — Zapier loads your templates automatically, no IDs to copy. Then map Holder Email and Holder Name from the customer on the Square sale so the card is delivered to them and shows their name.

In Field Values, set the loyalty data shown on the card. The key on the left must exactly match a field name in your Passmint template (e.g. points, visits, tier); the value on the right comes from the Square sale. For a brand-new customer this is usually a starting balance — points: 10 for a first-visit bonus, or visits: 1 to begin a punch card. Keys that don't match a template field are silently ignored.

TODO(verify): On your real loyalty template, confirm the Field Values keys you reference (points / visits / tier) exist as field names character-for-character. Also confirm which Square sale amount or line-item value, if any, you want to drive the starting points.

Run the Zap against your test sample, then ring up a small real transaction on Square. Check that a card is created in Passmint and the pass URL comes back, and open the pass on a phone to confirm your branding, the customer's name, and the starting points or visit count all look right at the counter.

Switch your API key to pmk_live…, turn the Zap on, and the next paying customer leaves with your card in their wallet. To grow a balance on repeat visits rather than issue a fresh card each time, add a second Zap: on a new payment, run Find Pass (by holder email) → Update Pass to push the new points or visit count straight to the card already in their wallet — see the variations below.

Questions

The details teams check before switching the Zap on.

The card is still created — holder email is optional on Create Pass — but without it you lose automatic delivery and the ability to find and top up that customer's card later. For in-person sales, the practical fix is to prompt for an email at the Square reader, or add a Zapier filter so the Zap only runs when an email is present.
The basic Zap does — it's Create Pass on each trigger. For loyalty you almost always want one card per customer that grows over time, so pair it with a second Zap: Find Pass (by holder email) → Update Pass adds points or a visit to the existing card instead of issuing another one. Use a Zapier filter on the first Zap to only create a card for genuinely new customers.
Yes. If your Square account covers several locations, the trigger can be scoped to one location or watch all of them; issue the same template everywhere, or branch the Zap to a per-location template. The wallet card's location relevance then surfaces the right shop on the customer's phone as they move between them.
Wallet passes support location relevance, so a customer's card can surface on their lock screen when they're near your shop — exactly the re-engagement nudge a counter sale never gives you. You set the relevant location on the Passmint template; the Zap just issues the card.
Only the Field Values keys do. Keys like points, visits, or tier must match the field names in your Passmint loyalty template character-for-character, or those values are silently dropped. Holder Email and Holder Name map to their own fields. Which Square data you pull into each value is up to you.
Zapier is the fastest way to get cards going out from your register today. Once you're issuing thousands of loyalty cards, want points credited the instant a payment clears without per-task costs, or want to drive balances straight from your own POS or customer database, call the Passmint API directly — POST /v1/passes and the update endpoints, or the @passmint/node SDK. Same wallet cards, same live updates, full control.

Related integrations

Shopify

Drop a branded wallet loyalty card into every new customer's phone right after they buy.

Stripe

Issue a membership pass on a new subscription, then sync it through the whole lifecycle.

WooCommerce

Issue a loyalty pass on every new WooCommerce order.

PayPal

Issue a wallet pass on every completed PayPal payment.

Issue your first pass from Square today

Free for your first passes. No Apple or Google certificates to manage, no code to write.

Start freeExplore the API →