Deployment checklist
Use this checklist to help ensure a smooth deployment of Stripe Terminal.
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:
- First, check for whether an update is available.
- If an update is available, display in the UI the estimated time to complete the update, along with options to continue or cancel.
- 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.
- 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:
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.