The Web troubleshooting guide covers issues and questions related to the following topics.

- [Registration access](https://developers.google.com/pay/api/web/support/troubleshooting#registration-access)
- [merchantID](https://developers.google.com/pay/api/web/support/troubleshooting#merchantId)
- [Gateway validity](https://developers.google.com/pay/api/web/support/troubleshooting#gateway-validity)
- [Object validity](https://developers.google.com/pay/api/web/support/troubleshooting#object-validity)
- [Direct merchants](https://developers.google.com/pay/api/web/support/troubleshooting#direct-merchants)
- [CardInfo](https://developers.google.com/pay/api/web/support/troubleshooting#cardinfo)
- [OR_BIBED_15 errors](https://developers.google.com/pay/api/web/support/troubleshooting#OR-BIBED-15)

## Registration and access

You might encounter the following errors at some point in your integration. This list provides
some helpful troubleshooting advice should these errors arise.

This merchant is not enabled for Google Pay
:   The Google Pay API requires a Google merchantId for sites that configure
    `PaymentsClient` for a `PRODUCTION` environment. A Google
    `merchantId` is associated with one or more fully qualified domains through the
    [Google Pay \& Wallet Console](https://pay.google.com/business/console?utm_source=devsite&utm_medium=devsite&utm_campaign=devsite). Check the returned
    error details for more information.

This merchant has not completed registration to use Google Pay API. Please go to console (https://pay.google.com/business/console) to verify.
:   You haven't completed the process to register your websites for the Google Pay API. Review
    [Request production access](https://developers.google.com/pay/api/web/guides/test-and-deploy/request-prod-access)
    to register using the [Google Pay \& Wallet Console](https://pay.google.com/business/console?utm_source=devsite&utm_medium=devsite&utm_campaign=devsite) 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
    [Request production access]() to request a review of your website's use of the
    Google Pay API via the [Google Pay \& Wallet Console](https://pay.google.com/business/console?utm_source=devsite&utm_medium=devsite&utm_campaign=devsite).

This Google Pay API integration is disabled. Please contact us for more information (https://developers.google.com/pay/api/faq#how-to-get-support).
:   [Contact us](https://developers.google.com/pay/api/web/support/how-to-get-help) 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`
    that you use. Make sure the `merchantId` parameter is correct and that your domain
    is registered via the [Google Pay \& Wallet Console](https://pay.google.com/business/console?utm_source=devsite&utm_medium=devsite&utm_campaign=devsite).

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](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts).

No keys found for this merchant profile
:   You must register your public encryption key with Google via the
    [Google Pay \& Wallet Console](https://pay.google.com/business/console?utm_source=devsite&utm_medium=devsite&utm_campaign=devsite) to complete a
    `DIRECT``tokenizationSpecification` `type` integration.

## merchantId

You might encounter the following errors related to `merchantId` at some point in your
integration. This list provides some helpful troubleshooting advice should these errors arise.

merchantId must be set!
:   The `merchantId` parameter inside
    [`PaymentDataRequest`](https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest)
    must be set to the value provided using the
    [Google Pay \& Wallet Console](https://pay.google.com/business/console?utm_source=devsite&utm_medium=devsite&utm_campaign=devsite). A
    `merchantId` parameter is only required when you use a `PaymentsClient`
    configured for a `PRODUCTION` environment. Review our
    [Integration checklist](https://developers.google.com/pay/api/web/guides/test-and-deploy/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`](https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest)
    must always be a string. Ensure that the type of the `merchantId` parameter you use
    is a string before you call the API.

merchantId is not registered.
:   The `merchantId` parameter inside
    [`PaymentDataRequest`](https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest)
    must be provisioned via the [Google Pay \& Wallet Console](https://pay.google.com/business/console?utm_source=devsite&utm_medium=devsite&utm_campaign=devsite).
    Review [Request production
    access](https://developers.google.com/pay/api/web/guides/test-and-deploy/request-prod-access) for more information.

## Gateway validity

You might encounter the following errors related to gateway validity at some point in your
integration. This list provides some helpful troubleshooting advice should these errors arise.

Unknown gateway *'yourgateway'*
:   The gateway parameter you specified in `paymentMethodTokenizationParameters.parameters`
    isn't 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 that you need to set for use with the Google Pay API.

## Object validity

You might encounter the following errors related to object validity at some point in your
integration. This list provides some helpful troubleshooting advice should these errors arise.

Google Pay's PaymentDataRequest is not valid json
:   The parameter provided to
    [`loadPaymentData`](https://developers.google.com/pay/api/web/reference/client#loadPaymentData)
    must always be a valid
    [`PaymentDataRequest`](https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest)
    object.

transactionInfo must be set!
:   The `transactionInfo` parameter inside
    [`PaymentDataRequest`](https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest)
    must always be a valid
    [`TransactionInfo`](https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo)
    object.

## Direct merchants

You might encounter the following errors related to direct merchants at some point in your
integration. This list provides some helpful troubleshooting advice should these errors arise.

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 paymentmethodtoken library](https://github.com/tink-crypto/tink-java-apps). To avoid this issue, set
    <var translate="no">YOUR_MERCHANT_ID</var> to
    `12345678901234567890` in:
:

    ```
    .recipientId("merchant:YOUR_MERCHANT_ID")
    ```

Cannot decrypt token
:   If you use the [Tink paymentmethodtoken library](https://github.com/tink-crypto/tink-java-apps) to decrypt a token, take note of the
    following:

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](https://developers.google.com/pay/api/processors/guides/implementation/payment-data-cryptography#using-openssl), make sure you install
    [Cygwin](https://www.cygwin.com/) 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.