Stripe Terminal lets you save payment methods for online use. Use an in-person card to initiate an online subscription using Billing, save payment details to a customer’s online account, or defer payment.
There are two ways to collect reusable card details with Terminal:
- Save card details while processing in-person transactions (PaymentIntents)
- Collect card details to charge in the future, without transacting now (readReusableCard)
Saving a card while transacting
Save card details for online reuse from a customer’s in-person transaction. When you successfully process a payment, the returned object contains a successful charge id. This charge contains a generated_card ID, which represents the ID of a card PaymentMethod that can be used to charge the saved card.
The initial, in-person payment benefits from the liability shift (and in certain markets, lower pricing given to standard Terminal payments), but subsequent payments happen online and are treated as card-not-present. For example, a gym customer pays for an initial session in person and begins a membership in the same transaction. Or a clothing store collects a customer’s email address and payment method at the checkout counter during a purchase, and the customer can log in later and easily use it again.
Collect card details for future use U.S. Only
Alternatively, collect payment details in person and defer any payment until later. For example, a customer orders flowers in your store, but you only want to charge them when the order ships. In this flow, all payments are treated as card-not-present. Even though you’re presenting a card in person, the transactions happen later and don’t benefit from the lower pricing and liability shift given to standard Terminal payments in certain markets.
In the United States, use the
readReusableCard method to save a card for future use.
The connected reader waits for a card to be presented. When the customer presents a card to the reader,
readReusableCard collects encrypted card data and tokenizes it as a PaymentMethod but does not create any payments.
You can optionally attach the returned PaymentMethod to a Customer for recurring payments.
You can cancel reading a card using the
Cancelable object returned by the iOS or Android SDK, or calling
Charging a saved card U.S. Only
You can use previously saved card details to charge customers later.
For one-time use, create a PaymentIntent and attach the saved PaymentMethod. Once you attach the PaymentMethod you can’t reuse it for another payment unless you collect payment details again by either saving a card from a PaymentIntent or reading a reusable card.
Handling events in your app
When collecting a payment method using a reader like the BBPOS Chipper 2X BT, without a built-in display, your app must be able to display events from the payment method collection process to users. These events help users successfully collect payments (e.g., retrying a card, trying a different card, or using a different read method).
When a transaction begins, the SDK passes a
ReaderInputOptions value to your app’s reader display handler, denoting the acceptable types of input (e.g., Swipe, Insert, Tap). In your app’s checkout UI, prompt the user to present a card using one of these options.
During the transaction, the SDK might request your app to display additional prompts (e.g., Retry Card) to your user by passing a
ReaderDisplayMessage value to your app’s reader display handler. Make sure your checkout UI displays these messages to the user.
Tracking customer behavior with card fingerprints
The Stripe API makes it easy to recognize repeat customers across online and retail channels by correlating transactions by the same card. Like
card payment methods, each
card_present payment method has a fingerprint attribute that uniquely identifies a particular card number. Note that cards from mobile wallets like Apple Pay or Google Pay do not share a fingerprint with cards used online.
Starting with API version 2018-01-23, Connect platforms see a fingerprint on
card PaymentMethods that is uniform across all connected accounts. You can use this fingerprint to look up charges across your platform from a particular card.