Skip to content

Stripe payments problemStripe: Apple Pay or Google Pay doesn’t show in the payment form

Cards work, but the Apple Pay or Google Pay button never appears, often only on the live site or only on one subdomain. Stripe shows a wallet only when the domain, the integration and the shopper’s device all qualify. Here is each check in Stripe’s words, or hand it over at a fixed price.

Short answer

Register every domain and subdomain that shows the payment form on the Payment method domains page, in live mode as well as each sandbox. If the form sits in an iframe, register both domains. Then confirm the wallets are on in your Payment Method Configurations, and test on a device with a real card in the wallet, outside a private window.

Why the wallet button is missing, and the fix

  1. 01

    The domain isn’t registered, or only in one environment

    “You must register every domain and sub-domain separately for each environment, including live mode and each sandbox.” Stripe, Test Apple and Google wallet rendering

    Stripe needs each web domain that shows Elements or the embedded Checkout form registered, including www and other subdomains. A domain registered in a sandbox doesn’t cover live mode, while Stripe says a domain registered in live mode is also registered in your sandboxes automatically. Add it on the Payment method domains page in the Dashboard, or with the API.

    curl https://api.stripe.com/v1/payment_method_domains \
      -u "sk_test_...:" \
      -d "domain_name=example.com"
  2. 02

    The payment form is inside an iframe

    “If the top-level domain differs from the iframe domain, the top-level domain and the iframe’s source domain must both be registered payment method domains on the associated account.” Stripe, Register payment method domains

    If your checkout loads in an iframe from another domain, Stripe needs both domains registered. For Apple Pay, the iframe also needs allow="payment", and browsers before Safari 17 need the two origins to match.

  3. 03

    The wallets aren’t turned on for your integration

    “Enable supported wallets in your Payment Method Configurations to make sure Dynamic Payment Methods can render them.” Stripe, Test Apple and Google wallet rendering

    With dynamic payment methods, Stripe shows what your Payment Method Configuration allows. If you list payment method types yourself, wallets come with card: include card when you create the PaymentIntent or initialize Elements.

  4. 04

    The test device doesn’t qualify

    “Don’t use a Chrome incognito window or Safari private window.” Stripe, Test Apple and Google wallet rendering

    The wallet needs at least one card, the browser must be allowed to check for payment methods, and the device and region must be supported. Stripe’s wallet test page shows whether your device can see the wallet at all, before you debug your own code.

Checked against the vendor’s docs on : Stripe docs: Register payment method domains; Stripe docs: Test Apple and Google wallet rendering; Stripe docs: Apple Pay on the web.

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

Related: Stripe works in test mode but not live · Stripe card declined: generic_decline · Stripe subscription stuck incomplete · Stripe cancel at period end

Questions

More on this error

Can I test Apple Pay with Stripe test cards?

No. Stripe says you can’t save Stripe test cards or Apple Pay test cards to Apple Pay wallets. To test Apple Pay, use a real card in the wallet with your test API keys; Stripe returns a test token, so the card isn’t charged.

Do I need Apple’s merchant validation steps?

Not with Stripe. Stripe’s Apple Pay guide says Stripe handles Apple merchant validation for you, and not to follow the merchant validation process in Apple’s documentation.

We run a Connect marketplace. Whose account registers the domain?

Stripe says platforms that create direct charges must register domains for their connected accounts through the API, not the Dashboard. For other charge types that API step isn’t required, and the domain must be registered for the account running the charge.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; we reply by email, usually within one business day.