I’m trying to test an AMEX card in the sandbox environment, but it’s not getting added. I have followed and verified the checks below to add the card to Wallet:
Sandbox account is active.
Sandbox user region is set to the US.
Device region is also set to the US.
AMEX card from the provided list is being added.
Tested on iOS version 17.6.1
Devices tested include iPhone 13 and others.
Steps followed to add the card to Wallet:
Open Wallet and tap on "Add Card."
Entered the required test data.
Tapped "Agree" and waited.
Received error: "Issuer does not support this card."
Please let me know if you have any solutions.
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
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!
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 - 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)?
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
Hi team,
We were wondering what's the correct way of configuring a test environment with Apple Pay.
Not sure if this is explicitly mentioned in the documentation, but in order to avoid having the same certificates shared between test and production, should we have a different merchant identifier (and pair of certificates) for test purposes only?
The above is the main question. However, two follow up questions:
Do you know if payment processors usually allow the merchant ID to be configured, so that only payments generated with the prod certificates can be accepted?
Is there any risk of someone getting hold of the certificates generated for the test environment (which are usually less safe than production) and using that to process payments in production?
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Apple Pay on the Web
Apple Pay
Testing
Tap to Pay on iPhone
I am working on implementing merchant token notifications. When calling this endpoint https://developer.apple.com/documentation/merchanttokennotificationservices/merchant-token-event-retrieval, the result contains a CardMetadata object with an expirationDate field (see https://developer.apple.com/documentation/merchanttokennotificationservices/cardmetadata). What is the format of this field? The spec only mentions that it has a maximum length of 8 characters.
we are experiencing an issue when making an HTTP call to: "https://apple-pay-gateway-cert.apple.com/paymentservices/registerMerchant". The response we are receiving back is HTTP Status Code 401 Unauthorized.
We noticed the issues started around "Jan 24, 2025 at 9:51:46.327 am" and is still carrying on.
Some other examples of when the calls failed:
Jan 27, 2025 at 3:04:31.387 pm
Jan 27, 2025 at 9:46:04.068 am
Jan 27, 2025 at 3:36 pm
All of the above dates and times are UK GMT +0 times.
As the problem is around HTTP status code of 401 Unauthorised its tough to show what's actually happening.
Like I stated above everything was working correctly before the 24th of Jan and nothing has changed or been modified on our side.
I have even tried to do the following:
Use the first set of Certs to perform a test
Still returns 401
Delete a Cert and re generating them from scratch to perform a test with those set of Certs
Still returns 401
I have just tried to process another HTTP call to the paymentservices/registerMerchant and I could inspect the headers of the request and im hoping this helps in your investigation.
Headers:
x-keystone-correlationid = 8f9a3c16-f78f-4f9b-9484-63190ef14a77
Date = Tue, 28 Jan 2025 10:00:43 GMT
x-envoy-upstream-service-time = 4
x-apay-service-response-details = via_upstream
We also found an article that has us a bit worried about this issue. Article here: https://developer.apple.com/news/?id=2x8awlvm
States that Apple/Apple Pay will be making some changes to the ciphers in the coming months. With this article and the issues we seeing on Sandbox Environment we are worried that come the 4th of February as stated in the article that our Production Environment will be effected and we will stop being able to use Apple Pay so that gives us about a week to fix any issues/change code that might come out of it.
Please could you come back with some information around the Article posted and if our Production Environment would be impacted.
Hello everyone.
I encountered a problem when integrating Apple Pay. I obtained all the renewal orders through the Apple interface, and their purchaseDate is 8 hours later than the actual payment time. Why is this happening?
According to the documentation, the purchaseDate value provided by Apple is a millisecond timestamp that represents the actual payment time of the user, so theoretically there shouldn’t be any timezone issues.
This works well in client-initiated subscriptions, but in renewal scenarios, the purchaseDate becomes unreliable. Could this be due to some configuration in the configuration center?
For example, I actually received an Apple notification at 1746686911000 (2025-05-08 06:48:31 Etc/GMT).
However, the data returned by the Apple interface is as shown below:
{
"appAccountToken": "xxxx",
"bundleId": "xxxx",
"currency": "GBP",
"environment": "Production",
"expiresDate": 1762616831000,
"inAppOwnershipType": "PURCHASED",
"isUpgraded": false,
"offerDiscountType": "",
"offerIdentifier": "",
"offerType": 0,
"originalPurchaseDate": 1746456432000,
"originalTransactionId": "320002311698411",
"price": 39990,
"productId": "xxxx",
"purchaseDate": 1746715631000,
"quantity": 1,
"revocationDate": 0,
"revocationReason": 0,
"signedDate": 1746687092825,
"storefront": "GBR",
"storefrontId": "xxxx",
"subscriptionGroupIdentifier": "xxxx",
"transactionId": "320002315815857",
"transactionReason": "RENEWAL",
"type": "Auto-Renewable Subscription",
"webOrderLineItemId": "320001062124562"
}
You can see that the purchaseDate is 1746715631000 (2025-05-08 14:48:31 Etc/GMT), which is even later than the current time.
Can someone explain this behavior that is inconsistent with the documentation, or did I do something wrong?
I would be very grateful for any help anyone can provide.
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
Apple Pay processed a transaction but the account has insufficient funds. Later the transaction is declined. Is it expected from Apple Pay? Does Apple Pay throws an error if the account has insufficent funds- iOS Swift ?
Does anyone know the code to handle this scenario in Swift iOS?
Hi team,
I'm currently trying to add a specific subdomain (with a path) to Apple's Sandbox domain list, but it seems Apple only allows the main domain to be entered.
Due to strict client security policies, we aren't allowed to use just the main domain, which is creating a roadblock in our implementation.
Is there any way to add a full subdomain or URL path to the Sandbox configuration? I'm happy to join a call to explain the scenario further if that would help.
Thanks in advance for your support!
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,
Hello,
we are experiencing issues with adding VISA cards via In-App Provisioning on iOS using PassKit. The same flow works correctly with Mastercard, but for VISA cards the Apple broker endpoint returns HTTP 500.
Details
Device: iPhone15,3 (iPhone 15 Pro), iOS 18.6.1 (22G90)
Region: CZ
App: [REDACTED] (version 0.4.3)
Issuer ID: [REDACTED]
Merchant ID and entitlements are configured and validated.
SEID: [REDACTED]
Request flow
GET /broker/v4/devices/{SEID}/issuerProvisioningCertificates?encryptionVersion=EV_ECC_v2
Request ID: B61363A8-0BFF-4CD6-92BC-52C461DFFAAD
Response: 200 OK
Conversation ID: e12c64c9a0b54981adfad8d00800d836
Returned nonce: [REDACTED]
Timestamp: 2025.08.21_14-01-46+0200
POST /broker/v4/devices/{SEID}/cards
Request ID: F29B73CA-CDDE-4C0C-9F40-B87AE006FDDD
Payload fields present (values redacted): encryptedCardData [REDACTED], ephemeralPublicKey [REDACTED], publicKeyHash [REDACTED], nonce [REDACTED], issuerIdentifier [REDACTED], encryptionVersion=EV_ECC_v2
Response: 500 Internal Server Error (latency ~0.41s)
Timestamp: 2025.08.21_14-01-47+0200
Observation
Provisioning succeeds with Mastercard but consistently fails with VISA.
The GET issuerProvisioningCertificates succeeds; the POST …/cards returns 500.
Request
Could you please:
Provide internal error details for Request ID F29B73CA-CDDE-4C0C-9F40-B87AE006FDDD (and/or Conversation ID e12c64c9a0b54981adfad8d00800d836),
Confirm whether the 500 originates before or after the broker’s call to VTS (Visa Token Service), and
Validate that our app/merchant/issuer configuration is fully enabled for VISA push provisioning in our region.
Attached privately: sysdiagnose with full traces (can share via secure channel upon request).
Kind regards,
Martin
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?
Hello,
Please help.
We have been experiencing what appears to be a TLS handshake error in our Apple Pay merchant validation requests (2-way TLS) since June 25, 2025.
We are aware of the encryption algorithm changes made in February 2025, and our system was functioning correctly at that time. However, the error started occurring suddenly and only recently.
Could you please clarify the following points?
Have there been any changes to the TLS configuration (cipher suites, certificates, protocol versions, etc.) on the Apple Pay server side since June 2025?
Have there been any updates to the specifications or recommended settings for merchant validation requests?
Is there any way to contact Apple for technical support regarding this issue other than through the Developer Forums?
Our Merchant Identity Certificate has already been renewed and is confirmed to be valid.
Topic:
App & System Services
SubTopic:
Apple Pay
We are encountering an issue where Apple Pay shows an unexpected popup with a message and an "OK" button when confirming a payment (after double-tapping the power button). This issue began appearing last week without any changes to the codebase or configurations.
Steps to Reproduce:
Open the app and initiate an Apple Pay payment.
Add a valid card if not already present.
Confirm the payment using the side button (double-tap).
Instead of completing the transaction, a popup appears with a generic message and an "OK" button.
Expected Behavior:
Apple Pay should process the payment and provide a confirmation or error based on the transaction status.
Actual Behavior:
A popup appears with a generic title and an “OK” button. The transaction is not processed.
Environment Details:
Platform: iOS
Apple Pay integration has been functioning correctly for years
No recent updates to Apple Pay-related code or configuration
Configurations Checked:
App Identifier is correctly set with the bundle ID
Apple Pay Payment Processing is enabled in the App ID configuration
Correct Merchant ID is selected and matches in Xcode capabilities
*.entitlements file contains correct Apple Pay entitlement
Payment Processing Certificates are valid and in place
Additional Notes:
The issue appeared suddenly without any modifications to the app. We suspect it may be due to external changes (e.g., Apple system update or merchant validation issue).
Please advise on any further steps we can take to diagnose or resolve this issue.
Topic:
App & System Services
SubTopic:
Apple Pay
To continue your enrollment, complete your purchase now
But when I tried to purchase
I am not able to pay
Topic:
App & System Services
SubTopic:
Apple Pay
I've encountered an issue with Apple Pay in PC Chrome with iOS 18. Below is the scenario and code for reference:
Issue Scenario:
A button is clicked to initiate the Apple Pay process.
A QR code window pops up, which I scan with my phone.
As soon as the session is established, the window closes immediately, not allowing the user to select a payment card.
No errors appear in the console.
Here's the code snippet for handling the Apple Pay button click:
const onApplePayButtonClicked = () => {
if (!window.ApplePaySession) {
return;
}
log('Apple Pay button clicked');
const request = {
countryCode: 'UA',
currencyCode: 'UAH',
merchantCapabilities: ['supports3DS'],
supportedNetworks: ['visa', 'masterCard'],
total: {
label: 'PoC Merchant Apple Pay',
type: 'final',
amount: amount.toString(),
},
};
const session = new window.ApplePaySession(3, request);
session.onvalidatemerchant = async (event) => {
try {
log('Creating ApplePaySession');
const response = await fetchAppleSessionAPI(event.validationURL, applePayMercantId, { deviceId, refreshToken });
log('validateMerchantResponse', response);
session.completeMerchantValidation(response.applePaySessionData);
} catch (error) {
log('validateMerchantError', error);
}
};
session.onshippingmethodselected = () => {
const newTotal = {
label: 'PoC Merchant Apple Pay',
type: 'final',
amount: amount.toString(),
};
session.completeShippingMethodSelection(window.ApplePaySession.STATUS_SUCCESS, {}, newTotal);
};
session.onpaymentauthorized = async (event) => {
log('onpaymentauthorized', event);
const result = {
status: window.ApplePaySession.STATUS_SUCCESS,
};
session.completePayment(result);
log('TOKEN', event.payment.token);
};
session.begin();
};
Troubleshooting Steps Taken:
Verified that window.ApplePaySession is available.
Checked for any console errors—none found.
Confirmed that the QR code scanning and session initiation work as expected.
Expected Behavior:
After scanning the QR code and establishing the session, the user should be able to select a payment card and proceed with the payment flow.
Current Behavior:
The window closes immediately after the session is established, preventing card selection.
Has anyone else faced this issue or has insights on how to resolve it?
Thanks in advance!
Hello!
I have a requirement to read the ICC Public Key Certificate from an EMV credit card to implement a payment validation flow.
Aa far as I understand, I can't use Core NFC for that task since it is not supposed to be used for reading sensitive credit card data and it might be rejected by Apple.
I'm trying to use Tap To Pay as it seems to offer some general card details.
Since Apple's documentation on this side is pretty limited, I'm struggling to understand what is a PaymentCardReader.Token and how can I create one?
Can anyone please help me with setting up Tap to Pay?