# google pay button not rendering: isReadyToPay returns false in production

TL;DR: isReadyToPay is telling you the production setup is incomplete: wrong environment flag, unregistered merchant, or a gateway config Google does not recognize. Set the environment to PRODUCTION, register in the Google Pay Business Console, and match your gateway and merchant IDs exactly. The button only renders when all three are right.

```text
google pay button not rendering: isReadyToPay returns false in production
```

1. Check the environment value you pass to the Google Pay client; in production it must read PRODUCTION, not TEST. Expected: flipping it changes the result.
2. Confirm your business is registered and approved in the Google Pay Business Console. Expected: the console shows an active integration.
3. Verify the gateway name and gateway merchant ID in your payment method config match what your processor gave you, character for character. Expected: no typos, no test IDs in prod.
4. Reload and call isReadyToPay again on a real device with a real Google account. Expected: it returns true and the button renders.
5. Keep a TEST build for development; never ship the TEST flag to production. Expected: dev still works, prod now works too.

When this applies:
- Button shows in staging but not production
- isReadyToPay false only in the prod build
- New Google Pay integration

When it doesn't:
- The button renders but the payment fails (processor or tokenization issue)
- The device has no Google Pay support at all (expected false, hide the button gracefully)

Compatibility: Google Pay API for Web; Stripe as gateway (or your processor's gateway name); Chrome and supported browsers.

### Google Pay isReadyToPay false production
Check environment flag, registration, and gateway IDs in that order.

### Google Pay button not showing on live site
Staging lies to you; production enforces all three checks.

### isReadyToPay returns false with production config
A test gateway merchant ID in the prod config is the most common cause.

Why it happens: isReadyToPay checks three things: the environment flag, whether the merchant is registered with Google, and whether the gateway configuration is one Google recognizes. Production enforces all three; TEST skips most of them, which is why staging lies to you.

Edge cases: gateway merchant IDs are often different between test and live; copy-paste errors here are the number one cause. Business Console approval can take a day or two for new accounts. Some ad blockers and privacy extensions break the Google Pay script load, which also reads as a false.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_kpJBaieSomvseTEk-iofrw
