WalletWallet API
Back to Blog

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.

2026-09-17 By Alen Todorov

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

  1. Open Settings, then Security and login, and turn on Developer mode.
  2. Go to chatgpt.com/plugins and click +.
  3. Name it WalletWallet, paste https://api.walletwallet.dev/mcp, pick OAuth, and create the connection.
  4. ChatGPT opens the WalletWallet sign-in. Sign in and approve access.
  5. 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.