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
    Accepting a payment
    Collect card payments
    Additional payment methods
    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

Deployment checklist

Use this checklist to help ensure a smooth deployment of Stripe Terminal.

Copy page

Checklist progress

As you complete each item and check it off, the state of each checkbox is stored within your browser’s cache. You can refer back to this page at any time to see what you have completed so far.

Stripe Terminal requires integrating hardware and software to bring Stripe to the physical world. As you develop your integration, refer to this checklist to make sure you cover all the critical steps.

It’s fine to go out of order, but understanding the full scope of a Terminal integration helps you connect all the pieces.

After following the integration guides for Stripe Terminal, check that your application is set up correctly.

  • To handle the ConnectionToken lifecycle, set up an endpoint on your backend that creates a ConnectionToken for your client application. Authenticate this endpoint to control who can access your readers. Don’t hard-code the ConnectionToken in your application—it prevents you from reconnecting to a reader. To further control access to smart readers like the Verifone P400 and BBPOS WisePOS E, use Locations.

  • If you defined the PaymentIntent capture_method as manual, the payment is authorized but not captured when the SDK returns a processed PaymentIntent to your application. To complete collection of funds, you must capture the PaymentIntent.

    When your application receives a processed PaymentIntent from the SDK, make sure it notifies your backend to capture the PaymentIntent.

  • Provide your customer with the option to receive a paper or email receipt. You can use Stripe’s prebuilt receipts, or use receipt data from the Stripe API to build custom receipts that are on-brand for your business. Test that you receive a receipt when you create a live mode payment using your application.

    If you provide your customers with custom receipts, save a copy of each receipt as dispute evidence. If you use Stripe’s prebuilt receipts, a copy of the receipt is saved automatically and available in the Dashboard.

  • Reconcile payments with your internal orders system on your server at the end of a day’s activity to avoid unintended authorizations or un-captured funds:

    • A user abandoning your application’s checkout flow early can result in an un-captured PaymentIntent, which may appear to the cardholder as an unintended authorization.
    • Similarly, the request from your application notifying your backend to capture the PaymentIntent may fail, resulting in incomplete collection of funds.
  • The BBPOS Chipper 2X BT does not auto-update, so it’s important for your application to support updates. Although they’re rare, updates usually contain important features or critical fixes. Make sure your app supports the following:

    1. First, check for whether an update is available.
    2. If an update is available, display in the UI the estimated time to complete the update, along with options to continue or cancel.
    3. While the update is in progress, have the UI tell the user to leave the reader powered on and nearby. Block the user from navigating away from the page.
    4. Display a visual indicator of the update progress (for example, the percentage or a progress bar).

    Refer to our example applications (iOS, Android) for a reference UI.

  • For smart readers like the Verifone P400 and BBPOS WisePOS E, you must register the reader to your account before you can connect your application to the reader.

    How you handle reader registration depends on your use case:

    • Deployment size: For smaller deployments, register each reader in the Stripe Dashboard. For larger deployments that require shipping readers to various locations, make sure site managers can add new readers to your company’s Stripe account. Build a workflow into your application to let others register readers to your Stripe account. The endpoint for registering a reader must be called server side. If you support registering readers from your client application, the app must communicate with your backend to register the reader.

    • Using Connect: If you use Connect direct charges, use the Stripe-Account header to register the reader to the connected account. With destination charges, register new readers to the platform account.

  • Create a Terminal Location object for each physical operating site at which your business accepts in-person payments. You must register each reader to a location to ensure that it downloads the proper regional configuration.

    For smart readers, support specifying a location while registering the reader. For Bluetooth readers, support specifying a location while connecting to the reader.

  • Make sure your application can display an updating list of discovered readers, with the label and/or serial number of each. Refer to our example applications for a sample UI.

    If you expect your mobile app to be used with multiple Bluetooth readers, use the Bluetooth Proximity discovery method. Include in your app instructions to hold the reader close to the app device, and wait for it to begin flashing multiple colors. Make sure your app’s UI allows canceling the reader discovery process.

    If you use the Verifone P400 or BBPOS WisePOS E, check that the reader and the device running your application are both on the correct LAN. Include in your application instructions for verifying the correct LAN.

  • Stripe periodically releases updates which can include new functionality, bug fixes, and security updates. Update your SDK as soon as a new version is available. The currently available SDKs are:

    • Stripe Terminal Android SDK
    • Stripe Terminal iOS SDK
    • Stripe Terminal JavaScript SDK
    • Stripe Terminal React Native SDK

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