POST///
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 and then signed using the sender’s private key using JSON Web Signature (JWS). 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. 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 requestJSON
{
"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. 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. 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. 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 responseJSON
{
"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
{
"error_message": "Unsuccessful response from token services gateway",
"error_code": "422003"
}