Skip to main content
Use these endpoints from your backend or site. The customer can also open claim_url and tap the wallet buttons with no app install. Dashboard setup (credentials, template, campaign toggle) is in Wallet pass credentials and Add coupons to Apple and Google Wallet.
Claiming assigns the code to the customer. Redeem afterwards with POST Redeem coupon.

Prerequisites

  • SERVER API key and x-account-id
  • Coupon campaign with Allow Add to Wallet and a template
  • Apple and/or Google credentials saved for the platforms you will issue
All examples use:
POST /coupons/wallet-passes One call per campaign. Repeat calls return the same URLs. Codes are assigned when someone opens claim_url, not in this POST.
Example response:
Share claim_url in email, WhatsApp, or a Masivo short link. Each new visitor gets the next free code. The same phone keeps that code. Read the same link later with GET /coupons/wallet-passes. It does not create a link or assign a code.
You can also pass token from /w/{token} instead of campaign_id. The response adds campaign_name, header_text, description, and barcode_format.

2. Detect a pass the customer has not applied

Apps cannot list passes stored in the phone. Read Masivo instead. By customer — GET /customers/{id}/wallet-passes
status is optional. Allowed values: ISSUED, CLAIMED, REDEEMED, EXPIRED, REVOKED. By claim token (from /w/{token} or a deferred deep link) — GET /wallet-passes/{token} returns the campaign claim_url, landing copy, and barcode_format.
If the customer list returns an ISSUED pass, show “This coupon can be applied.”

3. Redeem the coupon

POST /coupons/redeem with the same code and the customer_id. If the pass has no customer yet, the redeem assigns it to that customer and sends the COUPON_WALLET_CLAIMED webhook. The pass moves to REDEEMED once the customer reaches the campaign limit per customer, and Wallet updates.

4. Revoke

POST /wallet-passes/{id}/revoke
Use this when the customer is deleted or the offer must stop. The pass becomes REVOKED.

Suggested TypeScript flow

Frequently asked questions

No. Issue only creates the pass. Redeem is a separate call with the coupon code.
Yes. One URL per campaign. Each new visitor gets the next coupon code. The same phone keeps the same code. Redeem still follows campaign rules.
The first tap builds and signs the .pkpass (images and certificate). Opening the landing page starts that work so the tap can be faster.
In Demo mode the Gmail on the phone must be listed under Configure test accounts, and the service account email must be invited in Users. See Wallet pass credentials.
Delete the pass in Wallet and add it again from claim_url. Existing passes do not refresh layout until they are re-added.