apple-developer-merchantid-domain-association file at /.well-known/ is missing, 404ing, or wasn't re-uploaded after Apple's late-2025 format rotation, (2) your Stripe.js / Braintree / WooPayments SDK is too old to pass Safari 18's strict SCA + 3DS2 handshake, or (3) your Content-Security-Policy headers are blocking apple-pay-gateway.apple.com. Fix the domain file first — it resolves ~40% of cases in under 5 minutes and requires zero code changes.If your Apple Pay button vanished, grayed out, or throws "Payment Not Completed" after the 2026 Safari/iOS updates — here's exactly what broke and how to fix it. From a San Diego dev who ships real checkout repairs.
apple-developer-merchantid-domain-association.txt file format in late 2025. If you haven't re-uploaded the new file to /.well-known/ on every subdomain (including www vs non-www), the button silently disappears on iOS 18+. Log into Apple Pay Merchant Portal and re-verify — this alone fixes ~40% of 2026 cases.supportedNetworks with mir and girocard added.Content-Security-Policy headers in 2025, you likely stripped applepay:// and https://apple-pay-gateway.apple.com from connect-src and frame-src. Whitelist those plus enable allow-payment-request on any embedded iframes.PKPaymentAuthorizationError or merchant validation failed.yourdomain.com/.well-known/apple-developer-merchantid-domain-association — should return 200, not 404.Shopify: Settings → Payments → Apple Pay → "Reactivate" (it auto-deactivates if domain file 404s for 48hrs).
Stripe: Upgrade to stripe-js ≥ v3.2026, re-register domains via API, check webhook payment_intent.payment_failed for reason codes.
WooCommerce: WooPayments plugin must be 7.8+. Old "Apple Pay for WooCommerce" plugins are dead in 2026.
Custom: Rebuild your ApplePaySession with API v14 — v3 is deprecated as of March 2026.
Chrome on iOS is technically WebKit underneath, but it doesn't expose the ApplePaySession JS API the way Safari does. Apple Pay only works in mobile Safari, desktop Safari, and inside iOS WebViews that explicitly enable it. If your buyer is in Chrome iOS, they'll never see the button — that's not a bug, that's Apple's intentional restriction. Show them a fallback (card form, PayPal) instead of a broken Apple Pay button.
No — and this is where most people break it. If you're using Stripe (or Braintree, Adyen, Square), they hold the Merchant ID for you. You just register your domain with the PSP via their dashboard or API. The mistake: registering your own Apple Merchant ID in the Apple Developer Portal AND using Stripe — they conflict and Apple Pay silently fails. Pick one path. For 95% of e-commerce, use the PSP's Merchant ID.
Three usual suspects: (1) you registered staging.yourdomain.com for the domain verification but not www.yourdomain.com, (2) your prod CSP is stricter than staging and blocks connect-src https://apple-pay-gateway.apple.com, or (3) your prod Stripe account is in test mode for Apple Pay even though card payments work. Check Stripe Dashboard → Settings → Payment methods → Apple Pay → ensure it says "Live" not "Test."
Hit this URL in any browser: https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association. You should see a long string of base64 — not a 404, not an HTML page, not a redirect. If it redirects (e.g., http→https or non-www→www), Apple's verifier rejects it. Serve the file directly with a 200 response. Also check www AND apex if you support both.
Use Stripe (or your existing PSP). Direct Apple Pay integration via the Payment Request API gives you ~3 cents in saved fees per transaction in exchange for owning every breaking change Apple ships. In 2026, that's the SCA flow, the merchant token format, the domain file rotation, and the iOS 18 "Tap to Confirm" UX shift — Stripe absorbs all of those for you. The only reason to go direct is if you're processing >$50M/yr and have a payments engineer on staff.
I've fixed Apple Pay on 30+ San Diego checkouts since the 2026 Safari update — usually in under an hour. No retainer, $100/hr, text me your URL and I'll tell you what's broken before you pay a dime.
Send me your checkout URL. I'll diagnose it free, quote the fix honestly, and ship same-day if it's straightforward.
Text PJ Now Call 858-461-8054Don't see what you were looking for?
Text PJ a sentence about what you actually need — I'll build you a free custom shareable on the house. No email, no funnel, no SOW.
📲 Text PJ — free shareable