Apple Pay JS API - applePayCapabilities no longer working

We’ve noticed that the ApplePaySession.applePayCapabilities() check has stopped working correctly in Safari over the past couple of days.

Behavior observed:

1.) In Safari Private Window, paymentCredentialStatus behaves as expected and case 1 is triggered.

2.) In a normal Safari window, it always triggers case 3 (paymentCredentialsUnavailable), even when the user has active cards provisioned in Wallet.

We tested across multiple devices, and the behavior is consistent.

if (window.ApplePaySession) {

var merchantIdentifier = 'YOUR MERCHANT IDENTIFIER';

var promise = ApplePaySession.applePayCapabilities(merchantIdentifier); promise.then(function(capabilities) {

switch (capabilities.paymentCredentialStatus) {

  case "paymentCredentialsAvailable":

    // Show Apple Pay button as primary option

  case "paymentCredentialStatusUnknown":

    // Offer Apple Pay

  case "paymentCredentialsUnavailable":

    // Consider showing Apple Pay button

  case "applePayUnsupported":

    // Don’t show Apple Pay button

}

})

}

This used to work fine until a few days ago, but now the capability check in non-private Safari windows always indicates unavailable, even with valid active cards.

Has anyone else faced this issue recently? Could this be a Safari regression or a change on Apple’s side?

Thanks in advance!

This smells like a Safari-side change/regression in the capability probe, not in the payment sheet itself. Treat applePayCapabilities() as advisory only for now.

Implement a graceful fallback: always show the button when Apple Pay is supported, then try to launch a session. Use canMakePayments() (and optionally canMakePaymentsWithActiveCard) only to influence prominence, not eligibility. This is consistent with Apple’s guidance and long-standing WebKit advice.

File a bug with reproducibles via Feedback Assistant.

Assume this is a Safari capability-probe issue (and possibly anti-fingerprinting collateral) rather than your integration. Don’t block Apple Pay on the probe; keep the button visible and let the session tell you the truth. This both fixes your users today and aligns you with Apple/WebKit’s recommended UX.

Apple Pay JS API - applePayCapabilities no longer working
 
 
Q