Tap to Pay
Use Tap to Pay on Android (TTPA) to accept in-person contactless payments with compatible NFC-equipped Android devices. TTPA includes support for Visa, Mastercard, and American Express contactless cards and NFC-based mobile wallets (Apple Pay, Google Pay, and Samsung Pay). TTPA is an extension to the Terminal Android SDK and enables payments directly in your Android app.
Availability
Available in Beta
Get started
Integrate the latest version of the Terminal Android SDK to include the latest bug fixes and features. You can view version-specific updates and bug fixes in the SDK changelog. The minimum required SDK version to support all available countries is 2.21.1.
Device and minimum SDK version requirements can change due to updated compliance requirements or security vulnerabilities. To make sure your solution is up to date with Tap to Pay requirements, please subscribe to terminal-announce@lists.stripe.com.
To enable Tap to Pay in your Android application:
- Set up the Terminal Android SDK.
- Replace your existing
stripeterminal
dependencies with the following dependencies: - Connect to the Tap to Pay reader.
- Collect the payment data with the Tap to Pay reader.
- Confirm the payment.
Supported devices
Android devices must meet all the following criteria, otherwise reader discovery or the connection will fail:
- Contains functioning NFC antenna and chipset
- Isn’t rooted and device bootloader is locked and unchanged
- Runs a current version of Android (Android 11 or above)
- Uses Google Mobile Services and has the Google Play Store app installed
- Has a hardware backed keystore
- Supports generating key pairs using a variety of key algorithms, including RSA and AES from the Android keystore
- A stable connection to the internet
Android device emulators aren’t supported by Tap to Pay.
Note
Although Tap to Pay supports a variety of Android devices, we recommend using a Samsung Galaxy S22 or Samsung Galaxy A12 for development, if you want to get started quickly.
User interface
Tap to Pay on Android includes payment collection screens. When your application is ready to collect a payment, the Stripe Terminal SDK takes over the display to handle the collection process. After you call the collect payment method, your application continues to run while Tap to Pay displays a full-screen prompt that instructs the cardholder to tap their card or NFC-based mobile wallet. If there’s an error reading the card, a prompt for retry displays. A successful tap returns a success indication and then your application regains control to confirm the payment.
Device-specific NFC tap zone UI
The Tap to Pay on Android SDK supports device-specific UX that dynamically indicates to the end user where the tap zone is located on the device. View examples of what the UX might look like in practice:
Generic UX
Device-specific UX
The devices listed below are confirmed to meet the current hardware and minimum OS requirements. Device and operating system requirements might change in the future due to new security requirements.
- Google
- Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 4, Pixel 4 XL
- Pixel 5, Pixel 6, Pixel 6 Pro, Pixel 7, Pixel 7 Pro, Pixel 8, Pixel 8 Pro
- Pixel 3a, Pixel 3a XL, Pixel 4a, Pixel 5a, Pixel 6a, Pixel 7a
- Samsung
- Galaxy A12, Galaxy A13, Galaxy A14
- Galaxy A21, Galaxy A21s, Galaxy A22, Galaxy A23, Galaxy A24
- Galaxy A32, Galaxy A33, Galaxy A34
- Galaxy A41, Galaxy A42
- Galaxy A51, Galaxy A52, Galaxy A53, Galaxy A54
- Galaxy A70, Galaxy A70s, Galaxy A71, Galaxy A72, Galaxy A73
- Galaxy S10, Galaxy S20, Galaxy S21, Galaxy S22, Galaxy S23, Galaxy S24
- Galaxy Note10, Galaxy Note20
- Galaxy Tab Active3, Tab Active4 Pro
- Oppo
- A16s, A54s, A73, A74, A94, A96
- Reno5, Reno6, Reno7
- Find X3, Find X5, Find X6, Find X7
- OnePlus
- 6, 6T, 7, 7 Pro, 7T, 7T Pro
- 8, 8 Pro, 8T, Nord, 9, 9 Pro, 9RT, 9R
- 10 Pro, 10R
- Nord CE, Nord 2, Nord CE 2, Nord N10, Nord N20, Nord N200
- Xiaomi
- Mi 10T, Mi Note 10
- Redmi 9, Redmi 9T, Redmi 10, Redmi 11T
- Redmi Note 9, Redmi Note 10, Redmi Note 11, Redmi Note 12
- Poco X4, Poco X5, Poco X6
Cardholder verification limits and fallback
Some contactless card transactions above certain amounts might require additional cardholder verification methods (CVM) such as PIN entry. Tap to Pay on Android doesn’t yet support PIN capture, so you might see elevated decline rates for transactions above the limit. NFC wallet payments (Apple Pay, Google Pay, and Samsung Pay) might not be subject to these same limits.
We recommend attempting the transaction anyway. When collecting payment with your mobile device, hold the card to the reader long enough to read the information from the chip. You might need to wait a few seconds after the initial vibrate when the card makes contact. In the event of a decline, use another method to collect payment, such as a Terminal card reader. You can only have one active connection to a reader at a time.
Best practices and promotion guidelines
Ensure an optimal user experience by considering the following:
- Connect to the reader in the background on app startup to reduce wait times when collecting a payment.
- Reconnect to the reader when the app comes to the foreground to reduce wait times.
- Provide merchant education to guide your users on how to accept contactless payments on a compatible Android device, including in-product promotion and text or email alerts.
- Launch and promote your Tap to Pay on Android marketing campaigns using our messaging templates and design assets. Become a Stripe Partner here to access these assets in the partner portal.