Connect to a reader
Connect your application to a Stripe Terminal reader.
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 on iPhone lets users accept in-person contactless payments with a compatible iPhone and the Stripe Terminal SDK. Tap to Pay on iPhone supports Visa, Mastercard, American Express, and Discover contactless cards and NFC-based mobile wallets (Apple Pay, Google Pay, and Samsung Pay). Tap to Pay on iPhone is included in the Terminal iOS SDK and enables payments directly in your iOS mobile app.
Discover readers
Use the discoverReaders method to determine whether your iPhone is supported for Tap to Pay.
The completion
handler invokes with an error if your application runs on a device that doesn’t meet the supported device criteria.
Connect to a reader
To begin accepting Tap to Pay on iPhone payments, provide the discovered reader to the connectReader
method. You also need to create a delegate to handle potential required updates to the reader.
You must register your reader to a location upon connection. To do so, create and use a SCPTapToPayConnectionConfiguration
with the locationId
set to the relevant location ID when connecting.
Set the display_
to represent the name of the business when creating a location. Your customer sees the location’s display_
on the device’s tap screen unless you explicitly provide the name of a business when you connect to a reader. You can edit existing locations as necessary to adjust this text.
If you use destination charges with on_behalf_of, you must also provide the connected account ID in SCPTapToPayConnectionConfiguration
.
Handle device setup 
When connecting to a compatible Tap to Pay on iPhone reader, a configuration update might be required and can take up to a few minutes. We recommend connecting to the reader ahead of time in the background to reduce wait time for businesses.
Make sure your application implements SCPTapToPayReaderDelegate
to handle the configuration steps and display messaging to your business to stand by. You’ll see the configuration steps as a software update so you can display progress to your businesses as appropriate.
Account linking and Apple terms and conditions
You’re presented with Apple’s Tap to Pay on iPhone Terms and Conditions the first time they connect to the reader. 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_
accountbehalf_ of

Link your Apple ID account to accept Tap to Pay payments
Any iPhone can use up to 3 unique Stripe accounts across apps within a rolling 24-hour period when calling connectReader
for Tap to Pay on iPhone. If additional accounts are used for the device within the same 24-hour period, the connectReader
method raises an SCPErrorTapToPayReaderMerchantBlocked error.
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 disconnects 
Your reader disconnects when your application enters the background or when your iPhone loses connectivity. There are two ways you can handle this:
Handle the disconnect manually
Your application must implement the SCPTapToPayReaderDelegate reader:didDisconnect: delegate method to handle this disconnection. You can use this callback as an opportunity to notify the user that something went wrong and that you need internet connectivity to continue. Additionally, you can manually reconnect to the reader when your application re-enters the foreground.
Automatically attempt reconnection
Implement the auto reconnect methods in the SCPTapToPayReaderDelegate
. You must then pass the SCPTapToPayReaderDelegate
to your SCPTapToPayConnectionConfiguration
.
If you automatically attempt reconnection, the following occurs:
- When a disconnect occurs, the SDK automatically attempts to reconnect and notifies you through
onReaderReconnectStarted
. Make sure your app announces that the connection was lost and a reconnection is in progress.- You can use the
Cancelable
object to stop the reconnection attempt at any time.
- You can use the
- If the SDK successfully reconnects to the reader, Stripe notifies you through
onReaderReconnectSucceeded
. Make sure your app announces that the connection was restored and to continue normal operations. - If the SDK can’t reconnect to the reader, Stripe notifies you through both
onReaderReconnectFailed
andreader:didDisconnect:
. Make sure your app announces that an unexpected disconnect occurred.
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.