> For the complete documentation index, see [llms.txt](https://docs.oomus.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.oomus.org/integrations/google-wallet.md).

# Google Wallet

Oomus CampaignID makes it possible to issue Google Wallet passes for beneficiaries with an Android smartphone or a compatible browser. The pass works offline once downloaded.

***

## Prerequisites

To use the Google Wallet integration, you must have:

| Prerequisites        | Description                                                    |
| -------------------- | -------------------------------------------------------------- |
| Google Cloud account | Active Google Cloud project                                    |
| Service Account      | Service account with the Wallet Object Creator role            |
| Google Wallet API    | Google Wallet API enabled in your Google Cloud project         |
| Issuer ID            | Google Wallet issuer ID (obtained during program registration) |
| Private key (JSON)   | Service account key file (JSON format)                         |

### Google Wallet program registration

1. Go to [Google Pay & Wallet Console](https://pay.google.com/business/console/)
2. Register your organization as an issuer
3. Choose the type **Generic Pass**
4. Submit your request (approval time: 1–5 business days)
5. Once approved, retrieve your **Issuer ID**

### Configuration in Oomus CampaignID

1. In the Oomus interface, navigate to **Settings > Integrations > Google Wallet**
2. Upload your service account JSON key file
3. Enter your **Issuer ID**
4. Set the pass class name (example: `vaccination_card_sn`)
5. Test with a single issuance

***

## Pass type — Generic Pass

Oomus CampaignID generates **generic passes** (Generic Pass), the most flexible type and suitable for health cards.

### Pass content

Each Google Wallet pass generated by Oomus CampaignID includes:

| Field                | Value                            | Pass location      |
| -------------------- | -------------------------------- | ------------------ |
| **QR code**          | Cryptographic verification token | Center of the pass |
| **Beneficiary name** | First name + Last name           | Header             |
| **Program**          | Health program name              | Subtitle           |
| **Issue date**       | Card generation date             | Body               |
| **Expiration date**  | If configured (optional)         | Body               |
| **Logo**             | Program logo                     | Upper left corner  |
| **Color**            | Program primary color            | Pass background    |
| **Card number**      | Unique card code                 | Bottom of the pass |

### What the pass does NOT contain

* Medical or health data
* Plain-text MPI identifier (the QR uses an opaque token)
* Address or location data
* Phone number

***

## Single issuance

### Via the interface

1. From a campaign or DHIS2 enrollment, locate the beneficiary
2. Click the **Google Wallet** icon next to the name
3. Copy or share the generated link with the beneficiary

### Via the API

```bash
curl -X GET "https://api.oomus.health/dhis2/google-wallet/xyz123abc" \\
  -H "Authorization: Bearer <YOUR_TOKEN>"
```

**Response:**

```json
{
  "enrollment_id": "xyz123abc",
  "wallet_url": "https://pay.google.com/gp/v/save/eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "jwt_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "valid_until": "2027-05-15T00:00:00Z"
}
```

The beneficiary clicks on `wallet_url` to add the pass to their Google Wallet app.

***

## Bulk issuance (up to 100 cards)

Bulk issuance makes it possible to generate up to 100 passes in a single request, ideal for group distributions (clinic day, area vaccination campaign).

```bash
curl -X POST "https://api.oomus.health/dhis2/google-wallet/bulk" \\
  -H "Authorization: Bearer <YOUR_TOKEN>" \\
  -H "Content-Type: application/json" \\
  -d '{
    "enrollment_ids": [
      "xyz123abc",
      "def456ghi",
      "jkl789mno"
    ],
    "programme_uid": "P3jJH5Tu5VC"
  }'
```

**Response:**

```json
{
  "batch_id": "batch_01HXYZ",
  "total": 3,
  "processed": 3,
  "failed": 0,
  "wallet_links": [
    {
      "enrollment_id": "xyz123abc",
      "wallet_url": "https://pay.google.com/gp/v/save/eyJhbGci..."
    },
    {
      "enrollment_id": "def456ghi",
      "wallet_url": "https://pay.google.com/gp/v/save/eyJhbGci..."
    },
    {
      "enrollment_id": "jkl789mno",
      "wallet_url": "https://pay.google.com/gp/v/save/eyJhbGci..."
    }
  ]
}
```

For volumes above 100, split into multiple requests or use the CSV export from the interface (which generates all links in the background).

***

## Beneficiary experience

### On Android

1. The beneficiary receives the link by WhatsApp or SMS
2. They click the link → their Google Wallet app opens
3. They tap **"Add"** to save the pass
4. The card is available offline in their Google Wallet app

### In a web browser

1. The beneficiary opens the link in their browser
2. They sign in to their Google account if needed
3. The pass is saved in Google Wallet Web (`wallet.google.com`)

***

## Pass updates and revocation

### Updating a pass

If a card's data changes (e.g. name correction), the pass can be updated:

* Via the interface: Campaign > Beneficiary > **"Update Wallet pass"**
* The update is automatically synchronized in the beneficiary's Google Wallet app (requires an Internet connection)

### Revoking a pass

In case of card loss or invalidation:

* Via the interface: Campaign > Beneficiary > **"Revoke Wallet pass"**
* The pass is marked as invalid and is no longer scannable
* Revocation is synchronized in the beneficiary's Google Wallet app

***

## Availability

| Platform                     | Availability                             |
| ---------------------------- | ---------------------------------------- |
| Android (Google Wallet app)  | Supported                                |
| Google Chrome (Web)          | Supported                                |
| iOS (via browser)            | Supported via wallet.google.com          |
| Native iOS Google Wallet app | Not available (Apple Wallet only on iOS) |

***

## Next steps

* [Multichannel distribution](/features/distribution.md) — All available channels
* [DHIS2 guide](/integrations/dhis2.md) — Distribution from DHIS2
* [DHIS2 API reference](/api-reference/dhis2.md) — Google Wallet endpoints


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.oomus.org/integrations/google-wallet.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
