Tap to Pay on iPhone or Android and Stripe Terminal

Tap to Pay lets users accept in-person contactless payments with a compatible consumer device and the Stripe Terminal SDK. It requires familiarity with the Terminal SDK and either Android or iOS expertise. Please see our iOS technical integration documentation here and our Android technical integration documentation here.

Where is Tap to Pay available?

You can find which countries Tap to Pay is available in here or in our technical documentation linked above.

If you would like to use Tap to Pay in your country and it’s not currently supported, let us know. We'll let you know once we’re able to offer this where you are.

What are the device requirements for integrating Tap to Pay?

You can find the device requirements for Tap to Pay on iPhone here.

Note: iPads do not have NFC reading capabilities so are not supported at this time.

You can find the device requirements for Tap to Pay on Android here.

See here for a list of supported Android devices with custom UIs.

What payment methods are supported with Tap to Pay?

You can find documentation on which payment methods are available per reader here.

What is the pricing?

Please visit our Pricing page for current pricing.

Are Tap to Pay transactions routed as card-present transactions?

Yes. Tap to Pay 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 to accept payment cards are not liable for any fraudulent-type disputes filed for such transactions.

Stripe Terminal Tap to Pay and PCI compliance

Stripe Terminal, including Tap to Pay, by default provides E2EE. Users leveraging Tap to Pay have access to a pre-filled SAQ C document, directly in your Dashboard under Compliance Settings.

Note: Tap to Pay is not supported for use with P2PE.

Is there a way to identify Tap to Pay transactions through the Dashboard? Does Tap to Pay offer the same functionality as other devices from Stripe Terminal?

Tap to Pay 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 transactions from other card present charges in the Dashboard. Users will continue to have access to the same Dashboard functionality ie. reporting, refunds etc. with the exclusion of hardware devices. Tap to Pay devices currently cannot be tracked in the Dashboard for fleet management purposes.

Is there a way to reconcile the active device count on a Stripe account against Tap to Pay on iPhone billing?

At this time, we do not offer this functionality.

Is PIN supported through Tap to Pay for transactions that exceed contactless limits?

Tap to Pay on iPhone supports accepting PIN in the 2.23 and above versions of the Terminal iOS SDK.

Tap to Pay on Android 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.

Can you collect payment using a physical Terminal card reader as a backup option?

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 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.

Does Tap to Pay work on tablets?

Tap to Pay requires NFC technology which many tablets do not have.

Tap to Pay on iPhone does not work on iPads as they currently do not support NFC.

Tap to Pay on Android works on Android tablets that meet our device requirements.

Is there a way to identify the cardholder name for Tap to Pay transactions?

The cardholder name is typically not available on contactless payments. Please visit the API reference to understand which transaction-specific details are available for Terminal transactions, including Tap to Pay.


Integration Questions

Does a user need to integrate with the Terminal SDK?

Yes, users must first have completed the Terminal SDK integration prior to integrating Tap to Pay. See the iOS or Android documentation for specifics.

When building your Terminal integration, do you need to install the Terminal SDK first before the Tap to Pay SDK(s)?

Yes. To access Tap to Pay ’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 SDK(s). Check out our iOS or Android documentation for specifics.

Does Terminal offer a pre-built mobile POS application that users can leverage?

You can accept in-person Tap to Pay payments using the Stripe Dashboard app.

If a user takes a Tap to Pay device to another country that isn’t supported (ie: from the US to BR), would the functionality be automatically blocked? Do additional restrictions need to be set up on their application based around location?

We collect GPS data for location verification during Terminal transactions. Tap to Pay 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.

Can a user simulate Tap to Pay transactions in the Terminal simulator?

Yes, users can currently simulate the payment collection flow within the iOS and Android simulators.

Is Tap to Pay compatible with apps built in React Native?

Yes, Tap to Pay is supported on applications built on React Native.

Is the ability to save card details for online reuse compatible with Tap to Pay transactions?

Yes. Tap to Pay supports existing Terminal functionality to save card details for future online reuse. The Save Card functionality applies only to physical cards, not mobile wallets.

Is tipping compatible with Tap to Pay?

On-reader tipping (see our docs here) is not compatible with Tap to Pay. 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.

Is Offline mode compatible with Tap to Pay?

No. Offline mode is not compatible with Tap to Pay.

Is there any way to restrict card types at the Tap to Pay?

No. We don’t offer the functionality to restrict cards at the Tap to Pay level.

Do Stripe test cards work with Tap to Pay?

Yes. See our docs here.

What does it mean if I am seeing an on_behalf_of error?

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 iOS or Android docs for full details.

Can I customize the UI for the tap screen?

No. You cannot customize the UI for either iOS or Android for Tap to Pay at this time.

Will the user have to customize the tap zones in their integration for each device type?

For Tap to Pay on Android, the transaction UI is handled by Stripe. The first time the phone is connected as the reader, the user will see Stripe’s "default" screen. Following that, subsequent transactions will have the tap zone prompt customized to where the NFC chip is on each device (e.g. top right, top left, middle). If the tap zone is not known, the default screen will be used. There is no integration work required to customize the tap zones.

What is the expected level of effort required to integrate with this library?

Once the user has completed the standard integration with Terminal’s iOS or Android SDK(s), the respective integrations for Tap to Pay on iOS or Android is fairly simple and straightforward. On average it takes one engineer less than two weeks to complete.


Tap to Pay on iPhone Related Questions

For Frequently Asked Questions related to Tap to Pay on iPhone, please see Apple’s Merchant FAQ.

How is initial onboarding handled for iPhone devices?

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.

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.

Are the Tap to Pay on iPhone’s Terms and Conditions (ToS) acceptance steps transparently handled by the Terminal SDK?

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.

When do the Tap to Pay on iPhone’s Terms and Conditions (ToS) steps happen?

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.

Apple’s docs mention a requirement that “Only an admin user can accept The Terms and Conditions on behalf of a merchant.” Does the merchant need to do anything to indicate that a user is authorized to accept the T&Cs?

We recommend that merchants provide guidance during user onboarding to ensure that the authorized merchant is accepting the terms.

The best practices recommend connecting to the reader in the background on app startup. How do I prevent the Tap to Pay on iPhone’s Terms and Conditions (ToS) from showing up when users launch the app for the first time?

Merchants can set the tosAcceptancePermitted parameter to NO in the connectionConfig when calling connectLocalMobileReader in the background. If a user has not yet accepted the ToS, this connection will fail with an exception. We recommend that merchants handle this exception and guide the user to a separate explicit onboarding flow where connectLocalMobileReader is called with the parameter enabled and where the authorized merchant can accept the ToS.

When the Apple TTP screen pops up and shows the business name, how configurable is that for Platforms? Is it specific to the exact DBA of the connected account?

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.

Does Stripe support implementations where a merchant directly uses Apple’s proximityReader API?

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.

Are there options available for customizing the Tap to Pay on iPhone User Interface?

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.

Do you need to set a location for your mobile device when using Tap to Pay on iPhone? Is this required by Apple?

All Terminal hardware readers are required to set a Location. This is an existing requirement that also applies to Tap to Pay on iPhone.

How do I get my iOS app approved by Apple?

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.

How do I request and configure the required entitlement to support Tap to Pay on iPhone?

You can directly request an entitlement from the Apple Developer site here.


Tap to Pay on Android related questions

How do I know if my phone supports NFC?

You can confirm your Android device supports NFC by checking your phone’s Settings. If you see an NFC option, it is supported, and just make sure it’s switched on to use Tap to Pay.

When will Discover be supported?

We do not have a timeline for Discover support at this time.

How can I keep up with any relevant SDK changes?

Please subscribe to terminal-announce@lists.stripe.com. We are aiming to give at least 3 months heads up for any future changes, but more urgent SDK updates may be required if a critical security vulnerability is discovered in the SDK.

Additionally, Tap to Pay on Android has public changelogs.


Support

I have questions about my Apple ID account, Apple Business Register (ABR) account, and/or iPhone hardware.

Users can find support for Apple related issues at the following resources: