WalletWallet API
Back to Blog

How to Create an Apple Wallet Pass with Claude

Connect Claude to WalletWallet's MCP server and create, update, and revoke Apple Wallet and Google Wallet passes from a prompt. No template, no code, free tier included.

2026-09-17 By Alen Todorov

Claude can create an Apple Wallet pass from a sentence. Connect it to WalletWallet’s remote MCP server once, describe the card in the chat, and Claude hands back a link that installs the pass on an iPhone or, as a Google Wallet pass, on an Android phone. The same connection lets Claude change a pass after it is on the phone and revoke it when it should stop working.

This guide walks through the whole loop with a loyalty card for a cafe. The steps are the same for a membership card, an event ticket, or a coupon.

You need two accounts:

  • A Claude account. Custom connectors work on every claude.ai plan, including Free, which allows one custom connector.
  • A WalletWallet account. Free covers 1,000 passes a month, and a pass created from Claude counts the same as one made in the dashboard or through the API.

Nothing gets installed. The MCP server runs at https://api.walletwallet.dev/mcp, and Claude signs in to it with OAuth, so no API key is pasted anywhere.

What Claude can do once it is connected

The server exposes seven tools. Claude picks the right one from your prompt; you never call them by name.

Tool What it does
create_pass Creates a pass for Apple Wallet and Google Wallet, 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: created and updated 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)

The five tools without a Pro mark work on the Free plan.

1. Connect WalletWallet to Claude

On a Pro or Max plan, or on Free:

  1. In claude.ai, open Customize, then Connectors.
  2. Click +, then Add custom connector.
  3. Name it WalletWallet, paste https://api.walletwallet.dev/mcp, and click Add.
  4. Claude opens the WalletWallet sign-in. Sign in and approve access.
  5. In a chat, click +, open Connectors, and switch WalletWallet on.

On a Team or Enterprise plan an owner adds the connector first under Organization settings, then Connectors, and each member connects to it from Customize, then Connectors.

The consent screen grants Claude the seven tools above and nothing else. It cannot change your plan, billing, or API key, and you can disconnect it at any time from the Integrations page in your dashboard.

2. Create the pass

With the connector switched on, describe the card:

Create a loyalty card for Bayroast Coffee for Nora Hale: green, a stamp counter at 3 of 10, member number BR-0412, a reward line that says free coffee at 10, and a QR code of the member number.

Claude maps that sentence onto create_pass and sends the fields. This is the call it made for the prompt above:

{
  "logoText": "Bayroast Coffee",
  "organizationName": "Bayroast Coffee",
  "cardLabel": "LOYALTY CARD",
  "title": "Nora Hale",
  "colorPreset": "green",
  "primaryFields": [
    { "label": "STAMPS", "value": "3 of 10", "changeMessage": "Stamps: %@" }
  ],
  "secondaryFields": [
    { "label": "MEMBER", "value": "BR-0412" },
    { "label": "REWARD", "value": "Free coffee at 10" }
  ],
  "barcodeFormat": "QR",
  "barcodeValue": "BR-0412",
  "backFields": [
    { "label": "How it works", "value": "One stamp per drink. Show this card at the counter." }
  ]
}

The changeMessage on the stamp field is worth noticing. Claude added it on its own, and it is what turns a later update into a lock-screen notification on the iPhone.

The server answers with:

{
  "serialNumber": "82dd93a4-4451-4e9c-b8bc-8e5fe1161252",
  "shareUrl": "https://api.walletwallet.dev/p/82dd93a4-4451-4e9c-b8bc-8e5fe1161252",
  "googleSaveUrl": "https://pay.google.com/gp/v/save/eyJhbGciOi...",
  "applePassUrl": "https://api.walletwallet.dev/p/82dd93a4-4451-4e9c-b8bc-8e5fe1161252/apple.pkpass"
}

Claude reads that back to you in plain language with the share link. One call produced both the Apple pass and the Google Wallet pass; there is no second step for Android.

3. Put it on a phone

Send the shareUrl to the customer by text, email, or a chat message. The page it opens detects the device:

  • On an iPhone, an Add to Apple Wallet button installs the signed .pkpass.
  • On Android, a Save to Google Wallet button adds the same card.
  • On a desktop, a QR code lets the customer scan it with their phone.

The page carries the pass’s own color and logo, and the link stays live for the life of the pass. Ask Claude for “the share link for Nora’s card” at any point and it returns the same URL.

4. Update the pass from the chat

A pass on a phone is not a snapshot. Change it from the same conversation:

Give Nora a stamp.

Claude calls update_pass with the card’s fields and the stamp counter at 4 of 10. Apple Wallet pushes the new version to Nora’s iPhone and, because the field carries a changeMessage, shows “Stamps: 4 of 10” on her lock screen. Google Wallet refreshes the card in place.

Two details about updates:

  • update_pass replaces the whole pass rather than patching one field, so Claude resends everything. In the conversation that created the pass it already holds the fields. On Pro, get_pass_body lets it read any pass back first, so you can update a card created weeks ago in a new chat.
  • Every update counts as one pass on your plan, the same as a create.

You can update several at once: “Put ‘Double stamps all weekend’ on every active Bayroast card” makes Claude list the cards and update each one, which needs list_passes and therefore Pro.

5. Revoke it

Marco Ruiz closed his account. Revoke his membership card.

Claude calls revoke_pass. Neither wallet can pull a pass off a phone, so the pass is voided in place: it greys out, the barcode disappears, and it stops scanning. Revokes do not count against your plan.

Claude Code, Cursor, and other MCP clients

The same server works from a terminal. For Claude Code:

claude mcp add --transport http walletwallet https://api.walletwallet.dev/mcp

Start Claude and run /mcp to sign in. Cursor and VS Code have one-click install buttons on the Integrations page, and any other MCP client adds it as a remote server with the URL above. Sign-in is OAuth everywhere, so the client never holds your API key. A client without OAuth support can send Authorization: Bearer <your key> instead.

Prompts in Claude Code look the same as in the chat, with one useful difference: it can read a CSV in your project and create a card per row. For more than a few hundred rows the dashboard’s batch import is faster.

What is free and what is Pro

Free includes 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 the fields that need it: a custom hex color instead of the six presets, your own logo, strip, and icon images, the iOS 27 poster layout with a background image, and featured action buttons under the pass. Pro also unlocks list_passes and get_pass_body.

If a Free account asks Claude for a Pro field, the server rejects that field with an upgrade message and Claude relays it in the chat, so nothing fails silently.

Compared with template-based tools

Most wallet-pass products that ship an MCP server run it on top of their existing template system, so a pass can only be created “from template X”, and the template has to be designed in their web app first. Google’s own Wallet MCP server is developer tooling: it searches the docs, lists issuers and classes, and validates a pass JWT, but it does not create or update a pass.

WalletWallet builds the pass from the description. There is no template step, the same call covers both wallets, and pricing is a flat monthly allowance rather than a meter per downloaded pass.

Frequently asked questions

Can Claude create an Apple Wallet pass?

Yes. Connect WalletWallet as a custom connector in claude.ai, describe the pass in a chat, and Claude creates it and returns a link that installs it in Apple Wallet. The same call produces a Google Wallet pass.

Do I need a paid Claude plan?

No. Custom connectors are available on the Free plan, limited to one connector. Pro and Max add connectors under Customize, then Connectors; on Team and Enterprise an owner adds it for the organization.

Does the pass work in Google Wallet too?

Yes. create_pass returns a share link that installs on either platform and a direct Google Wallet save link. You do not create a second pass for Android.

Do I need to design a template first?

No. Claude sends the fields from your description and the server renders the pass. Colors, fields, barcode, and back-of-pass text all come from the prompt.

Can ChatGPT do the same?

Yes, on a ChatGPT plan with developer mode. The ChatGPT guide walks through it.

What can Claude not do with my account?

It has the seven tools and nothing else. It cannot change your plan, billing, or API key, and disconnecting it from the dashboard ends its access immediately.

To start, create a free account, add the connector, and ask Claude 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.