> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/configure/advanced-configuration/wallet/apple-and-google-wallet/google-wallet-account.md).

# Google Wallet Account

Set up Google Pay & Wallet Console access and Google Wallet API credentials so The Wallet Crew can issue passes under the brand's own identity.

Configure the Google Wallet integration using either delegated access (recommended for faster setup) or self-managed configuration. This guide covers account creation, API enablement, and credential management for deploying digital wallet passes through The Wallet Crew platform.

## Overview

To distribute digital passes through Google Wallet, the organization must get a Google Pay & Wallet Console issuer account approved and configure a Google Cloud project for API access. Google approves issuers manually, so plan **3–5 business days** for approval, plus **15–60 minutes** for the technical setup.

**Main things to configure**

* A Google Pay & Wallet Console issuer account (approval required)
* A Google Cloud project with Google Wallet API access

The core Google services are created under the brand (Google Cloud project + Google Pay & Wallet Console approval). The remaining configuration can then be delegated to The Wallet Crew, or completed internally, with the required values pasted into The Wallet Crew.

Want the “why” before the “how”? Start with [Apple & Google wallet](/configure/advanced-configuration/wallet/apple-and-google-wallet.md).

#### Prerequisites

* Google Workspace or Gmail account with admin privileges
* Company information for Google Pay merchant verification
* Authority to create service accounts in Google Cloud

## Google Cloud project configuration

Navigate to the Google Cloud Console and sign in with the company Google account.

<p align="center"><a href="https://console.cloud.google.com/iam-admin/" class="button secondary" data-icon="chevrons-right">Google Cloud Console</a></p>

Create a new project using the naming convention `thewalletcrew-<brandName>` where `<brandName>` matches the organization or brand identifier. For example: `thewalletcrew-acmecorp` or `thewalletcrew-retailstore`. This naming helps identify the project's purpose at a glance.

### Account delegation

This approach allows The Wallet Crew team to handle the technical configuration while the brand retains ownership of all accounts and credentials. Temporary access is granted, and we configure everything according to best practices.

In the IAM & Admin section, select **IAM** from the left navigation menu. Click the **Grant Access** button and add `contact@neostore.cloud` as a project owner. This permission level allows The Wallet Crew team to create service accounts, enable APIs, and configure all necessary resources. This access can be revoked after initial setup is complete.

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FMHzOuKOdTtdLYdtryZoY%2Fconfigure-google-wallet-account-google-cloud-iam-showing-grant-access-action.png?alt=media&#x26;token=0c397424-41bc-4b76-803b-f8d10583e88b" alt="Google Cloud IAM page showing the Grant access action" width="375"><figcaption><p>Google Cloud IAM: grant project access</p></figcaption></figure></div>

This way, the Google Wallet passes are issued under the organization's identity, not The Wallet Crew's. The project created here establishes that organizational identity in Google's systems.

### Configuration on your own

The full setup is managed within the brand's own Google Cloud and Google Pay accounts.

To access the Google Pay & Wallet Console, [sign up](https://support.google.com/pay/merchants/contact/instore_merchants) first. After the form is submitted, the support team makes contact to validate the use case and enable the issuer account.

{% stepper %}
{% step %}
**Create a service account**

1. Go to the Credentials page.

<p align="center"><a href="https://console.developers.google.com/apis/credentials" class="button secondary" data-icon="chevrons-right">Google Cloud - Credential Page</a></p>

2. Ensure the current project is `thewalletcrew-<brandName>`
3. Click **Create credentials → Service account**.

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FxvLnFcdjZj1gBeLLxLcf%2Fconfigure-google-wallet-account-google-cloud-create-credentials-service-account.png?alt=media&#x26;token=f245bfad-4755-43e1-9311-d500cdf7868a" alt="Google Cloud: Create credentials → Service account" width="375"><figcaption><p>Create a new service account</p></figcaption></figure></div>

4. Fill the form:

* Service account name: `TheWalletCrew`
* Service account id: keep the autogenerated value

<figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FQhQrtH2BZWlK6PPrZDZ9%2Fconfigure-google-wallet-account-google-cloud-service-account-details-form-name.png?alt=media&#x26;token=13f4d9ed-f0bb-406b-a988-0cb7cf2acac0" alt="Google Cloud service account details form (name and ID)" width="375"><figcaption><p>Service account name and ID</p></figcaption></figure>

5. Click **Done** to complete the service account creation.

Note the email address generated for the service account. Example: `thewalletcrew@thewalletcrew-123456.iam.gserviceaccount.com`. It is needed later in the Google Pay & Wallet Console.
{% endstep %}

{% step %}
**Create and download a JSON key**

1. Open the service account just created. Then go to the **Keys** tab.

<div><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2Fxfu61Prqoyq6MVqmUqwk%2Fconfigure-google-wallet-account-google-cloud-service-account-keys-tab.png?alt=media&#x26;token=5e530696-1088-40e1-9d9a-b6097d1f4004" alt="Google Cloud service account: Keys tab"><figcaption><p>Open the Keys tab</p></figcaption></figure> <figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FlETQCKjrZTOLh1EFCbwG%2Fconfigure-google-wallet-account-google-cloud-service-account-keys-showing-add.png?alt=media&#x26;token=ca66737e-5f68-465c-9e90-a6726e19dd30" alt="Google Cloud service account keys page showing the Add key action"><figcaption><p>Create a new key</p></figcaption></figure></div>

2. Click **Add key → Create new key**.

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FQO64AMMbw3twzjWUTpGN%2Fconfigure-google-wallet-account-google-cloud-add-key-create-new.png?alt=media&#x26;token=6a31575a-e11a-4b1a-b76d-eaa19879f40f" alt="Google Cloud: Add key → Create new key" width="375"><figcaption><p>Start creating a JSON key</p></figcaption></figure></div>

3. Choose **JSON** and click **Create**.

<figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FrnVWxoakYkboBGWs7ijS%2Fconfigure-google-wallet-account-google-cloud-select-json-as-key-type.png?alt=media&#x26;token=fda093a9-8072-4fd3-8b5a-5e68cb6e7c19" alt="Google Cloud: select JSON as the key type" width="375"><figcaption><p>Select JSON key type</p></figcaption></figure>

4. Save the generated file to a secure location. It is uploaded later in The Wallet Crew admin console.

{% hint style="warning" %}
Treat this JSON file like a password.
{% endhint %}
{% endstep %}

{% step %}
**Enable the Google Wallet API**

Go to the Google Wallet API page and enable API access.

<p align="center"><a href="https://console.cloud.google.com/apis/library/walletobjects.googleapis.com" class="button secondary" data-icon="chevrons-right">Google Wallet API</a></p>

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2F3N7kBekPDGkdgdmlOvsy%2Fconfigure-google-wallet-account-google-cloud-api-library-enable-wallet-walletobjects.png?alt=media&#x26;token=ba878853-fbff-489e-8717-f7b6ef2a5996" alt="Google Cloud API Library: enable Google Wallet API (walletobjects.googleapis.com)" width="375"><figcaption><p>Enable <code>walletobjects.googleapis.com</code></p></figcaption></figure></div>
{% endstep %}
{% endstepper %}

## Google Pay & Wallet Console configuration

Navigate to the Google Pay & Wallet Console and sign in with the company Google account.

<p align="center"><a href="https://pay.google.com/gp/m/issuer/list" class="button secondary" data-icon="chevrons-right">Google Pay &#x26; Wallet Console</a></p>

### Account delegation

Navigate to the Users section. Add `contact@neostore.cloud` with **Administrator** permission. This allows The Wallet Crew team to configure the issuer settings and complete the integration.

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2F1BOo53FIFzhBNHYh9EGN%2Fconfigure-google-wallet-account-google-pay-x26-wallet-console-users-showing.png?alt=media&#x26;token=f11e1189-566d-4e3d-a328-196f86c69391" alt="Google Pay &#x26; Wallet Console Users page showing user access management" width="375"><figcaption><p>Add a user with <strong>Administrator</strong> access</p></figcaption></figure></div>

The Wallet Crew team will receive a notification of the access grant and will proceed with service account creation, API enablement, and credential configuration. We notify the brand when the setup is complete and provide the credentials for safekeeping.

### Configuration on your own

{% stepper %}
{% step %}
**Invite the service account**

1. Navigate to the Users section.

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2F2L6EhyS8Kvpf79hxRzix%2Fconfigure-google-wallet-account-google-pay-x26-wallet-console-navigation-highlighting.png?alt=media&#x26;token=a00f3f53-4454-4e01-a28c-bddbdef4f89b" alt="Google Pay &#x26; Wallet Console navigation highlighting Users" width="375"><figcaption><p>Open the Users section</p></figcaption></figure></div>

2. Click **Invite a user**.

Fill the form with the following information:

* Email address: the one noted at step 1.4
* Access level: **Developer**

<div><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2F90PItKbvbCGPdFelm4Rx%2Fconfigure-google-wallet-account-google-pay-x26-wallet-console-invite-user.png?alt=media&#x26;token=24809664-7a18-4fb2-9b61-0118c610f4bd" alt="Google Pay &#x26; Wallet Console: Invite a user dialog"><figcaption><p>Invite the service account email</p></figcaption></figure> <figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FfdLtJRJUkQdRS7I5UWcJ%2Fconfigure-google-wallet-account-google-pay-x26-wallet-console-select-developer.png?alt=media&#x26;token=b84829e3-a73f-41c6-9cc5-d72c116830cb" alt="Google Pay &#x26; Wallet Console: select Developer access level"><figcaption><p>Choose the <strong>Developer</strong> role</p></figcaption></figure></div>

Then click **Invite**.

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FweosHdDy7iVK7h4LWCw5%2Fconfigure-google-wallet-account-google-pay-x26-wallet-console-invite-button.png?alt=media&#x26;token=b12d2cdb-2b82-402c-bb05-a3c4bb36c252" alt="Google Pay &#x26; Wallet Console: Invite button to send the user invitation" width="375"><figcaption><p>Send the invitation</p></figcaption></figure></div>
{% endstep %}

{% step %}
**Complete establishment information**

1. Click **Establishment details** and verify that all the information is filled and approved.

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2F6dJHvdSiyTkNFjPBvspY%2Fconfigure-google-wallet-account-google-pay-x26-wallet-console-establishment-details.png?alt=media&#x26;token=cf117288-9fe6-4606-b0c9-b1b596e455fc" alt="Google Pay &#x26; Wallet Console: establishment details page" width="375"><figcaption><p>Confirm establishment details are approved</p></figcaption></figure></div>

2. Click **Google Wallet API**.

<figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FvBNzzYtVz18tpEvdS4hV%2Fconfigure-google-wallet-account-google-pay-x26-wallet-console-api-showing.png?alt=media&#x26;token=1a541af4-4b2a-46dd-837e-320dc531600b" alt="Google Pay &#x26; Wallet Console: Google Wallet API page showing the issuerId value" width="375"><figcaption><p>Copy the <code>issuerId</code></p></figcaption></figure>

Note the `issuerId`. It is needed in The Wallet Crew admin console.
{% endstep %}
{% endstepper %}

## Configure The Wallet Crew

For a self-managed setup, go back to The Wallet Crew admin console and open Wallet > Configuration > Google.

<p align="center"><a href="https://admin.thewalletcrew.io/tenant/~/passTypes/configuration/google" class="button secondary" data-icon="wallet">Wallet > Configuration > Google</a></p>

Fill the form with:

* the service account JSON key downloaded earlier
* the `issuerId` from the Google Pay & Wallet Console

<figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FGzGB6d03NcpRkmH45APn%2Fconfigure-google-wallet-account-wallet-crew-admin-console-google-form-issuerid.png?alt=media&#x26;token=1dc1a763-c8df-4559-89d5-56afbac8bfd1" alt="The Wallet Crew admin console: Google Wallet configuration form for issuerId and service account JSON key"><figcaption><p>Paste <code>issuerId</code> and upload the JSON key</p></figcaption></figure>

#### Request public access (only if needed)

If testing with a Google pass produces the following error:

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FXqB37W6qJOEegh41ndl4%2Fconfigure-google-wallet-account-google-wallet-error-message-asking-request-public.png?alt=media&#x26;token=b3761d80-6dcf-4e4f-91a7-11e8dd91ab84" alt="Google Wallet error message asking to request public access" width="297"><figcaption><p>Error when public access is required</p></figcaption></figure></div>

Go back to Google Wallet API:

<div data-with-frame="true"><figure><img src="https://123508161-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDJrf9G0l7ArnvuwEH0a8%2Fuploads%2FsmlDO5MvcPHqb6Y4CnZX%2Fconfigure-google-wallet-account-google-cloud-wallet-api-console-requesting-public.png?alt=media&#x26;token=ad59e968-717e-4f85-af1b-75d11024bbd8" alt="Google Cloud: Google Wallet API console for requesting public access" width="375"><figcaption><p>Request public access from Google</p></figcaption></figure></div>

Then ask for public access. One of these templates can be used.

<details>

<summary><strong>Email template — loyalty card usage</strong></summary>

> Hello,
>
> We'd like to use the Google Wallet API to generate loyalty cards in-store. The customer can scan a QR code (example: xxxx), then create or retrieve their account and add a loyalty card to their wallet.
>
> We work with The Wallet Crew for this.
>
> Regards,

</details>

<details>

<summary><strong>Email template — event usage</strong></summary>

> Hello,
>
> We'd like to use the Google Wallet API to generate event tickets. The customer will receive an email with a download link and add their tickets to their wallet. We will also display an “Add to Wallet” button on our website after purchasing tickets.
>
> We work with The Wallet Crew for this.
>
> Regards,

</details>

## FAQ

<details>

<summary><strong>How long does Google approval take?</strong></summary>

Google approves issuer access manually. Plan **3–5 business days** for approval. Then plan **15–60 minutes** for the technical setup (service account, API enablement, and issuer configuration).

</details>

<details>

<summary><strong>What do we need to configure in The Wallet Crew administration console?</strong></summary>

Two things are needed: a **service account JSON key** from Google Cloud (service account → **Keys**) and the **`issuerId`** from the **Google Pay & Wallet Console** (Google Wallet API section). Once these are pasted or uploaded in Wallet > Configuration > Google, The Wallet Crew can authenticate and issue passes under the brand's issuer.

</details>

<details>

<summary><strong>Do we need a dedicated Google Cloud project?</strong></summary>

Yes. A dedicated project keeps wallet configuration isolated from other cloud workloads. It also makes access review, billing, and auditing much easier.

</details>

<details>

<summary><strong>What is the “service account” used for?</strong></summary>

The service account is the machine identity used to call Google Wallet APIs server-to-server. It is not a human user. The Wallet Crew uses the service account JSON key to authenticate those API calls.

</details>

<details>

<summary><strong>How should we store the service account JSON key?</strong></summary>

Treat the JSON key like a password. Upload it to The Wallet Crew over the admin console, then store it only in a secret manager (or delete it if no copy is needed). Avoid sharing it over chat or email, and rotate it immediately if exposed.

</details>

<details>

<summary><strong>Why do we need to invite a user/service account in Google Pay &#x26; Wallet Console ?</strong></summary>

Google Pay & Wallet Console controls who can manage the issuer. If the service account is not invited, Google Wallet API calls will fail even if the Cloud project is correctly configured. In self-managed setup, invite the **service account** as a user with the **Developer** role.

</details>

<details>

<summary><strong>What does “Enable the Google Wallet API” actually do?</strong></summary>

It enables the Google Wallet API endpoint (`walletobjects.googleapis.com`) in the Cloud project. Without this, requests will fail with authorization errors such as “API not enabled”.

</details>

<details>

<summary><strong>We get an error asking for “public access”. What does it mean?</strong></summary>

Some issuers need an extra approval step from Google before they can distribute passes broadly. This often shows up when moving from testing to real-world distribution. Use the email templates in this guide to request public access from Google.

</details>

<details>

<summary><strong>Can we revoke delegated access after go-live?</strong></summary>

**Yes**. Once issuance and pass updates are validated end-to-end, revoke delegated access in both places: remove The Wallet Crew from the **Google Cloud** project IAM, and remove the user from the **Google Pay & Wallet Console** Users list. Do this only after real saves and at least one successful update have run, so production is not accidentally broken.

</details>

<details>

<summary><strong>Should we renew the configuration yearly?</strong></summary>

Usually **no**. This setup is not something to “renew” on a schedule.

Only redo the configuration in The Wallet Crew if something changed on the Google side, for example:

* The service account JSON key was **rotated or replaced**.
* The key was **revoked/disabled**, or it is suspected to have been exposed.
* The setup switched to a **different Cloud project** or **issuerId**.
* IAM / Console permissions were changed and issuance stopped working.

If nothing changed and passes still issue/update correctly, leave it as-is.

</details>

<details>

<summary><strong>We already have existing passes. How do we migrate to The Wallet Crew?</strong></summary>

This is a **migration** of live passes, not a normal “reconfigure”.

On Google, passes are tied to a **Google Pay & Wallet Console issuer account**. Live passes cannot be transferred to a different issuer. Plan to keep the same issuer and move the operational setup (credentials + pass data) to The Wallet Crew.

Follow the dedicated guide: [Move passes to The Wallet Crew](/configure/advanced-configuration/wallet/import-and-export/pass-migration/move-passes-to-the-wallet-crew.md).

</details>


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.thewalletcrew.io/configure/advanced-configuration/wallet/apple-and-google-wallet/google-wallet-account.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
