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.



// Check if the Apple Pay JS API is available.

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!




iPhone 17

Posted on Sep 29, 2025 11:54 PM

Reply
3 replies

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Apple Pay JS API - applePayCapabilities no longer working

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.