If your developer team has been approved to implement Tap to Pay on iPhone, you were granted a managed entitlement configured only for the Development distribution type. When compiling your project for any other distribution type, such as App Store, Ad hoc, or In-house (for Enterprise apps), the build with fail with errors. You can resolve these errors by contacting the initial provisioning team and asking for production distribution review/validation.
For more information on requesting the Tap to Pay on iPhone entitlement, see the documentation below:
Setting up Tap to Pay on iPhone
https://developer.apple.com/documentation/proximityreader/setting-up-the-entitlement-for-tap-to-pay-on-iphone
To request for permission for the App Store, Ad hoc, or In-house distribution types, please respond to the confirmation email received after your initial entitlement request. The provisioning team will provide the next steps to begin the public distribution review process and eventually approve your app for distribution via TestFlight, the App Store, or to Enterprise managed devices.
Note: The only team that manages this entitlement is the same provisioning team that granted you access, so you'll need to follow-up with the same team that approved your initial request to resolve this compilation and archival issue. Once you're approved for App Store distribution, the same steps used to distribute your app via TestFlight or In-house will be successful.
If you continue to have errors after confirming you've been granted the expected distribution type for your app configuration, please see the post below, then create a new post for your issue and mention your Feedback ID after following the steps:
Gathering Required Information for Troubleshooting Tap to Pay on iPhone
https://developer.apple.com/forums/thread/775784
Cheers,
Paris X Pinkney | WWDR | DTS Engineer
Tap to Pay on iPhone
RSS for tagDiscuss how to manage contactless payments using an app on an iPhone without any additional hardware.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
While troubleshooting Tap to Pay on iPhone, it is essential that the developer is able to collect logs on their device and check those logs for error messages. This is also essential when reporting issues to Apple. To gather the required data for your own debugging as well as reporting issues, please perform the following steps on the test device:
Install the Tap to Pay profile on your iPhone.
Reproduce the issue and make a note of the timestamp when the issue occurred, while optionally capturing screenshots or video.
Gather a sysdiagnose on the same iPhone.
Create a Feedback Assistant report with the following information:
The bundle ID
The serial number of the device.
For iOS, open Settings > General > About (tap and hold to copy).
The SEID (Secure Element Identifier) of the device, represented as a HEX encoded string.
For iOS, open Settings > General > About > SEID (tap and hold to copy).
The sysdiagnose gathered after reproducing the issue.
The timestamp (including timezone) of when the issue was reproduced.
Screenshots or videos of errors and unexpected behaviors (optional).
Submitting Your Feedback
After your submission to Feedback Assistant is complete, please respond to your post with the Feedback ID. Once received, I can begin my investigation and determine if this issue is caused by an error within your app, a configuration issue within your developer account, app configuration, or an underlying system bug.
Cheers,
Paris X Pinkney | WWDR | DTS Engineer
Hi everyone,
We’re currently working on implementing in-app provisioning for Apple Pay, enabling users to add cards directly from within our app.
We understand that Wallet Extensions are part of the expected user experience. However, we would like to know if it's acceptable to initially release the app with in-app provisioning only, and then deliver Wallet Extensions in a later update.
This is mainly to manage development resources and timelines more efficiently. We want to make sure that this phased approach aligns with Apple’s expectations for app review and production usage.
Has anyone followed a similar phased rollout? Any guidance or experience you can share would be greatly appreciated.
Thanks in advance!
Topic:
App & System Services
SubTopic:
Tap to Pay on iPhone
I’m implementing subscriptions and running tests, and I noticed a behavior I’d like to confirm.
Plans in the app
Basic — Monthly
Basic — Annual
Premium — Monthly
Premium — Annual
Test environment
Sandbox (where ~1 day ≈ under 1 minute of real time)
steps
Start Basic (Monthly) using an introductory offer (free trial).
Create a crossgrade to Basic (Annual) (scheduled/queued).
After receiving a RENEWAL App Store Server Notification indicating the plan will move from trial to paid Basic (Annual), but before the trial actually expires, upgrade the user to Premium (Monthly).
Observed behavior (Sandbox) & questions
Even though there is still up to ~1 day of trial remaining (≈ under 1 minute in Sandbox), upgrading to Premium (Monthly) immediately ends the trial and activates the paid Premium plan right away.
Will this same behavior occur in Production?
If yes, is this the expected/acceptable behavior when upgrading during an active trial after a pending crossgrade?
Note: If we upgrade to Premium before the RENEWAL notification arrives, the remaining trial time is carried over in our tests.
In this flow, we see a RENEWAL notification for Basic (Annual) (moving from trial → paid), but then the user immediately upgrades to Premium (Monthly) and the trial ends at that moment.
In Production, would the charge for Basic (Annual) be refunded automatically since the user effectively switches to Premium immediately (and Basic Annual does not remain active)?
In Sandbox there’s no real charge, but I want to ensure we won’t see a situation in Production where Basic (Annual) is billed and not refunded, even though the subscription effectively moved to Premium right away.
Thanks in advance!
Hi,
I am developing an app that uses the Host Card Emulation (HCE) technology available on iOS. Our team is using the official HCE app entitlement, and we are testing the SDK’s behavior when the app is selected as the default contactless payment application.
On devices located in supported regions, the system automatically displays a setting where the user can choose the default app. For colleagues who are located in those regions, the toggle appears normally.
For development and QA purposes, I would like to understand whether there is an officially supported method to test the default-app selection behavior on devices that are not in a region where the feature is available.
Any guidance on the correct testing approach would be appreciated.
Thank you!
Trying to enable TTP and we're a PSP, from everything I'm reading I'm supposed to provide a reader token to our merchants but can't find anything on it. How do I generate this token? All I know is that it's a jwt and there's some header requirements. Documentation mentions the jwt should include a unique merchant identifier.
My question is what does the payload and header look like when signing the jwt?
Topic:
App & System Services
SubTopic:
Tap to Pay on iPhone
大家好!应用程序提交审请时有个问题请教
(非消耗型产品)提示 购卖商品
ID不存在 应该如何解决
Hi everyone, we’ve been waiting since May 30 for our Tap to Pay on iPhone entitlement to be enabled for distribution, but it’s still only active for development (Case‑ID: 14485444).
We submitted:
A new video recorded from an external device showing the full checkout flow
Updated merchant education using the ProximityReaderDiscovery.Topic.payment(.howToTap) API, as suggested by Apple
The team initially said the education was compliant, then said it wasn’t. We fixed everything, sent the updated materials, and haven’t heard back in days.
We can’t even upload the app to TestFlight because of this error:
Profile doesn't include the com.apple.developer.proximity-reader.payment.acceptance entitlement
It’s now been almost a month and a half, and this delay is becoming critical. It’s blocking both internal testing and our production release.
We’d really appreciate clarity on:
Do we need to submit another request via the form?
Or is it enough to reply to the existing email thread?
Also, are there any direct contacts or escalation paths we can use?
Any help or guidance appreciated
Hello,
We are trying to add tap to pay to our app built with react native through expo.
When running the command eas build --profile development --platform ios --local I get this error:
But when I open the project in XCode I can see that the Tap to Pay capability is enabled:
And when I look at my profiles in the apple developer platform, I can see that the profile the error mentioned above has the Tap to Pay entitlement contrary to what it tells me:
I don't understand what's happening, can somebody help me?
I'm here if you need more informations.
P.S.: not sure if it's relevant but, the way we did thing with expo, we have a different bundle identifier and app name according to which environment we are building for (development/preview/production)
We are seeing an issue with a potential duplicate charge issue regarding our app.
We have received two transactions with the same originalTransactionId but different transactionIds:
Order A:
TransactionId: [Redacted_TID_1]
OriginalTransactionId: [Redacted_OID_A]
ProductId: weekly_subscription
PurchaseDate: [Redacted_Timestamp_1]
SignedDate: [Redacted_Timestamp_2]
Price: [Redacted_Price] CAD
Order B:
TransactionId: [Redacted_TID_2]
OriginalTransactionId: [Redacted_OID_A]
ProductId: weekly_subscription
PurchaseDate: [Redacted_Timestamp_1]
SignedDate: [Redacted_Timestamp_3]
Price: [Redacted_Price] CAD
Both transactions share the same originalTransactionId, productId, and expiresDate, but the transactionIds are different.
We wanna confirm:
Were customers charged once or twice for this subscription renewal?
If only one charge was made, how should we programmatically determine the “valid” transaction among multiple records with the same originalTransactionId to avoid confusion in our server-side receipt validation?
We appreciate any clarification so we can handle this correctly in our backend.
Hi, I’m running into a persistent error while implementing StoreKit 2 renewable subscriptions in my SwiftUI app.
Context
I have a two-screen flow:
Screen 1: user selects a subscription plan (monthly / yearly).
Screen 2: user fills out personal information and taps Subscribe that triggers the purchase function.
On first launch or the first couple of purchases (on both Storekit's local and Sandbox testing), everything works fine. The App Store popup appears, the purchase goes through, and I get the transaction result.
But after a few runs (3rd or 4th purchase attempt onward), my app crashes the moment the App Store purchase popup appears.
Error Logs
When the crash happens, the console shows:
`unable to close due to unfinalized statements or unfinished backups
BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use: /private/var/mobile/Containers/Data/Application/D8D97A11-DF06-4EF2-AC55-138C4739A167/Library/d6d2e85a60f0480c4c17834eeb827a14_MPDB.sqlite
invalidated open fd: 21 (0x11)
BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use: ...`
Observations
The error only shows after some time maybe due to multiple transactions and switching between plans for the same user, not on the very first purchases.
If I land on the purchase screen immediately after app launch, the purchase works. But if I wait a while before navigating to the purchase screen, the popup causes the app to crash.
I’m not using Core Data or my own SQLite database at all - so I assume this DB (MPDB.sqlite) is StoreKit’s internal persistence.
Things I’ve tried so far
Cleaning StoreKit caches:
rm -rf ~/Library/Developer/CoreSimulator/Devices/*/data/Container s/Data/Application/*/Library/Caches/storekit
Rebuilding from scratch, cleaning build folder.
Switching between sandbox accounts, signing out/in again.
Added await transaction.finish() after verified purchases.
Added cleanup for unfinished transactions at app launch:
for await result in Transaction.unfinished {
if case .verified(let transaction) = result {
await transaction.finish()
}
}
Tried both StoreKit Configuration file and sandbox environment but issue persists in both.
Questions
Is this error StoreKit-specific (internal SQLite DB corruption) or something wrong in my implementation?
Why would it only appear after a few runs / with a delay before navigating to the purchase screen?
Am I missing something else in handling StoreKit 2 transactions?
Screenshots of the errors are attached for context.
Any insights would be really appreciated...I’m stuck because I can’t tell if this is an Apple bug with StoreKit 2 or something I’ve overlooked in my code.
Specs:
Xcode 16.4
Build version 16F6
iOS version: 18.6.2
Topic:
App & System Services
SubTopic:
Tap to Pay on iPhone
Tags:
Subscriptions
StoreKit
Xcode
In-App Purchase
iPhone is throwing an error when starting Apple Tap to Pay transaction (other iPhones using the same merchant account working as expected)
Error:
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 13.)
We have tried full factory reset on the iPhone multiple times but still having the same issue. As mentioned issue is specific to one iPhone and other iPhones attached to the same merchant account have no issues taking Apple Tap to Pay transactions.
Given the error is unknown / not documented, is it possible to get an explanation of what does error 13 means or what is causing it so we can troubleshoot accordingly?
Full logs:
readCancelled
readyForTap
readCancelled
readyForTap
userInterfaceDismissed
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 13.)
readCancelled
readyForTap
readCancelled
readyForTap
readCancelled
readyForTap
userInterfaceDismissed
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 13.)
readCancelled
readyForTap
userInterfaceDismissed
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 13.)
readCancelled
readyForTap
readCancelled
readyForTap
updateProgress(100)
updateProgress(99)
updateProgress(98)
updateProgress(96)
updateProgress(95)
updateProgress(94)
updateProgress(93)
updateProgress(92)
updateProgress(91)
updateProgress(90)
updateProgress(89)
updateProgress(88)
updateProgress(87)
updateProgress(86)
updateProgress(85)
updateProgress(84)
updateProgress(82)
updateProgress(81)
updateProgress(80)
updateProgress(79)
updateProgress(78)
updateProgress(77)
updateProgress(75)
updateProgress(74)
updateProgress(73)
updateProgress(72)
updateProgress(69)
updateProgress(68)
updateProgress(67)
updateProgress(66)
updateProgress(65)
updateProgress(64)
updateProgress(62)
updateProgress(60)
updateProgress(59)
updateProgress(58)
updateProgress(57)
updateProgress(56)
updateProgress(55)
updateProgress(54)
updateProgress(53)
updateProgress(52)
updateProgress(48)
updateProgress(47)
updateProgress(45)
updateProgress(44)
updateProgress(43)
updateProgress(41)
updateProgress(40)
updateProgress(39)
updateProgress(37)
updateProgress(36)
updateProgress(34)
updateProgress(33)
updateProgress(32)
updateProgress(31)
updateProgress(30)
updateProgress(25)
updateProgress(22)
updateProgress(19)
updateProgress(18)
updateProgress(17)
updateProgress(15)
updateProgress(14)
updateProgress(13)
updateProgress(12)
updateProgress(10)
updateProgress(9)
updateProgress(8)
updateProgress(7)
updateProgress(5)
updateProgress(4)
updateProgress(3)
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
userInterfaceDismissed
readCancelled
readyForTap
readCancelled
readyForTap
userInterfaceDismissed
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
readCancelled
readyForTap
readCancelled
readyForTap
readCancelled
readyForTap
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
userInterfaceDismissed
readCancelled
readyForTap
notReady
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
userInterfaceDismissed
readCancelled
readyForTap
readCancelled
userInterfaceDismissed
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
readCancelled
readyForTap
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
userInterfaceDismissed
readCancelled
readyForTap
readCancelled
readyForTap
userInterfaceDismissed
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
readCancelled
readyForTap
readCancelled
readyForTap
readCancelled
readyForTap
readCancelled
readyForTap
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
userInterfaceDismissed
readCancelled
readyForTap
readCancelled
readyForTap
userInterfaceDismissed
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
readCancelled
readyForTap
Card reading failed due to unknown error: The operation couldn’t be completed. (ProximityReader.PaymentCardReaderSession.ReadError error 12.)
userInterfaceDismissed
readCancelled
readyForTap
readCancelled
readyForTap
Colombia is not yet listed as a Tap to Pay user, but it is in the process of becoming so.
We are currently a group of developers at a company in Colombia working on a project to integrate Tap to Pay into our application. After reviewing Apple's documentation, my company is not certified to meet Apple's security requirements, PCI standards, or licensing requirements. However, the payment service provider we have contracted for this is in the process of obtaining the certifications, authorizations, and licenses that Apple specifies. Our team members and managers overseeing this Tap to Pay project have told us that we, as iOS developers, should integrate and use the Proximity Reader API, but we know that we, as developers, are not authorized by Apple to do so.
Is the payment service provider the only one who can make this possible, enabling its use with NFC and Proximity Reader?
I would like to know if the service provider will provide us with the SDK containing the Proximity Reader API for integration into the project, or if my company will have to implement the Proximity Reader API ourselves?
Trying to figure out how to send btc, eth, etc, phone to phone. Square app allows for the phone to turn into a payment terminal for fiat currencies and payment systems. the data encryption logic and sending p2p is similar but can that functionality be enabled for alternative purposes i.e. sending crypto phone to phone (designated wallet on one phone to designated wallet on another)?
StoreKit error:Storekit has failed to fetch this product.
We implemented in-app purchases using StoreKit2. During testing, we were able to make purchases smoothly in various ways without any issues. However, the reviewers encountered this error, and it happened 100% of the time.
Topic:
App & System Services
SubTopic:
Tap to Pay on iPhone
Tags:
StoreKit Test
StoreKit
In-App Purchase
Hello I am developing an iOS app and would like to read an EMV card that is issued by me and want my customers to tap to activate simply to validate the possession of the card at the time of activation.
Any suggestions welcome on how can i achieve this using either NFC Framework or secure elements
Tap to Pay capabilities are enable and I can use in development profile but I cannot make build that I can upload on TestFlight using the distribution profile because during create build I am getting "Provisioning profile doesn't support the Tap to Pay on iPhone capability." this should be working because I checked twice that distribution profile and certificate have this capability and added in Xcode. how can I resolve this mismatched profile issue I am using Xcode - 15.0.1
Topic:
App & System Services
SubTopic:
Tap to Pay on iPhone
Tags:
Entitlements
Xcode
Apple Pay
Core NFC
Hi guys,
I'm trying to upload my app with Tap to Pay on iPhone functionality. However, I'm getting error message "Profile doesn't include com.apple.developer.proximity-reader.payment.acceptance entitlement." I've confirmed many times that I have the distribution profile with this capability. Any idea what might be the issue? The development environment works perfectly.