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

Collect on-screen inputs

Use Terminal to collect inputs from your customers.

Copy page

Readers: Stripe Reader S700 and BBPOS WisePOS E

With Terminal smart readers, you can display input forms and collect information from your customers. You can choose from six input types and they can be used in a variety of use cases.

  • Collect your customer identifier for loyalty redemption with the phone or email input and process it on your backend.
  • Have your customer acknowledge a waiver or agreement with the signature input.
  • Ask your customer to fill out a questionnaire with the selection or text input.

You can display input forms anytime before payment, post payment and outside of a payment cycle.

Supported input types

Supported input types.

Note

Don’t use collect_inputs to collect sensitive data (including protected health information and customer payment card information), or any information restricted by law.

Collect Inputs

SDK Reference

  • collectInputs (iOS)
  • iOS SDK 4.4.0 and up

You can collect customer information even when the smart reader is operating offline.

To collect inputs using Terminal’s smart readers, call collectInputs with the Terminal SDK, the SDK communicates with the reader to display a prebuilt UI. You can specify up to 5 inputs at a time, and the reader collects them in sequence. After the customer inputs their data, the SDK returns the collected data with a callback.

CollectInputsViewController.swift
Swift
let signatureInput = try SignatureInputBuilder(title: "Please sign") .setStripeDescription("Please sign if you agree to the terms and conditions") .setSkipButtonText("skip form") .setSubmitButtonText("Submit signature") .build() let firstSelectionButton = try SelectionButtonBuilder(style: .primary, text: "Yes", id: "yes_id") .build() let secondSelectionButton = try SelectionButtonBuilder(style: .secondary, text: "No", id: "no_id") .build() let firstToggle = try ToggleBuilder(defaultValue: .enabled) .setTitle("Sign up for promotional emails") .build() let selectionInput = try SelectionInputBuilder(title: "Choose an option") .setStripeDescription("Were you happy with our customer service?") .setRequired(true) .setSelectionButtons([firstSelectionButton, secondSelectionButton]) .setToggles([firstToggle]) .build() let collectInputsParams = try CollectInputsParametersBuilder( inputs: [signatureInput, selectionInput] ).build() let cancelable = Terminal.shared.collectInputs(collectInputsParams) { (collectInputsResult, error) in if let error = error { // Placeholder for handling error } else if let result = collectInputsResult { // Placeholder for handling collected inputs } }

Customization

You can customize the appearance and behavior of all input types:

  • Set important inputs as required to ensure they’re collected. For required inputs, the Skip button is hidden.
  • Provide context to your customer by specifying the text you want to display on the reader screen for each input using title and description.
Field name
Maximum characters
title
40
description
500 when used with the selection form, 100 when used with any other form type
submit_button
30
skip_button
14
  • Use line breaks \n in your text for better formatting.
  • Add up to 4 toggles that customers can enable or disable for Boolean options, agreements, or opt-ins.
Toggles in email and selection form

Email and selection form with toggle

Field name
Maximum characters
title
50, 25 when used with toggle description
description
50, 25 when used with toggle title
  • For selection type inputs, you can emphasize or de-emphasize choices using the style parameter.
Selection choice styles

Primary and secondary selection choice styles.

Customer interaction

When the reader begins collecting inputs, it displays the first input from the list.

After the customer has completed all the inputs, the reader changes to a transitional state for 3 seconds, waiting for a subsequent request. If there is no subsequent request after 3 seconds, the reader changes back to the splash screen.

Note

You are fully responsible for being aware of, and complying with all applicable laws and regulations governing your use of this feature, and must in relation to such use, obtain, as applicable, all necessary consents, authorizations, licenses, rights, and permissions. If you use input collected by, or output displayed from a Terminal smart reader to enter into contracts with, or provide notices to your customers, you are fully responsible for ensuring the legal validity and enforceability of such contracts or notices.

Receive input data

When all inputs have been collected or skipped, the Terminal SDK returns the collected data.

  • For signature type inputs, the returned data is a string in SVG format.
  • For selection type inputs, the returned data are the selected button’s text and id fields.
  • For phone, email, text, and numeric inputs, the returned data is the string of the customer’s response.
  • If an optional input is skipped by the customer, the skipped Boolean is set to true.
  • For each toggle, enabled, disabled or skipped is returned corresponding to the index of the input toggles list.

The Terminal SDK returns an error in the event of a canceled action, timed out collection, or other error.

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