Why do my Shop Pay / Apple Pay / PayPal buttons say "unavailable" even though I've turned them on?
Shop Pay, PayPal, Apple Pay, or Google Pay buttons showing greyed-out or "unavailable" is almost always a settings or environment mismatch, not a broken theme.
What's going on
You've turned on Shop Pay, Apple Pay, Google Pay, or PayPal in your payment settings, but the express checkout buttons on your product page or cart either don't appear at all, or show up greyed out with an "unavailable" label when a customer taps them. It's confusing because the provider looks active in your admin, and it doesn't always happen on every device - one teammate sees the button working fine, another gets the disabled version, and you're left wondering whether it's a theme bug, a broken integration, or something customers are actually hitting at checkout and abandoning over.
This is a genuinely common report across different themes and different combinations of wallets, and it rarely means the payment provider itself is broken. Express/dynamic checkout buttons sit at the intersection of several independent systems that all have to line up at once: your payment provider connection status, a theme-level display toggle, the customer's specific browser and device, your store's currency, and whether you're looking at a live published page versus a preview or password-protected one. If any single piece is off, the button can render as present-but-disabled rather than simply missing, which is what produces the "unavailable" message merchants keep running into.
Because the failure mode looks the same (a dead or greyed button) regardless of which underlying piece is misconfigured, it's easy to spend time re-toggling payment settings when the actual problem is a theme setting, or to blame the theme when the problem is that you're testing Apple Pay in a browser that was never going to support it. Working through the causes in a fixed order - provider connection, theme toggle, environment, then browser/currency - saves you from chasing the wrong one.
Why it happens
Dynamic checkout buttons are rendered client-side based on real-time eligibility checks, not a single on/off flag. Shopify has to confirm the payment provider is connected and verified, the theme has to have the button's display setting enabled for that specific page/template, and the customer's browser has to support that particular wallet's API (Apple Pay only works in Safari on Apple devices with a card in Wallet, Google Pay needs a Chrome/Android context with a saved card, for example). When any one of those checks fails, many themes show the button as present but disabled rather than hiding it - which reads as "unavailable" instead of simply absent.
A second common cause is environment: Apple Pay specifically requires domain verification tied to your live, published storefront, so buttons frequently behave differently (or don't fully activate) in the theme editor's preview, on an unpublished theme, or behind a storefront password. Merchants testing changes right after enabling a wallet often check the preview first and see the disabled state, then assume it's broken when the live site would actually work.
Finally, currency and regional support vary by wallet and card network, so a store selling in a currency or market a given wallet doesn't fully support in that region can see inconsistent button availability that has nothing to do with store configuration at all.
5 ways to fix it
Check that every wallet is actually connected and activated, not just "visible" in settings
In Shopify admin, go to Settings > Payments. Shop Pay, Apple Pay, and Google Pay ride on top of Shopify Payments, so if Shopify Payments isn't your active gateway (or is still pending activation/verification), those wallets stay dark no matter what your theme does. PayPal Express Checkout is separate: it needs your PayPal Business account connected and verified inside that same Payments settings page. If any of these show "pending," "needs attention," or an unlinked account, that's your answer before you touch theme code at all.
Confirm you're testing on the live, published, non-password-protected store
Apple Pay in particular requires domain verification against your live storefront URL, and several wallets simply don't render their real, clickable state inside the theme editor preview or on a store still behind the storefront password. If you're clicking around in Customize mode or a dev/staging URL, greyed-out or "unavailable" buttons can be expected behavior, not a bug. Open the actual product and cart pages on your published domain (password removed, or accessed via the preview link that bypasses it) before troubleshooting further.
Verify the dynamic checkout button setting is turned on in your theme
Most Online Store 2.0 themes (Dawn and its forks included) have a "Show dynamic checkout buttons" checkbox on the product page's Buy Buttons block, and a separate one for the cart. If a theme update, app, or previous edit unchecked it, the wallets you enabled in Payments settings simply won't have anywhere to render. Check this setting on every template that should show express checkout - product pages, quick-view drawers, and cart drawer/page can each have their own toggle depending on the theme.
Rule out currency, region, and browser mismatches
Apple Pay and Google Pay depend on the card networks and currencies your store and the customer's device/browser combination both support - testing Apple Pay in Chrome on Windows, or Google Pay in Safari, will show it as unavailable because the browser itself doesn't support that wallet, not because your store is misconfigured. Similarly, if your store's presentment currency isn't one the wallet supports in the customer's region, the button can appear or stay hidden/greyed depending on the theme's handling. Test each wallet in its native browser/OS pairing (Apple Pay in Safari on Mac/iOS, Google Pay in Chrome on Android/desktop) before concluding it's broken.
Check for app or custom code interference
Checkout customization apps, custom product form overrides, or theme code that replaces the default {% form 'product' %} block can strip out the dynamic checkout button markup entirely or override it with a custom "Add to cart" only flow. If the button worked before a theme or app change, use the theme editor's version history (or a duplicate theme) to compare the Buy Buttons block before and after, and temporarily disable checkout-related apps one at a time to isolate the cause.
Bottom line
Most "unavailable" express checkout buttons come down to one of a handful of causes: an unconnected or unverified wallet in Settings > Payments, a dynamic checkout toggle switched off in the theme's Buy Buttons block, testing on a preview/password-protected store instead of the live site, or a browser/wallet mismatch that's expected behavior rather than a bug. Work through these in order on the actual published store before assuming it's a theme defect - and if the cause turns out to be custom checkout code or an app conflict that's beyond a settings fix, that's a case for a developer to look at your specific theme, not a generic app install.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.