Tap to Pay on iPhone

RSS for tag

Discuss how to manage contactless payments using an app on an iPhone without any additional hardware.

Tap to Pay on iPhone Documentation

Posts under Tap to Pay on iPhone subtopic

Post

Replies

Boosts

Views

Activity

Resolving Tap to Pay on iPhone errors when building for App Store, TestFlight, or Enterprise distribution
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
0
0
464
Oct ’25
Gathering Required Information for Troubleshooting Tap to Pay on iPhone
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
0
0
381
Mar ’25
Tap to Pay on iPhone to from Colombia
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?
1
0
70
4d
P2P NFC BTC
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)?
1
0
31
5d
Testing HCE Default Payment App Behavior Outside Supported Regions
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!
0
0
25
5d
Apple Tap to Pay transaction fails with ProximityReader.PaymentCardReaderSession.ReadError error 13
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
1
0
52
Oct ’25
EMV Card Data
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
2
0
1k
Oct ’25
Issue with StoreKit 2 Purchases: "unfinalized statements / unfinished backups" SQLite Crash
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
1
0
86
Oct ’25
Same same originalTransactionId, productId, but the transactionIds are different.
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.
1
0
87
Sep ’25
Subscription upgrade during trial with a pending crossgrade: does remaining trial time get forfeited and is the prior plan refunded?
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!
0
0
100
Sep ’25
Problem with adding Tap to Pay on a React Native/Expo app
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)
1
0
103
Aug ’25
Tap To Pay PaymentCardReader.Token
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?
1
0
131
Aug ’25
Tap to Pay entitlement stuck in development for nearly 1.5 months – do I need to resubmit?
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
1
1
166
Jul ’25
Tap to Pay on iPhone - Distribution Provisioning Profile Issue
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.
4
0
1.7k
Jul ’25
Provisioning profile doesn't support the Tap to Pay on iPhone capability.
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
3
0
2.3k
Jul ’25
Can Wallet Extensions be implemented in a second phase after in-app provisioning?
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!
0
0
50
Jul ’25