Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseManaged Payments
Use Payment Links
Build a checkout page
Build an advanced integration
Build an in-app integration
Payment methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment interfaces
Payment Links
Checkout
Web Elements
In-app Elements
Payment scenarios
Custom payment flows
Flexible acquiring
Orchestration
In-person payments
Terminal
    Overview
    Accept in-person payments
    Integration design
    Select your reader
    Design an integration
    Quickstart
    Example applications
    Testing
    Terminal setup
    Set up your integration
    Connect to a reader
      Network requirements
    Accepting a payment
    Collect card payments
    Accept offline payments
    Mail order and telephone order payments
    Regional considerations
    During checkout
    Collect tips
    Collect and save payment details for future use
    Flexible authorizations
    After checkout
    Refund transactions
    Provide receipts
    Customize checkout
    Cart display
    Collect on-screen inputs
    Collect swiped data
    Collect tapped data for NFC instruments
    Apps on devices
    Manage readers
    Order, return, replace readers
    Register readers
    Manage locations and zones
    Configure readers
    Encryption
    References
    API references
    Mobile readers
    Smart readers
    SDK migration guide
    Deployment checklist
    Stripe Terminal reader product sheets
Other Stripe products
Financial Connections
Crypto
Climate
HomePaymentsTerminal

Connect to a reader

Connect your application to a Stripe Terminal reader.

Copy page

Note

If you haven’t chosen a reader yet, compare the available Terminal readers and choose one that best suits your needs.

Tap to Pay lets users accept in-person contactless payments with compatible NFC-equipped Android devices or compatible iPhones. Tap to Pay supports Visa, Mastercard, American Express contactless cards, and NFC-based mobile wallets (Apple Pay, Google Pay, and Samsung Pay). Tap to Pay on iPhone and Android support is included in the native Terminal SDKs and enables payments directly in your mobile app.

Follow these steps to connect your app to the Tap to Pay reader on a supported device:

  • Discover readers using the SDK to confirm device compatibility.
  • Connect to a reader using the SDK to accept payments.
  • Handle unexpected disconnects to make sure your user can continue to accept payments if the reader disconnects unexpectedly.

Discover readers

SDK Reference

  • discoverReaders (React Native)

Use the discoverReaders method to determine hardware support for Tap to Pay on your device.

If your application runs on a device that doesn’t meet the requirements above, the discoverReaders method returns an error.

DiscoverReadersScreen.tsx
export default function DiscoverReadersScreen() { const { discoverReaders, discoveredReaders } = useStripeTerminal({ onUpdateDiscoveredReaders: (readers) => { // The `readers` variable will contain an array of all the discovered readers. }, }); useEffect(() => { const { error } = await discoverReaders({ discoveryMethod: 'tapToPay', }); }, [discoverReaders]); return <View />; }

Connect to a reader

SDK Reference

  • connectReader (React Native)

To accept Tap to Pay payments, provide the discovered reader from the previous step to the connectReader method.

You must register your reader to a location upon connection. To do so, you must pass the relevant location ID to connectReader.

When using destination charges with on_behalf_of on iPhones, you must also provide the connected account ID.

ConnectReaderScreen.tsx
const { reader, error } = await connectReader({ reader: selectedReader, locationId:
'{{LOCATION_ID}}'
}, 'tapToPay' ); if (error) { console.log('connectTapToPayReader error:', error); return; } console.log('Reader connected successfully', reader);

Account linking and Apple terms and conditions

Users are presented with Apple’s Tap to Pay on iPhone Terms and Conditions the first time they connect to the reader on iPhones. To register with Apple, you must specify a valid Apple ID representing your business before accepting the terms presented by Apple. You only need to perform this once per Stripe account. This flow isn’t presented on subsequent connections using the same Stripe account, including on other mobile devices.

Each connected account must accept the Terms and Conditions when:

  • A Connect user creates direct charges
  • A Connect user creates a destination charge and specifies an on_behalf_of account

Link your Apple ID account to accept Tap to Pay payments

Learn more about account linking in the Tap to Pay on iPhone Business Information section of the Apple Tap to Pay on iPhone FAQ.

Handle unexpected disconnects

SDK Reference

  • UserCallbacks (React Native)

Unexpected disconnects might occur between your app and the reader. For example, the Tap to Pay reader might unexpectedly disconnect because the device loses internet connectivity.

During testing, you can simulate an unexpected disconnect by disabling internet access to your device.

To handle the disconnect, you must implement the onDidReportUnexpectedReaderDisconnect callback. This allows your app to reconnect to the Tap to Pay reader and, when appropriate, notify the user of what went wrong and how they can enable access to Tap to Pay. End-users can resolve certain errors, such as internet connectivity issues.

DiscoverReadersScreen.tsx
const { discoverReaders, connectedReader, discoveredReaders } = useStripeTerminal({ onDidReportUnexpectedReaderDisconnect: (readers) => { // Consider displaying a UI to notify the user and start rediscovering readers }, });

Next steps

You’ve connected your application to the reader. Next, collect your first Stripe Terminal payment.

The BBPOS and Chipper™ name and logo are trademarks or registered trademarks of BBPOS Limited in the United States and/or other countries. The Verifone® name and logo are either trademarks or registered trademarks of Verifone in the United States and/or other countries. Use of the trademarks does not imply any endorsement by BBPOS or Verifone.

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc