Tap to Pay on iPhone lets users accept in-person contactless payments with a compatible iPhone and the Stripe Terminal SDK. It requires familiarity with the Terminal SDK and iOS expertise.
Please see our technical integration documentation here.
Tap to Pay on iPhone is currently available in the US only. Platforms and merchants located outside the US are not permitted to use Tap to Pay on iPhone. If you would like to use Tap to Pay on iPhone in your country, let us know. We'll let you know once we’re able to offer this where you are.
The iOS SDK for Tap to Pay on iPhone requires iOS mobile devices that meet the following criteria:
Running iOS 15.5 or later
iPhone XS or later
Is not jailbroken and the device bootloader is locked and unchanged.
Note: iPads do not have NFC reading capabilities so are not supported at this time.
The Tap to Pay on iPhone library includes support for Visa, Mastercard, American Express, Discover, contactless cards and NFC-based mobile wallets (Apple Pay, Google Pay, and Samsung Pay) directly in the users’ mobile app.
Please visit https://stripe.com/pricing for current pricing.
Yes. Tap to Pay on iPhone transactions can be identified in the Dashboard as “Card Present” payments like all other Terminal transactions. As with Stripe Terminal, merchants who use Tap to Pay on iPhone to accept payment cards are not liable for any fraudulent-type disputes filed for such transactions.
Stripe Terminal, including Tap to Pay on iPhone, by default provides E2EE. Users leveraging Tap to Pay on iPhone have access to a pre-filled SAQ C document, directly in your Dashboard under Compliance Settings.
Note: Tap to Pay on iPhone is not supported for use with P2PE.
Tap to Pay on iPhone transactions can be identified in the Dashboard as “Card Present” payments like all other Terminal transactions. Currently we don’t offer the functionality to identify Tap to Pay on iPhone transactions from other card present charges. Users will continue to have access to the same Dashboard functionality ie. reporting, refunds etc. with the exclusion of hardware devices. iPhone devices currently cannot be tracked in the Dashboard for fleet management purposes.
At this time, we do not offer this functionality.
The Tap to Pay on iPhone library does not currently support PIN. If a user tries to charge an amount higher than the contactless limit, the cardholder would not be able to submit their payment account’s fallback PIN in order to complete the transaction.
Alternatively, users can explore backup options such as having a traditional payment terminal on location as a default, or displaying a QR code and prompting the customer to scan and checkout with a CNP transaction.
Regional contactless limits are noted at our Support Q&A page. Note: Generally there are no transaction limits for digital wallets like Apple Pay and Google Pay.
Not all customers will have a contactless payment method. In this event or in the event of a decline, users can continue to collect a payment by switching from Tap to Pay on iPhone to a Terminal card reader. However, users can only have one active connection to a reader at a time. So you’ll need to disconnect the card reader if it’s already connected.
Yes, users must first have completed the Terminal SDK integration prior to integrating with the Tap to Pay on iPhone SDK. See the iOS documentation for specifics.
Yes. To access Tap to Pay on iPhone’s functionality users need to install two sets of SDKs. Users must first have a complete Terminal SDK integration prior to integrating with the Tap to Pay on iPhone SDK. Check out our iOS documentation for specifics.
In alignment with our existing Terminal offerings, users need to build their own POS (point-of-sale) application. For users looking for a no-coding required POS, we encourage you to check out our Partners page.
We collect GPS data for location verification during Terminal transactions. Tap to Pay on iPhone will not work if brought across borders. Our system will automatically deny the transaction if a new country is detected. No additional integration work is needed for this feature.
Users can currently simulate the payment collection flow within the iOS simulator.
No. Currently Tap to Pay on iPhone isn’t supported on applications built on React Native.
Yes. Tap to Pay on iPhone supports existing Terminal functionality to save card details for future online reuse. The Save Card functionality applies only to physical cards, not mobile wallets. For SetupIntents, only iOS is currently supported.
On-reader tipping (see our docs here) is not compatible with Tap to Pay on iPhone. Users are free to implement their own tipping screen before collecting payment or users can use the post-auth flow for tipping (see this flow here) after payment collection. Please note that post-auth tipping must be completed within 3 minutes after payment collection. Due to this function, we recommend presenting tipping before collecting payment for a smoother user experience.
No. Offline mode is not compatible with Tap to Pay on iPhone.
No. We don’t offer the functionality to restrict cards at the Tap to Pay on iPhone level.
Yes. See our docs here.
If you are using the on_behalf_of parameter in your PaymentIntent, please make sure to provide the Connected Account ID in the SCPLocalMobileConnectionConfiguration. See our docs for full details.
For Frequently Asked Questions related to Tap to Pay on iPhone, please see Apple’s Merchant FAQ.
Users will be presented with Apple’s Tap to Pay on iPhone Terms and Conditions the first time they connect to the local reader. In order to register with Apple, merchants must specify a valid Apple ID representing their business before accepting the terms presented by Apple. Note that this flow only needs to be performed once per Stripe account. This flow will be skipped for all subsequent connections using the same Stripe account across all devices, unless otherwise required by Apple.
To learn more about merchant linking, please go to the Tap to Pay on iPhone Business Information section in Apple’s Tap to Pay on iPhone FAQ.
Before using a device to read payment cards, you need to configure it appropriately. This configuration must be done on every device using Tap to Pay on iPhone for the first time. The initial configuration of a device can take up to two minutes. Any subsequent configuration updates typically take just a few seconds. See the ‘Handle device setup’ section for more details.
The Terms of Service for Tap to Pay on iPhone will show up automatically on the first local reader connection for a given account. This is implicitly handled by the Terminal SDK and no additional code is required to trigger the Terms of Service flow.
The Terms of Service for Tap to Pay on iPhone is presented on the first connectLocalMobileReader for a given connect subaccount. Once the Terms of Service are accepted, it will no longer show up for the given account.
We recommend that merchants provide guidance during user onboarding to ensure that the authorized merchant is accepting the terms.
Platforms can configure the business name here. We use the connect account name as the default but you can override this should you choose to do so. You should ensure to specify the correct business name.
We currently don’t support directly using Apple’s proximityReader API. Using the proximityReader properly relies on a direct relationship with Apple in order to issue reader connection tokens.
No. The Tap to Pay on iPhone UI that is triggered when your point-of-sale application is ready to collect a payment. It cannot be customized.
All Terminal hardware readers are required to set a Location. This is an existing requirement that also applies to Tap to Pay on iPhone.
Your Tap to Pay on iPhone application will go through the standard Apple App Store review process. Be sure to consider Apple’s Tap to Pay Human Interface Guidelines when building your app.
You can directly request an entitlement from the Apple Developer site here.
Please reach out to Stripe support.
Users can find support for Apple related issues at the following resources:
Tap to Pay on iPhone Merchant site.