This error occurs in Apple Pay Wallet In-App Provisioning Flow for Credit / Debit Cards
When the data received from the PNO (Visa) is passed to PKAddPaymentPassRequest this error is seen in addPaymentPassViewController, in the finalize stage.
Docs provide no clue as to what could be wrong.
iOS 18.2.1
XCode 15.2
Error description mentions "unsupportedVersionError"
Is the pass version not supported?
Is the wallet version not supported?
Is it an app implementation error or error in the data received from the PNO?
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
When integrating the Wallet Extension, after clicking my app icon from the "From Apps on Your iPhone" list, I encountered the message: "Cannot Add Card. 'XXX' is not responding. Wait a few minutes and try again. If the problem continues, contact the card issuer's customer service" instead of the configured login page appearing as expected.
What could be causing this issue, and how should I resolve it?
For Apple Pay testing, I have tried the following:
Sign into the Sandbox Account via Developer Settings:
Settings > Developer > Sandbox Account
Keep your main Apple ID for everything else
Add Test Cards to Wallet:
Try adding the test card numbers (MasterCard and Visa Debit, as we support only those) Apple provides in their documentation. Unfortunately, none of them are added to the wallet. All the time it gives 'Could Not Add Card'.
I tried on devices with iOS 18+.
Can anyone advise on this?
Thanks
Topic:
App & System Services
SubTopic:
Apple Pay
I am adding In-App provisioning to my app. I am able to access the Apple Pay Sandbox and I have successfully tested adding a secure element/payment pass to Apple Wallet. However, once the pass has been added to the wallet, I can not access or retrieve the pass from my app. I have confirmed with the PNO that the PNO Pass Metadata Configuration in the testing environment include the correct metadata for "associatedApplicationIdentifiers" and "associatedStoreIdentifiers".
Does anyone know why I am having this issue and how I can resolve it?
Steps used to access pass in Apple Wallet
I am unable to view the pass when I attempt to access it using the PKPassLibrary function as follows:
let library = PKPassLibrary()
if #available(iOS 13.4, *) {
// This returns an empty array
library.passes(of: .secureElement)
} else {
// This also returns an empty array
library.passes(of: .payment)
}
// This returns an empty array too
library.passes()
Steps used to add pass to Apple Wallet
These are the steps I follow to add the card:
I create a PKAddPaymentPassRequestConfiguration
I use this config to instantiate a PKAddPaymentPassViewController.
I provide the nonce, nonceSignature, and certificates to my PNO along with the card data.
I receive the activationData, encryptedPassData, and ephemeralPublicKey from my PNO and create a PKAddPaymentPassRequest using this data.
I add the pass to Apple Wallet.
In the addPaymentPassViewController callback, I am able to view the pass data from the .didFinishAdding pass: PKPaymentPass? variable. I am also able to see that the pass has been added from Apple Wallet app. I am not able to access the pass using PKPassLibrary().passes() at this point. I am not able to access the pass at any point after adding it either.
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’re attempting to call the Apple Pay Web Merchant Registration API using our Platform Integrator flow and consistently receive 401 Unauthorized, despite successful TLS/mTLS.
Details:
Endpoint: https://apple-pay-gateway-cert.apple.com/paymentservices/registerMerchant (POST)
Payload:
{
"domainNames": ["breakerfy.com"],
"encryptTo": "platformintegrator.ai.packman",
"partnerInternalMerchantIdentifier": "merchant.ai.packman.1",
"partnerMerchantName": "breakerfy",
"merchantUrl": "https://breakerfy.com"
}
Domain association:
URL: https://breakerfy.com/.well-known/apple-developer-merchantid-domain-association
What we tried:
We created a Payment Platform Integrator ID (platformintegrator.ai.packman)
We created a CertificateSigningRequest
We used the certificate signing request to create an Apple Pay Platform Integrator Identity Certificate and downloaded the signed certificate.
We exported the Private Key from keychain access in PKCS 12 format
We converted both the private key and the signed certificate to PEM format
We created a merchant id
We used the converted keys to send requests to the API
We received {
"statusMessage": "Payment Services Exception Unauthorized",
"statusCode": "401"
}
we also tried curl with the original p12 file and also had no luck.
What could be the issue ?
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
Hi,
I’m encountering an issue in my app’s Wallet Extension, specifically within the Non-UI Extension, where we are unable to retrieve payment passes bound to a user’s account. The same code that successfully retrieves these bound cards in the main app does not work when used in the Non-UI Extension.
Case-ID: 8932090
Steps to Reproduce:
Set up In-App Provisioning:
Ensure that the app has the necessary In-App Provisioning permissions. This functionality works correctly in the main app, confirming that the permissions are properly configured.
Configure Wallet Extensions:
Follow the Wallet Extensions documentation to configure the app, including all required settings for the Non-UI Extension.
Add Code to Retrieve Payment Passes:
In the main app’s LoginView, implement the following code in the handleLogin() method to retrieve payment passes:
// Get the identifiers of payment passes that already exist in Apple Pay.
paymentPassLibrary = self.passLibrary.passes(of: .secureElement)
for pass in paymentPassLibrary {
if let identifier = pass.secureElementPass?.primaryAccountIdentifier {
if pass.isRemotePass && pass.deviceName.localizedCaseInsensitiveContains("Apple Watch") {
remotePassIdentifiers.insert(identifier)
} else if !pass.isRemotePass {
passIdentifiers.insert(identifier)
}
}
}
Verify Functionality in Main App:
Run the app and verify that the code successfully retrieves the payment passes bound to the user’s account.
Implement Code in Non-UI Extension:
Add the same code to the Non-UI Extension, specifically in the WNonUIExtHandler class within the override func status(completion: @escaping (PKIssuerProvisioningExtensionStatus) -> Void) method.
Test in Wallet Extension:
Run the Wallet Extension and observe that the payment passes are not retrieved when the code is executed in the Non-UI Extension.
Has anyone encountered a similar issue or can provide insight into why the code might not work in the Non-UI Extension compared to the main app?
Support Information:
iOS Version: 17.5.1
Development environment: Xcode 15.4 (15F31d), macOS 14.3 (23D56)
Any help or suggestions would be greatly appreciated. Thank you!
We have updated the PNO metadata to include the associatedApplicationIdentifiers for our wallet extensions and the issuer app. While we are able to successfully provision the card to Apple Wallet via pull provisioning, we are unable to retrieve the payment passes that have already been provisioned. How can we address this issue?
let passLibrary = PKPassLibrary()
let paymentPassLibrary = self.passLibrary.passes(of: .secureElement)
paymentPassLibrary is an empty array even though we have passes provisioned.
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.
I recently created a Sandbox account and successfully added an Apple Pay test MasterCard to the sandbox Wallet to run a test.
Yesterday, I created a different account and tried to add a MasterCard on another device, but I received a "Card device limit" error.
I then deleted the card from the original device (where it had been successfully added) and tried to re-add it, but this device also failed.
I was able to confirm that a JCB card can be added, but I need to test with MasterCard. What should I do to resolve this?
Topic:
App & System Services
SubTopic:
Apple Pay
Hello, we are developing in app provisioning of our American Express network cards.
After clicking add to apple wallet in our app, I launch the PKAddPaymentPassViewController and click next.
It loads for a few seconds and then I get:
[<private>] ProvisioningOperationComposer: Step '<private>' failed with error Error Domain=PKProvisioningErrorDomain Code=5 UserInfo={PKErrorHTTPResponseStatusCodeKey=500}
Does anyone have any insight on what this error means?
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!
PLATFORM AND VERSION
iOS
Development environment: Xcode Version 16.2 (16C5032a), macOS 14.6.1
Run-time configuration: iOS 26
DESCRIPTION OF PROBLEM
We would like to seek clarification on how to determine whether a card used via Apple Pay is a credit or debit card before sending the transaction request.
Currently, we can retrieve the card type information (credit/debit) from the Apple Pay response payload, but this is only available after the payment has been processed.
However, we need to determine the card type in advance, as our system calculates and applies transaction fees based on the card type, which should be added to the total transaction amount before submission.
Could you please advise if there is any parameter, API field, or pre-authorization mechanism available to identify the card type prior to initiating the transaction request?
We would appreciate your guidance or any related documentation for implementing this.
STEPS TO REPRODUCE
Initiate Apple pay
Payment from Apple pay
Getting payload
we can retrieve the card type information (credit/debit) from the Apple Pay response payload, but this is only available after the payment has been processed.
We need to identify if there's any way to know the card user selected(whether it is credit/debit) before processing the payment.
We have been using ApplePay on the web for years, but we are running into a problem since today in sandbox where domainName is missing from the create payment sessions request. We haven't changed anything related to this request any time recently.
Static payment sessions url being hit in sandbox: https://apple-pay-gateway-cert.apple.com/paymentservices/paymentSession
request format:
"merchantIdentifier": "merchant.com.identifier",
"displayName": "Test Store",
"initiative": "web",
"initiativeContext": "test.example.com",
"domainName": "test.example.com"
response format:
{
"epochTimestamp": 1763533367972,
"expiresAt": 1763536967972,
"merchantSessionIdentifier": "<merchantSessionIdentifier>",
"nonce": "<nonce>",
"merchantIdentifier": "<merchantIdentifier>",
"displayName": "Test Store",
"signature": "<signature>",
"initiative": "web",
"initiativeContext": "test.example.com",
"signedFields": [
"merchantIdentifier",
"merchantSessionIdentifier",
"initiative",
"initiativeContext",
"displayName",
"nonce"
],
"operationalAnalyticsIdentifier": "Test Store:<identifier>",
"retries": 0,
"pspId": "<pspId>"
}
Production create session request to https://apple-pay-gateway.apple.com/paymentservices/paymentSession is behaving as expected, sending the following fields as response: epochTimestamp, expiresAt, merchantSessionIdentifier, nonce, merchantIdentifier, domainName, displayName, signature, operationalAnalyticsIdentifier, retries, pspId
Claude seems to suggest this is a response when Messages for Business is enabled, but this ApplePay Payment Processing merchant is only configured for Apple Pay on the Web.
Any ideas or pointers to check for? We are worried this will spill over in production as well, which will break our ApplePay integration.
Thanks in advance!
Topic:
App & System Services
SubTopic:
Apple Pay
I developed a web app using .net c#. The app runs a workflow which included Apple payment. App can work on any browser of any device (even non-IOS).
When the app is browsed using PC windows Chrome browser, the payment sheet will show with QR code to scan using iPhone. If I cancelled the pop-up by clicking on X without scanning the code, and then returned to idle screen and performed another payment, I will reach paymentRequest.Show() but nothing will show and no errors are logged in console.
Note that:
I use Payment Request API
The issue appear on the second payment.
The issue will be solved once I refresh the page.
My app supports both single and separate pages mode and issue appear on both.
I used to see an error "Uncaught NotSupportedError: Failed to execute 'define' on 'CustomElementRegistry': the name apple spinner has already been used with this registry. So I thought the issue might be in loading the apple SDK script multiple times, and solved the issue to be loaded only once. The error disappeared but the issue persist without errors.
Hi,
I understand that it's possible to add a virtual debit or credit card from a mobile app into the iOS Wallet using PassKit from the Apple SDK. However, I haven't come across documentation on how to achieve this directly from a web app. I found this article on Apple's support site (https://support.apple.com/en-gb/guide/security/secdc2567239/web), which mentions adding cards from a card issuer’s website, but it doesn’t provide details on the process.
Could you please confirm if it's possible to add a card directly from a web app without using a mobile app? If so, could you guide me to the relevant documentation?
Thanks in advance!
My client has provided me with admin access to the Apple Developer console. However, when I log in, I am prompted to enroll in the Apple Developer Program. Should I proceed with the enrollment myself, or does the client need to complete the enrollment from their own account?
Topic:
App & System Services
SubTopic:
Apple Pay
Dear Apple Developer Support,
I would like to request a technical escalation to the engineering team regarding an ongoing issue with Apple Pay domain verification.
Error returned by Apple
Even though Apple’s request to our domain returns HTTP 200, the verification still fails with:
resultCode: 13014
resultString: "Domain verification failed. Review your TLS Certificate configuration to confirm that the certificate is accessible and a supported TLS Cipher Suite is used."
requestUrl: https://developer.apple.com/services-account/QH65B2/account/ios/identifiers/verifyDomain
TLS Certificate Validation
We performed a full TLS analysis:
Certificate issued by Sectigo Public Server Authentication CA DV E36 (public trusted CA)
Full and correct certificate chain
No handshake errors
Configuration fully valid
SSL Labs rating: A
From our side, the TLS configuration is confirmed to be correct.
Accessibility of the .well-known file
The file is publicly and accessible
It returns 200 OK and the content is exactly identical to the file downloaded from the Apple Developer Portal, without any modification.
Our network team confirmed that Apple’s verification request also receives HTTP 200 when pressing “Verify” in the Apple Developer Console.
Network-side findings
We monitored Apple’s request in real time. Findings:
TLS handshake succeeds
No cipher mismatch
File delivered correctly
Status: 200 OK
No redirect or transformation applied
Despite this, Apple still returns error 13014.
Request for engineering review
We kindly request that an Apple engineer verify the following:
The actual TLS handshake performed by Apple's verification service (cipher suite, protocol negotiation, SNI, trust chain).
Whether the Sectigo issuing CA is fully trusted and supported by your domain-verification backend.
If there is an internal reason behind error 13014—since the external message does not provide actionable details.
Whether the response is rejected for reasons other than TLS, given that the file is accessible and the request returns 200.
The exact condition that leads Apple to report “TLS Certificate configuration is incorrect” in this case.
This issue is blocking an urgent deployment and must be resolved as soon as possible.
Existing case reference
Case ID: 102760005987
We are fully available to provide:
full response headers
packet captures (PCAP)
SSL/TLS diagnostics
file integrity checks
server configuration details
or join a technical call (Teams / WebEx)
Thank you in advance for the escalation.
Andrea
Topic:
App & System Services
SubTopic:
Apple Pay
Cybersource production support has clarified issue as below
"On the BAD Case, it seems that the Apple Payload did not contain the "onlinePaymentCryptogram" object within the JSON. The Cryptogram is critical and mandatory.
Since the merchant cannot really control this, and since CYBS is just decrypting the payload and uses it, we cannot comment as to why it was missing.
The merchant would need to reach out to Apple and/or decrypt the payment themselves locally to check if and why this data was not present, for troubleshooting purposes."