# Google Wallet account

Configure your 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, your 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

You’ll create the core Google services under your brand (Google Cloud project + Google Pay & Wallet Console approval). Then you’ll either delegate the remaining configuration to The Wallet Crew, or complete it yourself and paste the required values into The Wallet Crew.

Want the “why” before the “how”? Start with [Apple & Google wallet](https://docs.thewalletcrew.io/configure/wallet/apple-and-google-wallet).

#### 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 your 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 your 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 you retain ownership of all accounts and credentials. You'll grant temporary access, and we'll 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. You can revoke this access after initial setup is complete.

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/WLc8AHXW4tdrAXUBfrYF/blobs/9v5gMI3vDtDtEW3XeMAV/inline" 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 your organization's identity, not The Wallet Crew's. The project you create here establishes that organizational identity in Google's systems.

### Configuration on your own

You manage the full setup within your own Google Cloud and Google Pay accounts.

To access the Google Pay & Wallet Console, you need to [sign up](https://support.google.com/pay/merchants/contact/instore_merchants). After you submit the form, the support team will contact you to validate your use case and enable your 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FrrIrZQ5GzjAWQLCLMXEu%2Finline%20(96).png?alt=media&#x26;token=f337119e-6908-4529-91f8-b2a3fece2d56" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FyhIhubyNRMdlsPMw207F%2Finline%20(97).png?alt=media&#x26;token=2f275359-9504-4e56-b59c-8955c77ec95e" 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`. You’ll need it later in the Google Pay & Wallet Console.
{% endstep %}

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

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

<div><figure><img src="https://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FRl2PJBpZWGkOSOCP9Dr8%2Finline%20(98).png?alt=media&#x26;token=7ab40655-a9c9-4ced-af57-6bbb2bbce0b4" alt="Google Cloud service account: Keys tab"><figcaption><p>Open the Keys tab</p></figcaption></figure> <figure><img src="https://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FbAsQpACMmFDECzCnPuEP%2Finline%20(99).png?alt=media&#x26;token=9a8d1ba7-fd9e-4fdc-89f6-926bb24d9c97" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FOt03ubk9VRrn5RzGkY1d%2Finline%20(100).png?alt=media&#x26;token=04e5a7ed-f22f-4dc1-b89b-3082e54c67cf" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FhIN0IpJUVRWXIOhaFsoG%2Finline%20(101).png?alt=media&#x26;token=3441f394-e1a4-4c3d-9399-8658036d382c" 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. You’ll upload it 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FkVPqBWEAnVKsMCAaBtHK%2Finline%20(102).png?alt=media&#x26;token=691c3572-cf6d-4a7a-99aa-20ff7834abac" 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 your 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 **Edit** permission. This allows The Wallet Crew team to configure your issuer settings and complete the integration.

<div data-with-frame="true"><figure><img src="https://content.gitbook.com/content/WLc8AHXW4tdrAXUBfrYF/blobs/MAUjv9wmfWjCeo4Fl6Wt/inline" alt="Google Pay &#x26; Wallet Console Users page showing user access management" width="375"><figcaption><p>Add a user with <strong>Edit</strong> access</p></figcaption></figure></div>

The Wallet Crew team will receive a notification of your access grant and will proceed with service account creation, API enablement, and credential configuration. We'll notify you when the setup is complete and provide you with your 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FJYPRC7tKa9c3PwOASIC2%2Finline%20(103).png?alt=media&#x26;token=e3538846-c593-4882-8831-89a1d91314fc" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FdvOqVrCJn6cOrgrsk5JQ%2Finline%20(104).png?alt=media&#x26;token=e5861eeb-f043-41e4-8194-81dadccd630c" alt="Google Pay &#x26; Wallet Console: Invite a user dialog"><figcaption><p>Invite the service account email</p></figcaption></figure> <figure><img src="https://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2Fe5IpL6YmzTX33AAmFo2i%2Finline%20(105).png?alt=media&#x26;token=7b3828d2-faa5-4686-9626-abb34e64f1a1" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2Fj2q0GBjAGYp7EiEAD1Dl%2Finline%20(106).png?alt=media&#x26;token=7b825de5-6caa-422c-a194-f2bfd7d7846f" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FUpG9OK1ZK0zmcotjdTdY%2Finline%20(107).png?alt=media&#x26;token=5cd50980-8b32-40da-85c6-160c4de6ec6b" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FguRENSDB3bGAavM5l4Rr%2Fimage.png?alt=media&#x26;token=fcadaf8c-56a6-47ef-b6d0-57bb08cb7dae" 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`. You’ll need it in The Wallet Crew admin console.
{% endstep %}
{% endstepper %}

## Configure The Wallet Crew

If you configure on your own, 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 you downloaded earlier
* the `issuerId` from the Google Pay & Wallet Console

<figure><img src="https://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2FnoVix6VKGHjqFpKeyPzV%2Finline%20(110).png?alt=media&#x26;token=375c59d8-d38f-41a4-bf48-4e85b401b78d" 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 after testing with a Google pass you get the following error:

<div data-with-frame="true"><figure><img src="https://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2Fi7jnhzYCLs4VJzUlydZU%2Finline%20(111).png?alt=media&#x26;token=3eef0b09-95b2-4bee-b04c-b20f9eabeeea" 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://3566051324-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWLc8AHXW4tdrAXUBfrYF%2Fuploads%2F5Bho46VDYdL1OIwFhNIq%2Finline%20(112).png?alt=media&#x26;token=11ba3f29-fb68-4ec9-9e92-1bb1ad494d36" 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. You can use one of these templates.

<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>

You need two things: a **service account JSON key** from Google Cloud (service account → **Keys**) and your **`issuerId`** from the **Google Pay & Wallet Console** (Google Wallet API section). Once you paste/upload these in Wallet > Configuration > Google, The Wallet Crew can authenticate and issue passes under your 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 your secret manager (or delete it if you don’t need to keep a copy). 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 your 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 your 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 you move 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 you’ve validated that issuance and pass updates work end-to-end, revoke delegated access in both places: remove The Wallet Crew from your **Google Cloud** project IAM, and remove the user from the **Google Pay & Wallet Console** Users list. Do this only after you’ve run real saves and at least one successful update, so you don’t accidentally break production.

</details>

<details>

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

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

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

* You **rotated or replaced** the service account JSON key.
* The key was **revoked/disabled**, or you suspect it was exposed.
* You 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, your passes are tied to a **Google Pay & Wallet Console issuer account**. You can’t transfer live passes 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](https://docs.thewalletcrew.io/configure/wallet/import-and-export/move-pass-from-and-to-the-wallet-crew/move-passes-to-the-wallet-crew).

</details>
