Hi everyone,
I’m encountering a strange issue with Apple Pay in our React Native iOS app using the Stripe React Native SDK.
Summary of the Problem:
• Apple Pay shows up as an available payment method inside the Stripe Payment Sheet.
• When I tap Apple Pay, the Apple Pay sheet opens normally.
• After confirming payment, the Apple Pay sheet immediately closes, and nothing happens.
• No payment is created and no request reaches Stripe’s servers.
On Stripe Dashboard the PaymentIntent remains incomplete, with no errors, which means the failure happens before Stripe receives anything.
Environment
• React Native with @stripe/stripe-react-native
• StripeProvider configured with:
<StripeProvider
publishableKey={...}
merchantIdentifier="merchant.com.app.venga"
stripeAccountId={...}
urlScheme="venga"
>
Apple Pay works on our web checkout with the same merchant identifier.
We have verified all of the required Apple Pay setup:
• Merchant ID exists, active, and matches exactly.
• Merchant ID added to the iOS app target in Xcode → Signing & Capabilities.
• Apple Pay capability enabled.
• Merchant domain is verified (web checkout works).
• Apple Pay certificate and merchant certificate are valid.
• Stripe publishable key and merchantIdentifier are correct.
• Stripe SDK correctly initialized.
• Device region supports Apple Pay.
Extra Observations:
• The PaymentIntent’s allowed_payment_methods includes "card" and Apple Pay does appear in the payment sheet.
• But after tapping Pay → the Apple Pay sheet closes instantly.
• There is no callback with an error, and nothing appears in Stripe logs.
• We are testing in Sweden. As far as I know Apple Pay should work fine here.
Questions:
What could cause the Apple Pay sheet to dismiss instantly after attempting a payment?
Could this be caused by a merchant ID mismatch—even if Apple Pay appears in the sheet?
Is there any Apple-device-level requirement (region, wallet config, card type) that could cause this silent failure?
Is there a way to get more detailed logs when Apple Pay closes before Stripe receives anything?
Any help or suggestions would be greatly appreciated. Thanks!
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
Activity
We are seeking assistance with an issue encountered during the integration of Apple Pay into our web application using the third-party payment gateway Heartland.
Our application uses JavaScript on the client side and PHP on the server side.
Despite following all the guidelines provided by Heartland, we are unable to validate the merchant at the backend. The validation consistently returns false. We request your guidance or a step-by-step solution to help resolve this issue.
Steps Followed:
Registered a merchant identifier in our Apple Developer account.
Enabled the Apple Pay Processing Certificate for the merchant.
Logged into the Heartland account, accessed the Apple Pay setup page from the "Keys and Credentials" section, and created a Certificate Signing Request (CSR).
Uploaded the CSR from Heartland to the Apple Pay Processing Certificate in the Apple Developer account.
Downloaded the signed certificate from the Apple Developer account and uploaded it to Heartland.
For the web application:
Registered the merchant identifier and validated our domain in the Apple Developer account.
Created a Merchant Identity Certificate linked to the same merchant identifier.
Followed the same steps 2–5 from the in-app implementation.
Code Implementation:
Client-Side (React):
import React from 'react';
const Button = () => {
const initializeApplePay = () => {
if (window.ApplePaySession && window.ApplePaySession.canMakePayments()) {
const paymentRequest = {
countryCode: 'US',
currencyCode: 'USD',
supportedNetworks: ['visa', 'masterCard', 'amex'],
merchantCapabilities: ['supports3DS'],
total: { label: 'Your Store', amount: '1.00' },
};
const session = new window.ApplePaySession(3, paymentRequest);
// Merchant Validation
session.onvalidatemerchant = (event) => {
fetch('https://staging-api.parkengage.com/apple-pay-session', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
initiative: 'web',
initiativeContext: 'parkengage.com',
validationURL: event.validationURL,
}),
})
.then((response) => response.json())
.then((data) => {
if (data.error) {
console.error('Merchant validation failed:', data.error);
} else {
session.completeMerchantValidation(data);
}
})
.catch((error) => console.error('Validation error:', error));
};
session.onpaymentauthorized = (event) => {
const paymentToken = event.payment.token;
fetch('/process-payment', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: paymentToken }),
})
.then((response) => response.json())
.then((data) => {
if (data.success) {
session.completePayment(window.ApplePaySession.STATUS_SUCCESS);
} else {
session.completePayment(window.ApplePaySession.STATUS_FAILURE);
}
})
.catch((error) => console.error('Payment error:', error));
};
session.begin();
} else {
console.log('Apple Pay is not supported on this device.');
}
};
return (
Buy with Apple Pay
);
};
export default Button;
Server-Side (PHP cURL):
curl 'https://staging-api.parkengage.com/apple-pay-session'
-X 'POST'
-H 'Content-Type: application/json'
--data-binary '{
"initiative": "web",
"initiativeContext": "https://parkengage.com",
"validationURL": "https://apple-pay-gateway-cert.apple.com/paymentservices/startSession"
}'
Issue:
The merchant validation fails and returns false.
Please guide us on troubleshooting this issue or provide insights on missing configurations.
I am implementing apple pay and the merchant validation is failing with error (error request failed with status code 417). I am using react js in the frontend and node js in backend, this is my code
const httpsAgent = new https.Agent({
rejectUnauthorized: false,
cert: fs.readFileSync(
path.join(__dirname, "../../../certificates/merchant_id_prod.pem")
),
key: fs.readFileSync(
path.join(__dirname, "../../../certificates/merchant_id_prod.key")
),
});
const data = {
merchantIdentifier: "merchantId",
displayName: "Check",
initiative: "web",
initiativeContext: "domain.com",
};
const response = await axios.post(validationURL, data, { httpsAgent });
During the development of our 3D game project, we encountered high memory usage requirements. To address this, we enabled Apple’s Extended Virtual Addressing (EVA) and Increased Memory Limit services.
We have confirmed that both services were enabled in the developer backend as well as in Xcode, and we also used updated development and distribution certificates when building the app. However, in our validation process, it seems that EVA and Increased Memory Limit are not taking effect — the game still experiences memory overflow and crashes.
Could you please advise:
The correct steps to properly use Extended Virtual Addressing and Increased Memory Limit;
How we can confirm whether these services are functioning as expected?
We have an Apple Pay account and have successfully created and verified the payment processing certificate in our Apple Developer account.
When initiating an Apple Pay payment, the Apple session is created successfully with the correct data return from api , but it is not accepted with the error: “Payment not completed.”
The issue occurs even though the merchant validation step works without errors.
Our websites where this is happening are:
https://magicdeliver.com/
https://www.pulsarmodular.com/
Could you please help us identify the cause of the issue and guide us on resolving it?
Hi Support,
When the applepay express transit option is used on emv payment cards,
like this
iPhone - Open “Settings” → “Wallet & Apple Pay” → “Express Transit Card”.
And a emv single card has been enabled under Express Transit
And on transit reader Apple Enhanced contactless Polling support is provided, ( with VAS not supported, user authentciation not supported)
Sometimes ATQB response also comes from the iPhone or iWatch instead of the ATQA response, and then it causes the transit reader to report as collision error in the polling.
Sequence of the packets:
WUPA
WUPB
ECP frame
WUPA
WUPB
ATQB
WUPA
ATQA
Topic:
App & System Services
SubTopic:
Apple Pay
For Apple Pay Testing purposes, we're trying out cards from https://developer.apple.com/apple-pay/sandbox-testing/
Visa, AMEX, Discover cards can be added to the wallet.
But all 5 of the listed options for Mastercard cannot be added to the wallet with the error "Card Device Limit".
How can we resolve this?
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Apple Pay on the Web
Apple Pay
Tap to Pay on iPhone
We are working with Saferpay. And integrating Applepay Server to Server. But we are having token generation issue. It does not give a valid test card information. We have created a tester account as India country. Is that an issue?
Topic:
App & System Services
SubTopic:
Apple Pay
Hello! We use Apple's "master account" scheme to register new clients trough API due to the fact that the number of merchant IDs in a developer account cannot exceed 100 records. It's been almost a year since we successfully used the master account ( ex. "merchant.com.xxx") and register clients via Postman. At the moment, the certificates for the master merchant ID start to expire on July 11 which will affect all customers which is under Master ID. We know that when updating certificates at the identifier level(our master id), new universal identity certificate files that we use to send to the merchants (merchant_id.pem, privkey.key) will be generated for authentication on the merchant side, as well as a new keystore. Since many of our clients are integrated with current files and keystores and have live traffic, we would like to know—is it possible to update certificates on the master account without changing the keystores and certificate identities? The impossibility of this will entail a large gap when switching to new certificates. Thanks in advance for your answer.
Topic:
App & System Services
SubTopic:
Apple Pay
We are working with two types of wallet passes. Provisioning works successfully for one pass type via wallet extensions, but the same process is not functioning for the other. For the second pass type, we are able to generate the required data for pull provisioning and send it to Apple. Additionally, in-app push provisioning for this pass type completes without issue. We would appreciate guidance on how to further debug and resolve this provisioning problem.
We are experiencing intermittent 403 Forbidden errors during Apple Pay on web merchant validation in our production and sandbox environment.
Has anyone else started seeing 403 Forbidden errors recently (since mid-2025)?
Why would merchant validation be sometimes successful and sometimes fail with 403?
Could this be related to new Apple Pay gateway changes or stricter validation rules?
Any additional debug steps or permanent solutions we should try?
Thank you.
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
We have been informed by a third-party subscription tracking service(Adjust) that, due to the following specification of App Store Connect, it is not possible to connect an STG app (a non-published testing app) with their server:
Specification:
Since Apple’s API only allows access for apps that are already published, it is not possible to enable subscription tracking for iOS apps that are not yet published.
Could you please confirm if our understanding of this specification is correct?
Additionally, is there any method or recommended approach to verify subscription tracking behavior with an STG (non-published) app before the app is released?
Thank you very much for your support.
Topic:
App & System Services
SubTopic:
Apple Pay
Hi ,
This is regarding the ApplePayRecurringPayment Request and Apple Pay on Web functionality. Does Apple Pay on web providing functionality that collects payments from the stored credit card issuer bank (or) it only provides secured wallet functionality that provides a token which then has to be utilized to send a seperate payment request through a third party payment gateway to collect the payments from the credit card issuer bank.
thanks
Topic:
App & System Services
SubTopic:
Apple Pay
Hi all,
I’m running into a confusing issue with Apple Pay domain verification. Apple’s documentation says to host the verification file at:
https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association
And the portal itself seems to expect the file to be served with .txt extension during verification. My first verification passed, but subsequent checks are failing — and I’m wondering if this mismatch is the cause.
Should I Keep the .txt and configure my server to serve it at both paths?
Would appreciate any insights or official clarification.
Thanks!
Topic:
App & System Services
SubTopic:
Apple Pay
A team observed lots of timeouts from the Apple Pay session endpoint: https://apple-pay-gateway-cert.apple.com/paymentservices/paymentSession
Is it expected or some kind of an implementation issue from the caller side?
Thanks!
Topic:
App & System Services
SubTopic:
Apple Pay
Dear Apple team and developers,
We integrated Apple Pay E-Commerce on our system and made successful transaction at January using following certificates.
Merchant Identity Certificate (generated from our Apple developer account)
Payment Processing Certificate (generated from our Apple developer account)
Payment Session Server Certificate (used following command and generated from apple-pay-gateway-cert.apple.com:443 test URL)
Command: openssl s_client -connect apple-pay-gateway-cert.apple.com:443 -key MIC_priv.key -cert MIC_merchant_id.pem -showcerts | openssl x509 -outform DER > apay_ident_trusted_cert_test.der
Root CA G3 (Downloaded “Apple Root CA – G3 Root” from https://www.apple.com/certificateauthority/ )
But at this month, we got new certificate problem (please check following) when we try to execute Apple Pay E-Commerce transaction.
Certificate 'C=US,O=Apple Inc.,OU=Apple Certification Authority,CN=Apple Application Integration CA - G3' is not valid Certificate.
What is this certificate? And Where can I download or generate this certificate from? Could you please advise/give us good information for this certificate problem?
Best Regards,
Bilguun Enkhbaatar
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Developer Tools
Apple Pay on the Web
Apple Pay
Why did my sandbox test fail due to not being able to obtain the product list?
Topic:
App & System Services
SubTopic:
Apple Pay
Hey everyone, hoping someone here has run into this before.
I have a fully functional App Clip (com.didyoucatchit.app.Clip) linked to my main app (com.didyoucatchit.app). The Clip builds and runs perfectly, but I’m seeing issues trying to enable Apple Pay for it.
When I try to link my Merchant ID under the “On Demand Install Capable” capability in the Apple Developer portal, I get this error:
A relationship in the provided entity is not allowed for this request.
The relationship 'undefined' can not be included in a 'bundleIdCapabilities' request.
Here’s what I have already configured and confirmed:
App Clip capabilities in Xcode include:
Apple Pay Payment Processing
Associated Domains (appclips:app.didyoucatchit.com)
Provisioning profile includes:
Apple Pay Payment Processing
Associated Domains
In-App Purchase
On-Demand Install Capable
Entitlements file for the Clip:
<key>com.apple.developer.associated-domains</key>
<array>
<string>appclips:app.didyoucatchit.com</string>
</array>
<key>com.apple.developer.in-app-payments</key>
<array>
<string>merchant.com.didyoucatchit.app</string>
</array>
<key>com.apple.developer.parent-application-identifiers</key>
<array>
<string>$(AppIdentifierPrefix)com.didyoucatchit.app</string>
</array>
Merchant ID (merchant.com.didyoucatchit.app) is active and connected to Stripe
Stripe Apple Pay configuration matches the same merchant ID and certificate
Both provisioning profiles have been refreshed and downloaded
However:
The portal still throws the “relationship 'undefined'” error anytime I try to modify the Clip’s capabilities
In testing, Apple Pay doesn’t show up as a payment option in the Clip (using Stripe’s Payment Element integration)
Questions:
Is this a known issue with the Developer portal when linking App Clips to merchant IDs?
Is there a specific way to re-establish the parent–child relationship between the main app and the App Clip so the bundleIdCapabilities request includes the proper relationship JSON?
Are there any additional configuration steps required when using Stripe for Apple Pay inside an App Clip?
System Setup:
Xcode: 16.2 (build 16C5032a)
macOS: Sequoia 15.3.1
iOS: 18.5 (testing on physical device)
Merchant ID: merchant.com.didyoucatchit.app
Main App ID: com.didyoucatchit.app
App Clip ID: com.didyoucatchit.app.Clip
Any help or insight would be hugely appreciated
Thanks in advance!
Hi,
We are trying to make payment from ecomm merchant.
The last request during process is
{
"sessionData": {
"epochTimestamp": "1741082241",
"expiresAt": "1741092241",
"merchantSessionIdentifier": "SSH88312C485D_7E0DD10173",
"nonce": "3f6dc197",
"merchantIdentifier": "5F9BC6BAF8",
"domainName": "libertybank.ge",
"displayName": "Apple Pay Purchase",
"signature": "3080060000",
"operationalAnalyticsIdentifier": "Apple Pay Purchase:5F9BC6BAF8",
"retries": 0,
"pspId": "5F9BC6BAF8"
}
}
which is successfully validated
applePaySession.completeMerchantValidation(data.sessionData)
After this, the "oncancel" handler is triggered in applePay.
Please help us to understand what is wrong.
Please note the domain where the applepay button is located is at
txpg.libertypay.ge Which is successfully verified.