Integration checklist

Use the following checklist to ensure you've completed all of the required steps in your web integration.

About the test environment

A Google Pay API test configuration doesn't return live and chargeable payment information; it allows you to test elements of your purchase workflow:

  • Confirmation pages
  • Receipts
  • Billing address (optional)
  • Billing phone number (optional)
  • Shipping address (optional)
  • Email address (optional)

Initialize a new PaymentsClient with a JavaScript object containing an environment property set to TEST to use a test environment with an example payment data response.

var paymentsClient =
    new google.payments.api.PaymentsClient({environment: 'TEST'});

Test using your browser's developer console

Test your website on the latest version of a supported browser. Open your browser's developer tools to view console messages related to your website including errors or warnings from the Google Pay API JavaScript client library. The Google Pay API supports Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge, Opera, and UCWeb UC Browser.

Additional errors may be displayed in the Google payment selection dialog window after calling loadPaymentData(). When you click Continue or OK after viewing the error message, it may return additional details in the rejected Promise handled by your site.

Test on a compatible device

While the Google Pay API is available in many markets, tokenized cards are only available in a subset of countries. Test tokenized cards (if they're set as an allowed payment method) on an Android device with Chrome for Android version 59 or greater and Google Play services version 16.0.0 or greater. Test with a card stored in the Google Pay app, if supported in your country and by your issuing bank.

Test using remote debugging from Chrome for Desktop to view console errors and warnings output by Chrome for Android.

View logs from your Android device for more information about possible errors. You may view error logs using the Logcat tool window in Android Studio, using the adb logcat command-line tool, or inside an Android bug report. Search for WalletMerchantError to view error messages related to the Google Pay API.

adb logcat -s WalletMerchantError

Testing your integration

Before you submit your integration to Google for validation in with a PaymentsClient configured for environment TEST, ensure that you've fulfilled the exit criteria for each functional and branding check below.

1. Basics

Ensure that your existing risk checks and controls for card or PAN transactions are also applied to Google Pay transactions. Google Pay validation and fraud checks aren't intended to replace your risk management processes.
Ensure that you have read and are ready to accept our Terms of Service. Registration with the Google Pay API requires that your email address must be associated with a Google account, and preferably, a business email associated with your business domain (for example, Select Use my current email address instead during the Google account creation flow to associate your existing email with a Google account.
Use the data received from the Google Pay API only for transaction processing. All other use cases require a separate, express consent from the user.
Confirm the card networks and card authentication methods accepted by your payment processor in your country.
If completing a DIRECT tokenizationType integration, you must annually rotate your public encryption key through the Google Pay Developer Profile and provide PCI Attestation to Google. PCI Attestation can be submitted by a third-party or Qualified Security Assessor certified by the PCI Security Standards Council, and approved by an Approved Vendor or Qualified Assessor.

2. Brand testing

Use our approved assets and adhere to all elements of our Brand guidelines.
Ensure the Google Pay payment button only appears after your site has confirmed the user's ability to pay through the isReadyToPay() function.
Confirm that the displayed Google Pay payment button dimensions match similar buttons and elements on the page.
Choose an appropriate button based on the background color of the area where it appears.

3. Functional testing

Verify that loadPaymentData() is being called synchronously with the click of the Google Pay payment button, maintaining the browser's user activation behavior allowing the Google Pay API to display a payment sheet. Validate that the Google Pay payment sheet isn't blocked by pop-up blockers.

When you're requesting the CARD payment method type with PAN_ONLY card authentication complete the cards on file test:

  1. If applicable, remove all cards on file from
  2. Return to your integration.
  3. Click Google Pay.
  4. Validate that you see the option to add a card.
  5. Add a card from a supported network, as defined in parameters.allowedCardNetworks.
  6. Validate that you see the added card with a network logo in the selector.

(Applicable for Chrome on Android only)

When you're requesting the CARD payment method type with CRYPTOGRAM_3DS card authentication complete the Android device token test:

  1. Add an eligible card in the Google Pay Android application and check that your issuer is supported.
  2. Return to your integration.
  3. Click the Google Pay payment button.
  4. Validate that you see the added card with card art in the chooser.

If you have confirmed your processor supports 3D-Secure card authentication, you may proceed even if an Android device token is not available to you as an Android user or cardholder.

If you require a shipping address, test processing of the shipping address in varied states of completion:

  • Variances on a full name to be parsed into structured fields, such as John, John Doe, and Jane Doe Smith.
  • Accurately parse all address lines returned by the Google Pay API, which may exceed the total number of address lines typically collected in your standard checkout flow.
  • Verify that the returned country component of the address matches your site's supported shipping destinations. If you specified shipping restrictions, test that entering an unsupported shipping address isn't allowed in our payment sheet.

If you have implemented support for Authorize Payments:

  • Return ERROR transactionState and PaymentDataError with PAYMENT_AUTHORIZATION intent when payment authentication fails.

If you have implemented support for Dynamic Price Updates:

  • Add a card and address at the same time in the payment sheet. Update shipping options, order list, and total price.
  • Add and select a shipping address. Update shipping options, order list, and total price.
  • Select a shipping option. Update order list and total price.
  • Return PaymentDataError with SHIPPING_ADDRESS intent when shipping address doesn't have available shipping options.
  • Return PaymentDataError with SHIPPING_OPTION intent when the selected shipping option is invalid.
  • Return ERROR transactionState and PaymentDataError with PAYMENT_AUTHORIZATION intent when payment authentication fails.
If you require a telephone number, request it from the billing address and test parsing and storing the telephone number to the data standards of your website using different formats such as +8005550100, 18005550100, and (800) 555-0100.
Ensure that Google Pay is displayed on parity with other third-party payment methods.
For users who previously selected Google Pay at checkout and indicated Google Pay as their preference for payment within your website, Google Pay should be defaulted as the payment method for their subsequent purchase.
A final price must be displayed to the user before processing the transaction. If the amount to be charged has varied based on data received from the Google Pay API you are expected to show a confirmation page with a final price.
To expedite testing, enable test items for Google to purchase and provide instructions on how to access the Google Pay integration.