How to Create an Apple Wallet Pass with ChatGPT
Add WalletWallet to ChatGPT as an MCP connector and create, update, and revoke Apple Wallet and Google Wallet passes by describing them. No template, no code.
ChatGPT can issue an Apple Wallet pass once it has a connector that knows how to build one. WalletWallet is that connector: a remote MCP server ChatGPT signs in to with OAuth. After that, a message like “create a loyalty card for Bayroast Coffee” comes back with a link that installs the card in Apple Wallet on an iPhone and in Google Wallet on Android, and later messages update or revoke the same card.
This guide sets the connector up in ChatGPT, creates a card, puts it on a phone, changes it, and revokes it. The same steps apply to a membership card, an event ticket, or a coupon. The Claude version of this guide covers the same loop from claude.ai.
Before you start
- A ChatGPT account with developer mode. Custom MCP connectors live behind developer mode, which is available on Plus, Pro, Business, Enterprise, and Education accounts on the web. On a workspace plan an admin turns it on first. The free ChatGPT plan cannot add a connector today.
- A WalletWallet account. Free includes 1,000 passes a month. A pass ChatGPT creates counts the same as one made in the dashboard or through the API.
No software gets installed. The server runs at
https://api.walletwallet.dev/mcp and ChatGPT holds an OAuth grant, not your
API key.
1. Add WalletWallet to ChatGPT
- Open Settings, then Security and login, and turn on Developer mode.
- Go to chatgpt.com/plugins and click +.
- Name it WalletWallet, paste
https://api.walletwallet.dev/mcp, pick OAuth, and create the connection. - ChatGPT opens the WalletWallet sign-in. Sign in and approve access.
- In a new chat, open the tools menu and add WalletWallet.
The grant covers seven tools and nothing else. ChatGPT cannot change your plan, billing, or API key, and the Integrations page in your dashboard disconnects it at any time.
What the connector gives ChatGPT
| Tool | What it does |
|---|---|
create_pass |
Builds a pass for Apple Wallet and Google Wallet and returns a share link |
update_pass |
Replaces a pass and pushes the new version to every phone that holds it |
revoke_pass |
Voids a pass so it stops scanning |
get_pass |
Status of one pass: dates, installs, Google save link |
get_usage |
Passes used this month and the plan allowance |
list_passes |
Pages through the passes on the account (Pro) |
get_pass_body |
Reads the stored contents of a pass (Pro) |
ChatGPT chooses the tool from your message and shows a “Used WalletWallet” line above its reply when it does.
2. Create the card
With WalletWallet switched on in the chat:
Create a loyalty card for Bayroast Coffee. Dark black, a stamp counter out of 10, member name Nora Hale, member number 30427. Give me the share link.
ChatGPT turns that into a create_pass call:
{
"logoText": "Bayroast Coffee",
"organizationName": "Bayroast Coffee",
"cardLabel": "LOYALTY CARD",
"title": "Nora Hale",
"colorPreset": "dark",
"primaryFields": [
{ "label": "STAMPS", "value": "0 / 10", "changeMessage": "Stamps: %@" }
],
"secondaryFields": [
{ "label": "MEMBER NO.", "value": "30427" }
],
"barcodeFormat": "QR",
"barcodeValue": "30427"
}
Three things in that call came from the model rather than the prompt, and all
three are the right choice: the QR code encodes the member number so a
scanner at the counter reads it, changeMessage on the stamp field means a
later update shows on the iPhone lock screen, and colorPreset: "dark" is
the nearest of the six presets to “dark black”.
The server returns:
{
"serialNumber": "41e4b0dd-d5b8-49de-9e8f-76703c36cc77",
"shareUrl": "https://api.walletwallet.dev/p/41e4b0dd-d5b8-49de-9e8f-76703c36cc77",
"googleSaveUrl": "https://pay.google.com/gp/v/save/eyJhbGciOi...",
"applePassUrl": "https://api.walletwallet.dev/p/41e4b0dd-d5b8-49de-9e8f-76703c36cc77/apple.pkpass"
}
ChatGPT answers with the share link. The Apple pass and the Google Wallet pass came out of the same call; nothing else needs to happen for Android.
3. Send it to a phone
The shareUrl is a hosted install page branded from the pass. Text or email
it to the customer:
- iPhone: Add to Apple Wallet installs the signed
.pkpass. - Android: Save to Google Wallet adds the same card.
- Desktop: a QR code the customer scans with their phone.
The link stays valid for the life of the pass, so “what was Nora’s link again?” in a later chat returns the same URL.
4. Change the card after it is installed
Nora bought a coffee. Add a stamp.
ChatGPT calls update_pass with the card’s fields and the counter at 1 / 10.
Apple Wallet pushes the new version to the iPhone and puts “Stamps: 1 / 10”
on the lock screen, because the field carries a changeMessage. Google
Wallet refreshes the card where it sits.
update_pass replaces the whole pass, so ChatGPT resends every field. Inside
the conversation that created the card it already has them. To edit a card
from an older chat it reads the stored body first with get_pass_body, which
is a Pro tool. Each update counts as one pass on your plan.
Campaign-style changes work the same way at a larger scale: “put ‘Double
stamps this weekend’ on every active Bayroast card” makes ChatGPT list the
cards with list_passes (Pro) and update each one.
5. Revoke a card
Nora moved away. Revoke her card.
revoke_pass voids the pass in place. Neither wallet can remove a pass from
a phone remotely, so instead it greys out, loses its barcode, and stops
scanning. Revokes are free.
Free and Pro on the ChatGPT side
Everything above runs on a Free WalletWallet account: 1,000 passes a month,
both wallets, updates that push, and the five tools that create, update,
revoke, check, and count passes. Pro is $39 a month for 100,000 passes and
adds a custom hex color, your own logo, strip, and icon images, the iOS 27
poster layout with a background image, and featured action buttons, plus the
list_passes and get_pass_body tools.
Ask ChatGPT for a Pro field on a Free account and the server declines that field with an upgrade message, which ChatGPT repeats to you.
How this differs from template-based connectors
Other wallet-pass MCP servers sit on a template system: the pass is created “from template X”, so a template must already exist in that vendor’s web app, and setup usually asks for an API key rather than an OAuth sign-in. Google’s own Wallet MCP server searches its docs and manages issuers and classes, and does not create a pass.
WalletWallet renders the pass from the fields ChatGPT sends. No template, one call for both wallets, and a flat monthly allowance instead of a meter per download.
Frequently asked questions
Can ChatGPT create an Apple Wallet pass?
Yes. Add WalletWallet as an MCP connector in ChatGPT’s developer mode, describe the pass in a chat, and ChatGPT creates it and returns an install link. The same call produces a Google Wallet pass.
Does this work on the free ChatGPT plan?
No. Custom MCP connectors need developer mode, which is on Plus, Pro, Business, Enterprise, and Education accounts. The WalletWallet side is free.
Do I need to design a template first?
No. The fields come from your message and the server renders the pass.
Does the pass work in Google Wallet?
Yes. create_pass returns a share link that installs on either platform and
a direct Google Wallet save link.
Can I do this from Claude instead?
Yes, on any claude.ai plan. The Claude guide walks through it.
What can ChatGPT do with my WalletWallet account?
Only what the seven tools allow. It cannot touch your plan, billing, or API key, and disconnecting it from the dashboard ends its access.
Create a free account, add the connector, and ask ChatGPT for your first card.
Build your first wallet pass
Turn one JSON request into a pass that installs in Apple Wallet and Google Wallet, with live updates that reach both.