Hello,
We are experiencing a consistent delay when initiating Apple Pay sessions using the https://apple-pay-gateway.apple.com/paymentservices/startSession endpoint. Below is a detailed overview of our setup and the issue.
Setup
Our web service is hosted in AWS and there is a proxy server between our web service and Apple servers.
We are passing the correct domain in the initiativeContext field of the startSession request.
The .well-known/apple-developer-merchantid-domain-association file is hosted on a different domain, which is also correctly configured and associated with our merchant ID in the Apple Developer portal.
Observed Behavior
When the same request is made from a local development environment, Apple responds immediately (under 1 second).
When the request is made from our AWS-hosted service, Apple responds with a valid session, but only after a consistent ~15-second delay.
The content and response are otherwise identical — only the timing differs.
We would appreciate any insights or suggestions from others who have faced similar behavior or from the Apple Pay team.
Thank you in advance!
Apple Pay
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
Hi support,
Since June 26th 2025 we are experiencing an issue with the ApplePay SSL server certificate installed on our servers in Production environment.
We are facing an exception error during the initializing of a payment session while calling the url:
https://apple-pay-gateway.apple.com/paymentservices/startSession
The exception is Untrusted Server Certificate Chain:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Untrusted Server Certificate Chain
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1915)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:306)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:300)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1577)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:213)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1010)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:946)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1034)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1370)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1354)
It seems that the issue occurs randomly: we are experiencing this exception on most of our payment transactions, but there are some cases of users that have correctly paid on our site using this method and in those cases this error did not appear.
We installed the new certificate on our servers on July 3rd 2025 and renewed on Aug 7th 2025.
The new certificate validity is:
Not Before: Aug 6 18:43:52 2025 GMT
Not After : Nov 4 18:08:57 2025 GMT
I must specify that this issue is blocking the correct placement of AppleyPay orders of our customers.
Can you please help us find the problem and a possible solution?
Topic:
App & System Services
SubTopic:
Apple Pay
Hi everyone,
I am new to Apply Pay, but I have already implemented IAP for subscriptions in my app. My app also has other functionalities, it also acts as a person-to-person marketplace, as users can post events or online courses which can be bought by other users to participate.
My question is that I have read Apple's review guidelines but it is still unclear for me if I can use Apple Pay (with for example Stripe) or do I still need to use IAP for this online content.
Also non profit organizations also can register which can recieve donations, can I also use Apple Pay for that or do I still need IAP there, because it would be nice if Apple would take 30% of donations.
Topic:
App & System Services
SubTopic:
Apple Pay
ApplePaySession.applePayCapabilities() started returning applePayUnsupported in third-party browsers
We rely on ApplePaySession.applePayCapabilities() to decide whether to show the Apple Pay button. We use two different merchant IDs for non-prod/prod environments, and encountered a change in behavior where this API now returns different results.
These merchant IDs are generated from a third-party provider Adyen. However, Adyen has informed us that they are unable to identify the root cause of the issue and advised us to seek assistance directly from Apple Pay support.
Timeline
Last known working date: 13/08/2025
Issue first noticed: 18/08/2025
Environment Details
Apple Pay JS API version 1.latest
Browsers Tested: Third party browsers including Chrome/139.0.0.0, Firefox/141.0
Browsers with ApplePaySession built-in (like iOS Chrome, iOS Safari, and macOS Safari) are working fine
Framework Stack: Angular v18.1.3
(important) no configuration setup in Apple dev account, merchantId is generated from a third-party provider Adyen.
Current Execution Flow:
Apple Pay JS API script element is injected
<script type="text/javascript" async="" src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js"></script>
Triggers below to check apple pay readiness, different ${merchantId_credential} is used:
await window.ApplePaySession.applePayCapabilities(`${merchantId_credential}`);
(**ApplePaySession is a valid object at this point)
Observed that different paymentCredentialStatus is returned
// nonprod env
{
"paymentCredentialStatus": "applePayUnsupported" // unexpected
}
// prod env
{
"paymentCredentialStatus": "paymentCredentialStatusUnknown"
}
The same code is executed in each environment and the behaviour was also the same, but has changed since then.
Side notes
By checking the SDK’s internal code, we saw that in third-party browsers it makes an extra call to the following endpoint. Responses from this call also come back differently depending on the merchantId.
When invoking below:
curl -X POST \
https://smp-paymentservices.apple.com/paymentservices/v3/checkStatus/merchant/{merchantId} \
-H 'Content-Type: application/json' \
-d '{
"initiative": "web",
"initiativeContext": "env_specific_domain"
}'
Our non-prod environment returns {"registered":false} while using prod's merchantId and domain it returns {"registered":true}. We thought the issue might be domain-related since the environments are on different domains, but so far, no luck.
The main questions we're looking to resolve are:
Why did the behavior change at a certain point despite no code changes? How should we approach this investigation, and what specific requests should we be making to the Adyen team?
Why does the response from the call to https://smp-paymentservices.apple.com/paymentservices/v3/checkStatus/merchant/{merchantId} return different results? Perhaps this could provide a clue regarding the question above?
We noticed that canMakePayments() is returning true, so we could consider using that as a workaround. Would it be safe to change the source of truth relying on canMakePayments() for displaying Apple Pay?
There is a concern that this issue may also occur in our production environment, so we would appreciate assistance in understanding what is happening and finding a resolution.
Hello,
We are currently developing an application that uses the Host-based Card Emulation (HCE) entitlement to enable corporate access functionality. With this entitlement, we have successfully established HCE communication and can interact with our access control systems to unlock doors.
Our question is related to improving the user experience:
We would like this access functionality to work without requiring the app to be in the foreground, as this adds friction for users during entry.
Specifically, we would like to know:
Is it possible for our app to coexist with Apple Wallet as the default contactless app, so that:
Our app handles NFC interactions for corporate access (e.g., opening doors).
Apple Wallet remains the default for payments.
If that coexistence is not possible, and our app is set as the default contactless app,
Will the system still need to launch our app into the foreground to complete a transaction (e.g., to emulate the NFC card)?
Or is there a way to trigger HCE responses in the background (e.g., using a background process or service extension)?
Any guidance on how to configure the app for optimal background access behavior, while maintaining compatibility with Wallet, would be greatly appreciated.
Thank you in advance.
We are unable to add/remove Merchant IDs in App IDs identifier profile, after pressing "Edit" button on "Apple Pay Payment Processing" section, then choosing desired Merchant ID to check/uncheck from the available Merchant IDs, then pressing Continue/Save/Confirm buttons - nothing happens, the "Save" button text briefly changes to "Processing" and then back To "Save" and we still have previously enabled Merchant IDs and the Save button is still in enabled state, any help?
Hello,
We’re seeing an issue where the Apple Pay button is visible in Safari but not clickable for certain users, while it works normally for others. This happens on our site (https://store-qa2.enphase.com/
) as well as on other sites for the same affected users.
Currently, we display the Apple Pay button based on the following condition:
Boolean(window.ApplePaySession) && ApplePaySession.canMakePayments();
For affected users, the button shows up as expected, but it’s not interactive. All users (both affected and unaffected) are on the latest versions of Safari and macOS/iOS.
Could someone clarify what additional conditions Safari/Apple Pay requires for the button to be fully functional? And under what circumstances could it be visible but not clickable?
Topic:
App & System Services
SubTopic:
Apple Pay
Does anyone have info about the Retention Messaging API. We've requested access to it, but there's no answer.
Topic:
App & System Services
SubTopic:
Apple Pay
Hi,
I set up a Sandbox Tester account in my company’s Apple Developer Program and signed in on my iPhone under Settings → App Store → Sandbox Account.
When I go to Wallet → Add, I only see options for Credit or Debit Card or Travel Card. The option to add an Apple Pay Sandbox Card is missing, and when I try entering the test card numbers from Apple’s documentation (developer.apple.com/apple-pay/sandbox-testing), the card is not valid.
Has anyone experienced this and found a solution? Thanks!
PS: I can't post this to Wallet Category, I keep getting error that it contains sensitive text.
Hi, we are implementing the push provisioning via the Apple Wallet Extension starting from the example at https://developer.apple.com/documentation/passkit/implementing-wallet-extensions.
To correctly manage the push provisioning on Apple Watch, specifically for a card tokenised in the iPhone but not in the Watch, we need to know if there is a connected Apple Watch to the iPhone.
We are using the following code from the Apple Wallet Extension example to detect whether there is a connected watch:
WCSession* session = [WCSession defaultSession];
session.delegate = delegate;
[session activateSession];
In the main target of the app, at the end of the activation the system correctly calls the delegate method:
session:activationDidCompleteWithState:error:
but we noticed it is not being called in the UI extension context (the one having NSExtensionPointIdentifier: com.apple.PassKit.issuer-provisioning.authorization).
We don't understand why the delegate is not being called in the UI extension, can you please help?
Thanks!
Steps to Reproduce:
Start with a card not added in the Apple Wallet app
Open the Apple Wallet app
Click on add card
Select the app to launch the Wallet Extension flow
The Apple Wallet Extension with UI is on screen and invokes the activateSession method, the delegate method is not invoked and session.isPaired returns "no".
Xcode Version
16.2
macOS Version
15.6.1 (24G90)
Feedback ID
FB20082564
Hello,
I am experiencing an issue with the Apple Pay capability on my App ID.
I have created a Merchant ID.
I enabled Apple Pay in the App ID configuration and linked it to the merchant.
However, sometimes when I revisit the App ID in the Apple Developer portal, the Apple Pay capability appears disabled, even though I saved it.
This happens intermittently; at some times the capability is correctly shown as enabled, and other times it disappears.
Context:
I am using Expo Managed Workflow with EAS Build for iOS.
The issue prevents the provisioning profile from including Apple Pay, which causes Stripe isPlatformPaySupported function to return false on ios devices.
Attached:
Screenshots of the App ID page showing Apple Pay enabled and disabled.
Could you please advise why the capability is not being consistently saved, and how to ensure it stays enabled?
Thank you,
Does anyone know how to register as a psp for apple pay. My psp is based in the UAE and I cant seem to find an easy way to enroll the psp to apple pay
Topic:
App & System Services
SubTopic:
Apple Pay
Hello,
I am currently testing an Adyen integration with Sylius and need to verify Apple Pay with Cartes Bancaires in the sandbox environment. Could you please advise how Cartes Bancaires can be tested in Apple Pay Sandbox (e.g. cards details)?
Thank you in advance for your guidance.
Best regards,
Grzegorz
Hello all,
I’m helping a customer integrate Apple Pay, and I’m seeing a behavior I can’t fully explain. I hope someone here can help clarify whether this is expected or whether it’s a bug / misconfiguration on my side.
Currency: RSD (Serbian Dinar)
Amount: 3.45 RSD (two decimals)
Result: Apple Pay cancels the payment automatically when the amount includes decimals, without even displaying the paymentsheet.
Things I have checked:
ISO 4217 defines RSD with 2 minor units, so fractional amounts like 3.45 should be valid.
Processors treat RSD as a two-decimal currency.
Apple’s documentation does not provide a per-currency decimal rule table.
In testing, whole-number RSD amounts succeed, while fractional amounts (e.g. 3.45 RSD) fail. I did not encounter this problem with other currencies like EUR, USD.
Has anyone encountered this issue before?
Hello,
We are working on integrating billing into our dating app, targeted at the Russian market. Our main requirement is to support subscriptions with automatic renewal and cancellation.
We understand that, according to App Store Review Guideline, all digital subscriptions should use Apple In-App Purchase (IAP). However, we are unsure how this applies in Russia, where some local regulations may limit the use of non-Russian payment processors, and where not all Russian bank cards are accepted by Apple.
Our question is:
-For iOS apps in Russia, is it strictly required to use Apple IAP for subscriptions?
-Are there any approved exceptions allowing integration with local processors such as Robokassa or YooKassa?
-How are other developers currently handling subscriptions for the Russian market?
We want to ensure full compliance and avoid any risk of rejection or removal.
Thank you in advance for any clarification.
Best regards,
Dan
I’m restructuring my business and want to remove Apple Pay. I use Woocommerce Square for payments. Do I do it in the Square dashboard or here? I honestly can’t remember how I set it up. I’m not a developer. I’m a farmer and work on my own website. Thanks!
We are working with a large fintech org on project connected with provisioning payment cards to Apple Wallet.
When we add a previously provisioned card to the Wallet (using the Wallet UI, Add card -> Previous card). It adds the card on one device showing the Express Travel card screen after the card is added allowing the user to set the card as an express travel card during the provisioning flow but never on our other devices. All of the test devices are clean and have only the same single card provisioned.
What triggers the Express Travel Card screen to be shown during the add previous card flow? (Why is it showing on one device and not another).
'Company A' is scheduled to merge with its parent company, 'Company B'. Both A and B have Apple accounts.
A's account has one domain registered for Apple Pay integration, while Account B has no domain registered.
We attempted to register A’s domain under B’s account.
However, the notification 'Requested domain name has been verified previously.' appeared, and we could not complete the registration.
Please confirm whether it is correct that a domain already registered under Account A cannot be registered again under Account B.
If we cannot register same domain in two accounts, we believe that the domain registered under A's account must be deleted first and then registered under B's account.
In that case, will payments become unavailable immediately upon deletion of the domain, or will payments still be possible for a certain period of time after deletion?
In our testing, we found that payments were not blocked immediately, but we would like to confirm further.
We are concerned about the possibility of transaction failures during the short period between deleting the domain from A's Account and registering it under B's Account.
Topic:
App & System Services
SubTopic:
Apple Pay
Hey,
Please help us to know how to get our payments of sales with iOS app we have, since beginning, our amount is pending with them and despite sevarel attempts they are providing the real issue and solutions for matter. Please suggest how to fix this issue.
Topic:
App & System Services
SubTopic:
Apple Pay
Hi Everyone,
My team is working on an online marketplace for FMBs in Saudi Arabia (with a plan to expand to other markets later). We are currently working on integrating multiple payment gateways with embedded Apple Pay support into our platform.
We’ve encountered an issue with the apple-developer-merchantid-domain-association file. Based on advice from one of our payment partners, we've ensured that the domain association file is uploaded in the correct format. This works successfully with our first payment gateway.
However, for the additional payment gateways we are integrating, we would also like to enable Apple Pay with embedded support. The challenge is that each payment gateway requires its own domain verification, but the verification file uses the same file name. This prevents us from supporting multiple gateways on the same domain.
Has anyone in the house been able to implement a similar solution, or know how we can best implement this?
Please, I'll appreciate advise on how we can configure Apple Pay domain verification to support multiple payment gateways on the same domain? Any specific guidance or best practices would be greatly appreciated.
Best regards,
Topic:
App & System Services
SubTopic:
Apple Pay