WooCommerce

Apple Pay WooCommerce Fix: 6 Hidden Causes in Blocks

The gateway says Apple Pay is enabled. The documentation says it should appear. Your checkout shows nothing. An Apple Pay WooCommerce setup has more moving parts than any other payment method, and the failure is always silent — no error, no warning, just a button that is not there. Here is how to find which part is missing, in the order that takes the least time.

How Apple Pay WooCommerce support actually works

The three layers Apple Pay needs in WooCommerce: a gateway that offers it, a domain registered and verified with that gateway via the association file, and an Express Checkout block present on the checkout page.
Knowing which layer you are in halves the diagnosis time, because each one fails in a way the other two settings screens will never mention.

Apple Pay WooCommerce is not a single setting. Three separate systems have to agree before a button appears. Knowing which is which halves the diagnosis time.

LayerWhat it doesWhere it breaks
The gatewayStripe, Square, Mollie and others offer Apple Pay as a wallet on top of card processingWallet not enabled in the gateway dashboard
Domain verificationApple checks that you control the domain by fetching a file from itThe file 404s, or the domain was never registered
The checkout front endAn express payment area renders the button, before the normal formThe block was removed, or the shortcode checkout has no hook for it

Every Apple Pay WooCommerce problem we have been called in for sits in one of those three rows. The layers do not report each other’s failures, which is exactly why the symptom is a blank space rather than a message.

Before anything else: open the site in Safari, on a Mac or an iPhone, signed into iCloud with a card in Wallet. Apple Pay is not rendered in Chrome on Windows, in Firefox, or on Android under any configuration. A remarkable share of “it is broken” reports end here.

The five-minute Apple Pay WooCommerce check

Checking the Apple Pay domain association file with curl: a 200 means the file is served correctly, while a 404 or 403 usually means a security plugin is blocking the dot-well-known directory.
Security plugins that blanket-block dotfiles kill Apple Pay and never say so. This command finds it before you open a single settings page.

Run these four in order before you touch any Apple Pay WooCommerce setting. Each one rules out a whole layer.

  1. Is the association file served? The single most useful command, below.
  2. Is the domain registered in your gateway’s Apple Pay settings? Not just enabled — registered, with this exact hostname.
  3. Is the express payment area present on the checkout page? Edit the page and look at the block tree.
  4. Does the cart qualify? Try a single simple product with normal shipping, nothing else.

The one command that settles half of it

curl -sI https://example.com/.well-known/apple-developer-merchantid-domain-association | head -1

You want 200. A 404 means Apple cannot verify you and the button will never render, no matter what the gateway dashboard says. A 403 means something is deliberately blocking the path. Either way you now know the Apple Pay WooCommerce fault is in layer two and you can stop looking at payment settings.

Six causes, in the order they occur

#CauseTell
1Testing in the wrong browserWorks on an iPhone, not on your desktop
2Domain association file 404sThe curl above returns 404 or 403
3Domain never registered with the gatewayFile serves fine, still no button
4Express Checkout block removedButton missing on checkout, present on cart
5Wallet disabled in the gatewayNo express area renders at all
6The cart is not eligibleWorks with one product, not with another

1. You are testing in a browser that will never show it

Worth repeating because it costs the most wasted hours of any Apple Pay WooCommerce fault. Apple Pay renders in Safari on macOS and iOS, and in some embedded Apple webviews. Chrome on a Mac does not qualify. A staging URL opened on a Windows laptop does not qualify. Before escalating an Apple Pay WooCommerce issue to anyone, confirm on a real iPhone.

2. The domain association file is not being served

This is the big one, and it accounts for more broken Apple Pay WooCommerce setups than the other five combined. Apple fetches a file from a path beginning with a dot-directory, and dot-directories are exactly what security tooling blocks by default.

What blocks itWhy
Security plugin hardening rulesBlanket deny on /.well-known/ or on dotfiles
.htaccess or nginx dotfile ruleA standard hardening snippet, copied in years ago
A host migrationThe file lives on disk, not in the database, so it does not travel
A redirect pluginCatch-all rules can swallow the path
A CDN or firewall ruleBlocked before it ever reaches WordPress

The host-migration row deserves emphasis because it is so undramatic. Apple Pay WooCommerce worked for two years, you moved hosts, the database came across perfectly, and a single file in a hidden directory did not. Nothing errors. The button simply stops appearing, and nobody notices until a customer mentions it. This belongs on the post-move checklist alongside everything in our guide to changing WordPress hosting.

If the file is genuinely missing, re-run the domain registration from your gateway’s settings — most gateways write the file for you. If your hardening rules block the path, allow it explicitly:

.htaccess, above the WordPress block

<IfModule mod_rewrite.c>
	RewriteEngine On
	# Let Apple and the certificate authority reach .well-known
	RewriteRule ^\.well-known/ - [L]
</IfModule>

3. The domain is enabled but never registered

Enabling Apple Pay WooCommerce payments in a gateway dashboard and registering a domain are two different actions, and the wording rarely makes that clear. Register the exact hostname customers use. If you serve both example.com and www.example.com, register the one that actually resolves — a mismatch there produces the same silent blank as a missing file.

Staging counts as a separate domain. An Apple Pay WooCommerce button that works on live and not on staging is usually correct behaviour, not a bug. Register the staging hostname too if you need to test there, and remember to remove it when the site is retired.

4. The Express Checkout block was deleted

This is the cause that has grown with the blocks migration. The Cart and Checkout blocks render express payments through their own inner block. If a designer tidied the checkout template and removed it — or rebuilt the page from scratch — the wallet buttons have nowhere to render.

Edit the checkout page, open the list view, and look for the express payment block inside the Checkout block. If it is not there, re-insert it. The rest of the blocks migration story, including what else silently changes, is in our guide to WooCommerce checkout blocks.

On a classic shortcode checkout the equivalent is a gateway-provided hook or setting for where the buttons appear. Same failure, different mechanism: nothing renders and nothing complains.

5. The wallet is off at the gateway

An Apple Pay WooCommerce toggle inside WordPress is not the whole story. Check the gateway’s own payment-method list rather than the WooCommerce settings screen. Many gateways have a per-method toggle — cards on, wallets off — that WooCommerce has no visibility of. Some also require you to accept Apple’s terms once inside the gateway dashboard before any Apple Pay WooCommerce traffic is allowed at all.

6. The cart is not eligible

Some carts cannot use express checkout at all, and an Apple Pay WooCommerce button correctly hides itself rather than failing at payment:

  1. An unsupported currency for your merchant account.
  2. Subscriptions or deposits, depending on the gateway’s support.
  3. Mixed physical and downloadable items with conflicting shipping rules.
  4. A shipping destination your rates do not cover.
  5. A test-mode cart being opened with a live card, or the reverse.

Test with the plainest possible cart: one simple product, standard shipping, your own country. If the Apple Pay WooCommerce button appears there and not on a real cart, you have an eligibility rule rather than a configuration fault, and the fix is in your shipping or product setup.

The seventh cause nobody lists: caching

Cart and checkout pages must never be cached, and a cached checkout breaks Apple Pay WooCommerce in a way no settings screen will reveal. When they are, a cached copy of the page is served to everyone, and any element that depends on the visitor’s browser — which is precisely what an express payment button is — either never appears or appears for people who cannot use it.

# Checkout should never come back as a cache hit
curl -sI https://example.com/checkout/ | grep -iE 'x-litespeed-cache|cf-cache-status|x-cache'

A hit there is your answer. Exclude cart, checkout and account pages in your cache plugin, then purge. The same class of problem causes the broader slowness and staleness issues covered in speeding up a slow WooCommerce store.

While you are in the console, check for a mixed content warning too. Apple Pay requires a fully secure page, and an insecure asset on the checkout will block the wallet script along with everything else.

Is it worth the trouble?

Honestly: on a store with meaningful mobile Safari traffic, an Apple Pay WooCommerce button earns its keep. On a store whose customers are ninety per cent desktop Windows, it is a nice-to-have you should not spend a day on.

SituationWorth prioritising?
Over half your sessions are iOS SafariYes — this is the highest-value checkout change available
Consumer goods, low order value, impulse purchaseYes — typing a card is where those carts die
B2B, invoiced orders, purchase ordersNo — your buyers are not paying by wallet
Mostly desktop Windows trafficSet it up, but do not schedule a project around it

The mechanism is simple enough: the slowest step in any checkout is typing a card number on a phone, and an Apple Pay WooCommerce button removes that step entirely. Check your own analytics for the iOS Safari share before deciding — that number, not a case study, is what tells you the size of the prize. The wider set of levers is in WooCommerce checkout optimisation.

Which gateway you are on changes the answer

The three layers are the same everywhere, but the settings screens are not, and knowing where to click saves a support ticket.

GatewayWhere the domain is registeredCommon gotcha
StripeSettings → Payment methods → Apple Pay → domainsRegistered on the wrong Stripe account, or in test mode only
SquareDeveloper dashboard, per applicationSandbox and production are separate registrations
MollieAutomatic once the method is activatedActivation needs manual approval and can take days
PayPalWallet handled through its own express flowNot an Apple Pay WooCommerce path in the usual sense

The test-versus-live split in the first two rows is responsible for a genuinely unreasonable number of wasted afternoons. A domain registered while the gateway was in test mode does not carry over when you go live, so an Apple Pay WooCommerce button that worked perfectly all through development disappears on launch day. Register the domain again in live mode and it returns immediately.

The PayPal row is worth stating plainly because the two get conflated. PayPal’s express buttons are its own product with its own eligibility rules; they are not an Apple Pay WooCommerce integration and they do not use Apple’s domain verification at all. If your store offers both, expect two independent sets of settings and two independent ways to fail.

The order to work through it

Sequence saves more time here than knowledge does, because each step eliminates a whole layer rather than a single setting.

  1. Confirm the device. Safari, Apple hardware, card in Wallet. Thirty seconds.
  2. Curl the association file. A 404 or 403 ends the investigation here.
  3. Check live versus test mode in the gateway, then the registered hostname.
  4. Open the checkout in list view and confirm the express payment block exists.
  5. Check the cache headers on the checkout URL.
  6. Simplify the cart to one plain product and retest.
  7. Place a real order and refund it.

Working top-down like this, most Apple Pay WooCommerce faults are identified inside ten minutes. Working bottom-up — starting with gateway settings, because that is where the feature lives — is how the same fault takes an afternoon, because the settings screen looks correct in every one of the six cases above.

Where this goes wrong

The mistakeWhat happensDo this instead
Testing in ChromeHours spent on a non-problemSafari on an Apple device, every time
Blanket-blocking dotfiles for securityKills Apple Pay and certificate renewalAllow /.well-known/ explicitly
Caching the checkout pageThe button appears for nobody, or for the wrong peopleExclude cart, checkout, account
Registering www when the site is bareVerification silently failsRegister the hostname that resolves
Rebuilding the checkout template from scratchExpress payment block is lostCheck list view before publishing
Assuming a host move carried everythingA hidden file does not travelRe-run domain verification after any move
Debugging with a subscription in the cartCorrect behaviour mistaken for a faultTest with one simple product

Verifying it properly

CheckHowPass
Association fileThe curl above200
Domain registeredGateway dashboardExact hostname listed, verified
Express block presentCheckout page, list viewInside the Checkout block
Not cachedResponse headers on /checkout/No cache hit
Real deviceiPhone, Safari, card in WalletButton renders above the form
A real orderSmall live purchase, then refund itOrder created, correct total

Do the last row. A rendered Apple Pay WooCommerce button is not proof of a working one. An Apple Pay WooCommerce button that renders is not the same as one that completes, and the difference — a shipping rate that does not resolve, a total that is a penny out — only shows up on a real transaction. Check afterwards that the order tracked correctly too; express checkout is one of the paths where analytics quietly stops reporting, as covered in WooCommerce tracking broken after blocks.

Apple’s own requirements for serving the association file and the supported browser list are at Apple’s Apple Pay developer pages, which is the authority when a gateway’s documentation and your results disagree.

Frequently asked questions

Why does the button show on the cart but not the checkout?

Because an Apple Pay WooCommerce button renders inside whichever express payment block is present, and they are separate blocks with separate express payment areas. The cart’s was left in place and the checkout’s was removed during a redesign. Check the checkout page’s list view.

Is an Apple Pay WooCommerce button worth it on a small store?

If any meaningful share of your traffic is iPhone Safari, yes — it is an afternoon of configuration rather than a project, and it removes the single slowest step in a mobile checkout. If your analytics show almost no iOS traffic, set it up when convenient and spend the time elsewhere.

Do I need an Apple Developer account?

No, not when you use a gateway. Stripe, Square and the rest hold the merchant relationship with Apple; you only need to verify your domain through their dashboard. A direct Apple Pay integration is a different and much larger project.

It worked yesterday and stopped today. What changed?

In order of likelihood: a security plugin updated its rules, a certificate or domain changed, the checkout page was edited, or the site moved. Run the curl first — it rules in or out the most common cause in one second.

Does Apple Pay work on a staging site?

Only if you register the staging hostname separately, and only over HTTPS. Most staging environments also sit behind basic authentication, which blocks Apple’s fetch of the association file.

Will adding it slow my checkout down?

Marginally — it is one more script on one page. Set against removing the card-entry step on mobile, that trade is not close. It is nowhere near the top of the list of things making a store slow.

Can I show Apple Pay only to Apple users?

That is the default. The gateway’s script checks whether the browser can actually pay before rendering anything, which is why the button is invisible rather than disabled elsewhere. You do not need a device-detection plugin, and adding one usually breaks caching.

Does Apple Pay WooCommerce support work with the classic checkout?

Yes. The gateway hooks its buttons into the classic template instead of an express payment block, so causes two, three, five and six apply unchanged — only cause four is specific to the blocks. The diagnosis order above works either way.

Does it reduce abandoned carts?

It removes one of the biggest causes of them on mobile, which is manual card entry. It does not touch the others — unexpected shipping costs, forced account creation, a slow page. Those are covered in reducing WooCommerce cart abandonment, and they are usually worth more than the wallet button on its own.