Hi,
We’re a franchise business with over 100 franchisees, and each franchisee has their own unique Merchant ID. We're building a single app that allows customers to place orders, and based on the selected franchisee, the payment needs to be processed through that specific franchisee’s merchant account.
However, when we integrate Apple Pay and publish the app, it asks us to provide a payment gateways' Merchant ID, but we don’t use just one – we have many.
How can we handle this situation? Is there a way to dynamically use multiple Merchant IDs in one app, depending on which franchisee the customer is ordering from?
Apple Pay
RSS for tagProvide a fast, easy, and secure way for users to buy goods and services in your app or on your website using Apple Pay.
Posts under Apple Pay tag
144 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
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?
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,
I've encountered an issue where we need multiple domain associations with separate Apple Pay implementations.
Briefly, we have a /.well-known/apple-developer-merchantid-domain-association already setup with Stripe, and now we need another, different version of the file to get setup with FreedomPay. FreedomPay insists this file represents a three-way relationship between all parties and I have no reason to disbelieve them.
I'm wondering if anyone has encountered this or if there is a standard procedure. I'm currently trying to find documentation on the exact way Apple Pay verification interacts with this file to see if we can produce it dynamically.
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?
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.
我在对接apple pay内购,调用https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/{transactionId},一直提示401,我不知道是我对接代码的错误,还是在开发者配置有问题或者是对应的参数提供错误,排查很久,依旧提示: Server returned HTTP response code: 401 for URL: https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/xxx
请问我该如何去查找我的问题呢
Hi, we are implementing ID&V and there is a requirement regarding the flow for Apple Pay.
In order to clarify the case I will describe the use case scenario or steps to reproduce first:
add a card to the iPhone wallet app (yellow path verification required). Do not complete the ID&V process.
add a card to the Watch via the Wallet inside the iPhone Watch app (yellow path verification required). Same as before, do not complete the ID&V
complete ID&V process using the Issuer App either from iPhone or Watch.
the Issuer app receives the application:openURL:options: callback on its AppDelegate. In the options dictionary, we can not see the UIApplicationOpenURLOptionsSourceApplicationKey populated (it is nil).
At this moment, for the card we are adding there are now two tokens, both to be verified via ID&V process. One is on the iPhone and one is on the Apple Watch associated with the same iPhone.
The url received at step 4 contains the serial number which identifies the digitized card and matches with both the tokens in the iPhone and in the Apple Watch.
We need something to detect programmatically if the digitization process started from the iPhone Wallet app or from the wallet inside the Watch app.
Could you please help us to identify how we could discriminate if the ID&V process has been started for the iPhone token or for the Apple Watch token?
Thanks
Hi,
We have app in which we take donations from people and send to non-profit organisations. I have read that Apple Pay can be integrated on non profit platforms to take donations, but we are middle man, we are not non profit .. we take donations, cut our platform fees and then sent to donations to non profit orgs.
My question is can we integrate Apple Pay in our iOS app to take donations from apple? as we have integrated Apple Pay on the web.
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Apple Pay on the Web
Apple Pay
Tap to Pay on iPhone
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!
We have finished integrating Apple Pay in our app and our payment processor is requiring us to send the 3dSecure version used for apple pay (2.1,2.2,2.3,etc.). I believe this only applies to mastercard but would appreciate if anyone has run into something similar and what you specified. I have not been able to find anything in Apple's documentation specifying the version that is used.
We’re building a usage-based rental flow. The final charge is only known after the session ends (like gas pumps). We want the same Apple Pay UX that gas stations like at a gas station has: the user does not see a pre-authorization amount up front; they only see “approved” and later the final posted amount on the statement.
What we observe (gas stations / desired UX)
When paying at gas station with Apple Pay (card-present), the user confirms their card (double-tap) but no pre-auth amount is shown in Wallet/notification UI.
The small notification is from the bank (not the merchant) and shows only bank + merchant name, no total.
After fueling ends, the final amount appears on the statement from the merchant.
What happens in our flow (current behavior)
Platform: Apple Pay via Stripe (Apple Pay on the Web with QR → mobile Safari Wallet sheet).
When a user confirms payment, the pre-authorization amount is shown immediately to the user (appears like a charge from the user’s perspective).
We want to avoid showing that amount, matching the pay-at-pump experience.
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!
I'm calling the endpoint https://apple-pay-gateway-cert.apple.com/paymentservices with mTLS and it's taking over 15 seconds to complete the request. This is happening only when deployed through AWS.
I have tried a dummy dotnet and node lambda with the same result.
Wondering if anyone had the same issue.
Also stack overflow post explaining the code in more depth - https://stackoverflow.com/questions/79755891/mtls-http-call-taking-over-15-seconds
We are integrating iOS 16 recurring payments in our app, everything works fine but we have a few questions
Question 1
let recurringPaymentRequest = PKRecurringPaymentRequest(
paymentDescription: "Pro Membership",
regularBilling: regularBilling,
managementURL: url
)
we assume managementURL is supposed to come in the user's wallet where he/she can tap to change the recurring payment option to our backend, but in the wallet, the transaction appears without this URL and have no indication that it is a recurring payment, Can someone guide what we missed
Question 2
For apps that only have apple pay on mobile, managementURL can open the app as a deep link from the Wallet app and the user can update or delete the payment method for the automatic reload payment from the app directly,
Question 3
For cancellation, the recurring payment app should have some UI where the user can tap which hit our backend and remove the apple pay merchant token from our system and apply cancellation business logic, no apple API involves in the cancellation of recurring payment
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).
Hi - I have a question. I am trying to understand when Apple Pay will be available on non-IOS desktop devices (specifically Google Chrome). I was hoping to understand better the process, specifically the following:
How can I get the Apple Pay QR code installed on my desktop checkout page on Google Chrome?
How long does this process usually take?
If I work with Stripe, do I need to get approval from them to install the Apple QR code onto my Google Chrome checkout page?
Is this readily available to all merchants (i.e., installing Apple Pay on Google Chrome)/
I have not seen this on any other checkout pages yet. Are there any examples you could point me to of merchants that have installed Apple Pay onto non-IOS desktop so I could trial the process (i.e., a list of existing merchants that have put the QR code onto their Google Chrome checkout pages)?
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
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.
We are writing to report a recurring stability issue with the Apple Pay sandbox environment. We are using the official sandbox test cards provided on the Apple Developer website for our testing:
https://developer.apple.com/apple-pay/sandbox-testing/
We are experiencing frequent, intermittent failures when attempting to add these sandbox cards to the Wallet for testing purposes. The issue typically occurs a couple of times per day. When the failure occurs, the card provisioning process fails unexpectedly.
The issue is not limited to a single card; we have observed this behavior across all available card networks. In some instances, all cards (Visa, Mastercard, Discover, Amex) fail to provision simultaneously. At other times, the issue appears to be isolated to specific networks while others work correctly.
Crucially, the issue appears to be temporary. After some time passes (ranging from minutes to an hour), we are able to add the exact same card successfully without making any changes to our test environment or configuration.
We have diligently checked our setup to rule out configuration errors on our end. This includes verifying:
The device is set to a supported region.
We are signed in with a valid sandbox tester Apple ID.
All other prerequisites for sandbox testing are met.
The fact that the process works correctly at other times strongly suggests that this is a server-side stability issue within the Apple Pay sandbox environment rather than a persistent misconfiguration on our part.
To help with your investigation, we have attached an image that demonstrates a failed attempt to add a card.
Could you please investigate the stability of the sandbox card provisioning service? Please let us know if this is a known issue or if there is any further information we can provide.
Thank you for your time and assistance.