> ## Documentation Index
> Fetch the complete documentation index at: https://www.marqeta.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a digital wallet provisioning request for Google Wallet (UPP)

> Use the /digitalwalletprovisionrequests/v2/googlepay endpoint to retrieve the card data needed to provision a digital wallet token into Google Wallet via the UPP (User-Presented Provisioning) flow.

POST/digitalwalletprovisionrequests/v2/googlepay

Use the `/digitalwalletprovisionrequests/v2/googlepay` endpoint to retrieve the card data needed to provision a digital wallet token into Google Wallet via the UPP (User-Presented Provisioning) flow.

The returned card data is encrypted using the digital wallet provider's encryption key, thereby reducing your Payment Card Industry (PCI) compliance overhead.

## Header parameter

| Fields | Description |
| - | - |
| req-sys-id string  Optional | Random pseudo-unique identifier of a request, used for troubleshooting between multiple parties. Usually a globally unique identifier (GUID). **Allowable Values:**  1–36 chars |
| region string  Optional | Region of the card requested for provisioning. Applicable to both physical and virtual cards. **Allowable Values:**  `NAM`, `EMEA`, `APAC` |
| isVirtualCard boolean  Optional | Header flag to identify the type of the card requested for provisioning. Value is `true` for virtual cards, `false` for physical cards. **Allowable Values:**  Example: `true` |

## Request body

| Fields | Description |
| - | - |
| encrypted\_card\_data object  Required | Encrypted data object. This object is first encrypted using the recipient's public key and sent in [JSON Web Encryption (JWE) format](https://openid.net/specs/draft-jones-json-web-encryption-02.html) and then signed using the sender's private key using [JSON Web Signature (JWS)](https://openid.net/specs/draft-jones-json-web-signature-04.html). It represents the decrypted format. **Allowable Values:**  `card_token`, `card_type`, `cardholder_info`, `expiration`, `metadata`, `primary_account_number` |
| encrypted\_card\_data.**expiration** object  Required | Specifies the expiry date for the card. **Allowable Values:**  `month`, `year` |
| encrypted\_card\_data.expiration.**month** string  Required | Specifies the expiry month for the card in MM format. `01`, for example. **Allowable Values:**  Format: MM |
| encrypted\_card\_data.expiration.**year** string  Required | Specifies the expiry year for the card in yyyy format. `2024`, for example. **Allowable Values:**  Format: yyyy |
| encrypted\_card\_data.**card\_token** string  Optional | Unique identifier of the card. **Allowable Values:**  1–36 chars |
| encrypted\_card\_data.**primary\_account\_number** string  Required | Account number of the card being tokenized. **Allowable Values:**  12–19 chars |
| encrypted\_card\_data.**card\_type** string  Optional | Specifies the type of card. This field is required for Samsung Wallet. **Allowable Values:**  `CREDIT`, `DEBIT` |
| encrypted\_card\_data.**cardholder\_info** object  Optional | Contains personal information about the cardholder. **Allowable Values:**  `cardholder_address`, `email_address`, `first_name`, `last_name`, `phone_number` |
| encrypted\_card\_data.cardholder\_info.**first\_name** string  Optional | First or given name of the cardholder. **Allowable Values:**  40 char max |
| encrypted\_card\_data.cardholder\_info.**last\_name** string  Optional | Last or family name of the cardholder. **Allowable Values:**  40 char max |
| encrypted\_card\_data.cardholder\_info.**cardholder\_address** object  Optional | Specifies the cardholder's address. **Allowable Values:**  `address_line_1`, `address_line_2`, `city`, `country_code`, `postal_code`, `state` |
| encrypted\_card\_data.cardholder\_info.cardholder\_address.**address\_line\_1** string  Required | Street address of the cardholder. **Allowable Values:**  1–255 chars |
| encrypted\_card\_data.cardholder\_info.cardholder\_address.**address\_line\_2** string  Optional | Additional address information for the cardholder, such as a suite, floor, room, PO Box or apartment number. `Suite 600`, for example. **Allowable Values:**  255 char max |
| encrypted\_card\_data.cardholder\_info.cardholder\_address.**postal\_code** string  Required | Postal code of the cardholder. **Allowable Values:**  1–50 chars |
| encrypted\_card\_data.cardholder\_info.cardholder\_address.**city** string  Optional | City of the cardholder. **Allowable Values:**  40 char max |
| encrypted\_card\_data.cardholder\_info.cardholder\_address.**state** string  Optional | State or province code associated with the cardholder's address. **Allowable Values:**  3 char max |
| encrypted\_card\_data.cardholder\_info.cardholder\_address.**country\_code** string  Optional | Two-character [ISO 3166-1 alpha-2 country code](https://www.iso.org/iso-3166-country-codes.html). `US`, for example. **Allowable Values:**  2 char max |
| encrypted\_card\_data.cardholder\_info.**email\_address** string  Optional | Email address of the cardholder. **Allowable Values:**  255 char max |
| encrypted\_card\_data.cardholder\_info.**phone\_number** string  Optional | Phone number of the cardholder. This number is used when Marqeta performs step-up authentication on your behalf. **Allowable Values:**  255 char max |
| encrypted\_card\_data.**metadata** array of objects  Optional | Additional metadata related to the card details object. **Allowable Values:**  Valid array of card details metadata objects |
| encrypted\_card\_data.metadata\[].**name** string  Required | Specifies the metadata attribute name, such as `CARD_ART_ID`, `MAX_TOKENS_PER_CARD`, and so on. **Allowable Values:**  255 char max |
| encrypted\_card\_data.metadata\[].**value** string  Required | Specifies the value of the metadata attribute. **Allowable Values:**  255 char max |
| card\_token string  Optional | Unique identifier of the card. **Allowable Values:**  1–36 chars |
| device\_type string  Optional | Specifies the type of device. **Allowable Values:**  `APPLIANCE`, `GAMING_DEVICE`, `LAPTOP`, `MOBILE_PHONE`, `MOBILE_PHONE_OR_TABLET`, `PERSONAL_COMPUTER`, `TABLET`, `UNKNOWN`, `UNRECOGNIZED`, `VEHICLE`, `WATCH` |
| provisioning\_app\_version string  Optional | Version of the application making the provisioning request. Used for debugging and fraud prevention. **Allowable Values:**  50 char max |
| wallet\_account\_id string  Required | User's Google Wallet account ID, as provided by Google during the provisioning process. Google refers to this field as `ActiveWalletId`. **Allowable Values:**  1–50 chars |
| device\_id string  Required | Unique identifier of the user's Google device, as provided by Google during the provisioning process. Google refers to this field as `StableHardwareId`. **Allowable Values:**  1–24 chars |
| server\_session\_id string  Optional | Unique identifier of the session, provided by the digital wallet provider for the UPP provisioning flow. **Allowable Values:**  1–50 characters |
| token\_requestor\_id string  Optional | Identifier of the token requestor, used to generate the TSP OPC. Required when tokenizing a Visa card to a Fitbit device; omitting this field in that scenario will cause the request to fail. |

## Sample request body

Sample Google Pay UPP request

```json JSON expandable lines wrap theme={null}
{
  "encrypted_card_data": {
    "expiration": {
      "month": "01",
      "year": "2025"
    },
    "card_token": "card-token-811",
    "primary_account_number": "4111111111111111",
    "cardholder_info": {
      "first_name": "Jane",
      "last_name": "Liu",
      "cardholder_address": {
        "city": "Oakland",
        "state": "CA",
        "address_line_1": "180 Grand Ave",
        "address_line_2": "Floor 6",
        "postal_code": "94612",
        "country_code": "US"
      },
      "email_address": "marqetaTest@marqeta.com",
      "phone_number": "1234567890"
    }
  },
  "device_id": "W85OGhjZTk2dsr452dgsr51j",
  "wallet_account_id": "ae123GhjZTk1dsr123dgsr12",
  "provisioning_app_version": "2.13.3",
  "server_session_id": "sess-abc123def456",
  "token_requestor_id": "40010030273"
}
```

## Response body

| Fields | Description |
| - | - |
| created\_time datetime  Conditionally returned | Date and time when the resource was created, in UTC. **Allowable Values:**  date-time **Format:** yyyy-MM-ddThh:mm:ssZ |
| last\_modified\_time datetime  Conditionally returned | Date and time when the resource was created, in UTC. **Allowable Values:**  date-time **Format:** yyyy-MM-ddThh:mm:ssZ |
| card\_token string  Conditionally returned | Unique identifier of the card. **Allowable Values:**  1–36 chars |
| push\_tokenize\_request\_data object  Conditionally returned | Contains data pertaining to a Google push tokenization request. **Allowable Values:**  `display_name`, `last_digits`, `network`, `opaque_payment_card`, `token_service_provider`, `user_address` |
| push\_tokenize\_request\_data.**display\_name** string  Returned | Name of the card as displayed in the digital wallet, typically showing the card brand and last four digits of the primary account number (PAN). `Visa 5678`, for example. **Allowable Values:**  255 char max |
| push\_tokenize\_request\_data.**last\_digits** string  Returned | Last four digits of the funding primary account number (FPAN), which is the primary account number of the physical or virtual card. **Allowable Values:**  4 chars |
| push\_tokenize\_request\_data.**network** string  Returned | Card network, as defined by Google; expected to align with the value of the `token_service_provider` field. **Allowable Values:**  `Mastercard`, `Visa` |
| push\_tokenize\_request\_data.**token\_service\_provider** string  Returned | Token service provider, as defined by Google; expected to align with the value of the `network` field. **Allowable Values:**  `TOKEN_PROVIDER_MASTERCARD`, `TOKEN_PROVIDER_VISA` |
| push\_tokenize\_request\_data.**opaque\_payment\_card** string  Returned | Encrypted card data passed to Google in base64 format. This data should not be modified in transit. For more information, see [[https://developers.google.com/pay/issuers/apis/push-provisioning/android/push-provisioning-objects#opaque\_payment\_card\_opc](https://developers.google.com/pay/issuers/apis/push-provisioning/android/push-provisioning-objects#opaque_payment_card_opc)](https://developers.google.com/pay/issuers/apis/push-provisioning/android/push-provisioning-objects#opaque_payment_card_opc). **Allowable Values:**  1–5000 chars |
| push\_tokenize\_request\_data.**user\_address** object  Returned | Contains cardholder address information for a Google Wallet push tokenization request. Although not required, Marqeta recommends that you provide all the information in this object. Any missing or invalid address information may result in the user being prompted to complete or correct the address. For more information, see [[https://developers.google.com/pay/issuers/apis/push-provisioning/android/push-provisioning-objects#useraddress](https://developers.google.com/pay/issuers/apis/push-provisioning/android/push-provisioning-objects#useraddress)](https://developers.google.com/pay/issuers/apis/push-provisioning/android/push-provisioning-objects#useraddress). **Allowable Values:**  `address1`, `address2`, `city`, `country`, `name`, `phone`, `postal_code` |
| push\_tokenize\_request\_data.user\_address.**name** string  Conditionally returned | Name of the cardholder. **Allowable Values:**  255 char max |
| push\_tokenize\_request\_data.user\_address.**address1** string  Returned | Street address of the cardholder. **Allowable Values:**  1–255 chars |
| push\_tokenize\_request\_data.user\_address.**address2** string  Conditionally returned | Secondary address information, such as a suite or apartment number **Allowable Values:**  255 char max |
| push\_tokenize\_request\_data.user\_address.**city** string  Conditionally returned | City of the cardholder. **Allowable Values:**  255 char max |
| push\_tokenize\_request\_data.user\_address.**state** string  Conditionally returned | State or province code of the address. **Allowable Values:**  3 char max |
| push\_tokenize\_request\_data.user\_address.**postal\_code** string  Returned | Postal code of the cardholder, such as a United States ZIP code. **Allowable Values:**  1–50 chars |
| push\_tokenize\_request\_data.user\_address.**country** string  Conditionally returned | Two-character [ISO 3166-1 alpha-2 country code](https://www.iso.org/iso-3166-country-codes.html). **Allowable Values:**  2 char max |
| push\_tokenize\_request\_data.user\_address.**phone** string  Conditionally returned | Phone number of the cardholder. **Allowable Values:**  50 char max |
| google\_opaque\_payment\_card string  Conditionally returned | Encrypted data field created by the issuer and passed to Google Wallet during the UPP push provisioning process. **Allowable Values:**  Encrypted string |

## Sample response body

Sample Google Pay UPP response

```json JSON expandable lines wrap theme={null}
{
  "created_time": "2025-09-09T18:08:07Z",
  "last_modified_time": "2025-09-09T18:08:07Z",
  "card_token": "my_card_01",
  "google_opaque_payment_card": "eyJraWQiOiIzVkhSWVVSUlRVT1....",
  "push_tokenize_request_data": {
    "display_name": "Visa Card",
    "last_digits": "1008",
    "network": "Visa",
    "token_service_provider": "TOKEN_PROVIDER_VISA",
    "opaque_payment_card": "eyJraWQiOiIzVkhSWVVSUlRVT1....",
    "user_address": {
      "name": "Jane Liu",
      "address1": "180 Grand Avenue",
      "city": "Oakland",
      "state": "CA",
      "zip": "94612",
      "country": "US",
      "phone": "18000001111",
      "postal_code": "94612"
    }
  }
}
```

## Error responses

| HTTP Status | Description |
| - | - |
| 422 | Unprocessable entity. Use `error_code` to determine the cause: - `422003` — The token network returned an unresolvable error. The token state was **not** changed. Retry later; if the error persists, contact Marqeta support. - `422004` — Marqeta detected a state mismatch between Marqeta and the network. The `error_message` field reports both states (for example, `Marqeta state: <marqeta_state>. TSP state: <tsp_state>.`). Reconcile the digital wallet token's state with the network before retrying. |

### Sample error response body

```json JSON lines wrap theme={null}
{
  "error_message": "Unsuccessful response from token services gateway",
  "error_code": "422003"
}
```


## Related topics

- [Digital Wallet Provisioning Requests Overview](https://www.marqeta.com/docs/core-api/tokenization-as-a-service/provisioning-requests.md)
- [Tokenization-as-a-Service Overview](https://www.marqeta.com/docs/core-api/tokenization-as-a-service.md)
- [Create a digital wallet token provisioning request for Google Wallet as part of UPP](https://www.marqeta.com/docs/core-api/digital-wallets-management/google-wallet/create-token-provisioning-request-google-as-part-upp.md)
- [Create a request for Google Wallet web push provisioning (UPP)](https://www.marqeta.com/docs/core-api/digital-wallets-management/google-wallet/create-request-google-web-push-provisioning-upp.md)
- [Create request for Google Wallet web push provisioning](https://www.marqeta.com/docs/core-api/digital-wallets-management/google-wallet/create-request-google-web-push-provisioning.md)
