Troubleshooting

These errors are specific to the Google Pay Web API and may appear when a Promise returned by loadPaymentData is rejected. The Web troubleshooting guide covers issues related to the following error types:

Registration and access

This merchant is not enabled for Google Pay.
The Google Pay API requires a Google merchantId for sites configuring PaymentsClient for a PRODUCTION environment. A Google merchantId is associated with one or more fully-qualified domains through the Google Pay Developer Profile. Check the returned error details for more information.
You have not registered to use this API.
You have not completed the process to register your websites for the Google Pay API. Review our Integration checklist to register and request a review of your website's use of the Google Pay API.
This merchant profile does not have access to this feature.
Google hasn't configured your website to use the Google Pay API. Review our Integration checklist to request a review of your website's use of the Google Pay API and become whitelisted.
This merchant has been disabled. Please contact us for more information.
Contact us to learn more about the required steps to re-enable the Google Pay API for your Google Account.
Your domain "example.com" is not registered to use this API.
The domain where your checkout is hosted isn't associated with the merchantId you're using. Make sure the merchantId parameter is correct. Contact us for more information about registering your domains for the Google Pay API.
The Google Pay API should be called in secure context!
The Google Pay API can only be used on websites in a secure context. For more information, see Secure contexts.
No keys found for this merchant profile
You must register your public encryption key with Google through the Google Pay Developer Profile to complete a tokenizationType: 'DIRECT' integration. Review our Integration checklist to request a review of your website’s use of the Google Pay API and to submit your public encryption key.

merchantId

merchantId must be set!
The merchantId parameter inside PaymentDataRequest must be set to the value provided in your Google Pay Developer profile. A merchantId parameter is only required when using a PaymentsClient configured for a PRODUCTION environment. Review our Integration checklist to request a review of your website's use of the Google Pay API and to obtain your merchantId.
merchantId is not a string
The merchantId parameter inside PaymentDataRequest must always be a string. Ensure the type of the merchantId parameter you're using is a string before calling the API.
merchantId is not registered.
The merchantId parameter inside PaymentDataRequest must be associated with an active Google Pay Developer Profile. Review our Integration checklist to request a review of your website's use of the Google Pay API and to obtain your merchantId.

Gateway validity

Unknown gateway 'yourgateway'
The gateway parameter you specified in paymentMethodTokenizationParameters.parameters is not currently supported by Google. Contact your gateway for more information on their gateway identifier and associated fields such as gatewayMerchantId.
Gateway 'example' cannot be used in production mode.
The example gateway parameter value is only used for testing purposes and can't be used with a PaymentsClient configured for a PRODUCTION environment. Contact your gateway for more information about the PaymentMethodTokenizationSpecification parameters values you need to set for use with the Google Pay API.

Object validity

Google Pay's PaymentDataRequest is not valid json.
The parameter provided to loadPaymentData must always be a valid PaymentDataRequest object.
transactionInfo must be set!
The transactionInfo parameter inside PaymentDataRequest must always be a valid TransactionInfo object.

Direct merchants

Signature verification
You might encounter a signature verification error if the merchantId is wrong. This can happen in the TEST environment when you use the Tink library. To avoid this issue, set YOUR_MERCHANT_ID to 01234567890123456789 in:
.recipientId("merchant:YOUR_MERCHANT_ID")
Cannot decrypt token
If you use the Tink library to decrypt a token, take note of the following:
  • Ensure that the Google Pay API response environment corresponds with the Tink environment. For more details, see the following example:
    • If the Google Pay API response was returned by the environment TEST, then Tink points to the test environment for decryption.
  • Do not modify the response from Google Pay API before it's passed to Tink. Ensure that you pass the entire token returned from the Google Pay API response. For more details, see the following note:
  • Verify that you have the proper private key associated with the public key that you registered with Google.
Generate public and private key pair on Windows
If you're on Windows, and you want to follow the steps mentioned in Use OpenSSL to generate a private and public key pair, make sure you install Cygwin on your machine. This is needed to run the Linux commands.

Error objects

Error objects are objects that are returned by a rejected promise from a client JavaScript method.

PaymentsError
This object contains details about errors returned by client JavaScript methods. Errors might not be displayed in a user-facing dialog.
Property Type Description
statusCode string Short code that describes the type of error.
statusMessage string Developer-facing message that describes the error encountered and possible steps to correct it.
Common errors
This object displays errors that you might encounter across all JavaScript methods. Be sure to check the developer console for additional error messages.
Status Code Description
BUYER_ACCOUNT_ERROR The current Google user is unable to provide payment information.
DEVELOPER_ERROR

A passed parameter is improperly formatted. An error message may appear in the browser console for all configured environments.

MERCHANT_ACCOUNT_ERROR

The site accessing the Google Pay API does not have the right permission. This could be due to either an incorrect configuration or an incorrect merchant identifier set in the request. Check the statusMessage field for more details. If you continue to have trouble, please contact support.

INTERNAL_ERROR General server error.