Skip to content
Back to blog

How to create a Google Wallet pass: complete 2026 guide

Complete technical guide for building, signing, distributing, and updating Google Wallet passes for Android devices in 2026.

Passinstance Team
Passinstance Team

Wallet pass platform team

2026-01-202 min read
Cover image for How to create a Google Wallet pass: complete 2026 guide

Google Wallet provides Android users with a pre-installed, secure hub for managing digital loyalty cards, event tickets, offers, gift cards, boarding passes, and membership credentials.

This complete 2026 guide breaks down Google Wallet API architecture, issuer credentials, Class vs. Object relationships, signed JWT save links, and real-time Android push updates.


1. Google Wallet Architecture: Classes vs. Objects

Unlike Apple Wallet's single .pkpass bundle, Google Wallet separates pass data into a Class and an Object:

* Pass Class: Defines master layout properties, brand assets, logo, primary color, issuer name, and broad program terms shared across all users. * Pass Object: Defines user-specific state, customer name, individual serial/barcode numbers, current points balance, and expiration date.

text passinstance
Google Wallet Class (Master Template)
      │
      ├──> User Object A (Jane Doe • 1,250 Points)
      ├──> User Object B (John Smith • 500 Points)
      └──> User Object C (Alex Morgan • Gold Tier)

2. Google Pay & Wallet Console Setup

To issue Google Wallet passes natively:

  1. •Issuer Account: Request an Issuer Account in the Google Pay & Wallet Console.
  2. •Service Account Credentials: Create a Google Cloud Service Account, grant it Google Wallet API Developer permissions, and download the RSA private key JSON.
  3. •Class Definition: Publish a Pass Class (e.g. issuerId.loyalty_class_2026) via Google Wallet REST API.
> [!NOTE] > Instant Launch Option: Passinstance is an approved, pre-verified Google Wallet issuer. You can launch Google Wallet passes immediately without waiting weeks for Google business verification.


Google Wallet passes are distributed using cryptographically signed JSON Web Tokens (JWTs) embedded inside standard HTTPS URLs:

ts passinstance
import jwt from "jsonwebtoken";

const claims = {
  iss: serviceAccount.client_email,
  aud: "google",
  typ: "savetowallet",
  iat: Math.floor(Date.now() / 1000),
  payload: {
    loyaltyObjects: [
      {
        id: "338810294.user_pass_jane_2048",
        classId: "338810294.loyalty_class_v1",
        state: "ACTIVE",
        accountName: "Jane Doe",
        accountId: "MEM-2048",
        barcode: {
          type: "QR_CODE",
          value: "PASS-LOYALTY-8842",
        },
      },
    ],
  },
};

const token = jwt.sign(claims, serviceAccount.private_key, { algorithm: "RS256" });
const saveUrl = `https://pay.google.com/gp/v/save/${token}`;

When an Android customer clicks this link or scans a QR code, Google Wallet verifies the JWT signature and adds the pass directly to their device.


4. Over-The-Air Updates via Google Wallet REST API

When a customer earns points or redeems a reward, you update the pass on Android devices by sending a PATCH request to the Google Wallet REST API:

http passinstance
PATCH /walletobjects/v1/loyaltyObject/338810294.user_pass_jane_2048 HTTP/1.1
Host: walletobjects.googleapis.com
Authorization: Bearer <OAuth2_Token>
Content-Type: application/json

{
  "loyaltyPoints": {
    "label": "Points",
    "balance": {
      "int": 1500
    }
  }
}

Google's backend updates the Android device in real time and triggers a native notification shade alert.


5. Automated Google Wallet Issuance with Passinstance

Passinstance unifies Apple Wallet and Google Wallet behind a single API call and editor interface:

ts passinstance
import { Passinstance } from "@passinstance/sdk";

const client = new Passinstance({ apiKey: process.env.PASSINSTANCE_API_KEY });

// Publish pass to both Apple Wallet and Google Wallet from one template
const pass = await client.passes.create({
  templateId: "tpl_retail_rewards",
  data: {
    customerName: "Jane Doe",
    points: 1500,
  },
});

console.log("Add to Google Wallet Link:", pass.googleWalletUrl);

Key Takeaways

* No Android App Required: Customers tap a web link or scan a QR code to add passes to Google Wallet. * Unified Template: Maintain one design that compiles cleanly for both Android and iOS. * Instant Over-The-Air Updates: Push point changes and announcements directly to Android lock screens.

Related in this topic

API and integrations

Open topic hub

Ready to launch your wallet pass program?

Create your account, design your pass template, and test real passes directly in Apple Wallet and Google Wallet.