Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
OverviewSee all products
About the APIs
Start building
Create an account
Quickstarts
Start developing
Build with an LLM
Use Stripe without code
Migrate to Stripe
Common use cases
OverviewAccept simple payments as a startupSell subscriptions as a Saas startupBuild a subscriptions solution with usage-based pricingAccept payments in personSend invoices to collect payments
United States
English (United States)
HomeGet started

Accept payments in-person for a direct retail business

Learn how to accept card payments for your in-person business.

This guide describes how to set up your Stripe integration to accept payments with an in-person Point of Sale (POS) system.

For general in-person payments, we recommend Stripe Reader S700 using a server-driven integration. The steps in this guide use this reader and integration combination.

Create a Stripe account

Before integrating with Stripe, you must create a Stripe account.

  1. Create an account by entering your email address, full name, country, and creating a password.
  2. Fill out your business profile.
  3. In the Dashboard, click Verify your email. A verification email is sent to your email address.
  4. Verify your email address.

Order your reader

Order a card reader from the Stripe Dashboard. You can also order a physical test card to test your integration.

  1. In the Dashboard, go to Terminal > Overview.
  2. In the Hardware section, click Shop.
  3. Select I want to build a new integration using Stripe APIs and click Continue.
  4. Select Stripe Reader S700 (wi-fi only) and add it to your cart.
  5. Select your cart, then click Check out to complete your order.

Set up your reader

After you receive your card reader, you need to register it to a location. Registering a reader using its serial number lets you use the reader immediately after you unbox it. This method also allows you to re-register the reader without the need to physically have the reader to generate a pairing code.

Register your reader

After you find the serial number, register the reader in the Dashboard.

  1. In the Dashboard, go to the Hardware orders page and select your reader to find the reader’s serial number.
  2. On the Readers page, click Register reader.
  3. Enter the serial number and click Next. To register multiple devices at one time, you can enter multiple serial numbers, separated by commas.
  4. Optionally, choose a name for the reader.
  5. If you already created a location, select the reader’s new location. Otherwise, create a location by clicking + Add new.
  6. Click Register to finish registering your reader.

After you register your reader, it’s ready to use with the server-driven integration. We recommend storing the reader ID (tmr_xxx) within your application so you know which reader to send transactions from your point of sale. You can retrieve reader IDs using the list readers endpoint.

Create the payment flow

Collecting payments with Stripe Terminal requires you to create a payment flow in your application. Use the Stripe Terminal SDK to create and update a PaymentIntent, an object representing a single payment session.

  1. Create a PaymentIntent. You can define whether to automatically or manually capture your payments.
  2. Process the payment. Authorization on the customer’s card takes place when the reader processes the payment.
  3. (Optional) Capture the PaymentIntent.

Test your integration

Physical test cards

Test payments with your Stripe Terminal reader using a physical test card. You can purchase readers and physical test cards from the Terminal tab in the Stripe Dashboard. We also support physical test cards from providers, such as B2.

This physical test card supports both chip entry and contactless payments. It only works with Stripe’s pre-certified readers, and only against the Stripe API in a sandbox. If you attempt to use your physical test card in live mode, the Stripe API returns an error. Unless stated otherwise, use the PIN 1234 when prompted.

When creating payments using a physical test card, use amounts ending in the following decimal values to produce specific responses:

DecimalResult
00Payment is approved.
01Payment is declined with a call_issuer code.
02When using readers featuring a cardholder-facing screen, insert (or tap, if supported) the test card. If the card requires a PIN, the payment declines with offline_pin_required and requests PIN entry if the reader supports chip entry. Enter 1234 to complete the test payment.
03When using readers featuring a cardholder-facing screen, insert (or tap, if supported) the test card. If the card requires a PIN, the payment declines with online_or_offline_pin_required and requests PIN entry. Enter any 4-digit PIN to complete the test payment.
05Payment is declined with an generic_decline code.
55Payment is declined with an incorrect_pin code.
65Payment is declined with an withdrawal_count_limit_exceeded code.
75Payment is declined with an pin_try_exceeded code.

For example, a payment processed using a physical test card for the amount 25.00 USD succeeds; a payment processed for the amount 10.05 USD is declined.

Interac test cards Canada only

To test your Interac integration, you can use the simulated interac test card or an Interac physical test card. You can order it from the Terminal hardware shop in the Dashboard. You can’t use the Stripe-branded physical test card as an Interac card.

The Interac test card works for both interac_present payments and interac_present refunds. You can use the same test amounts you use for testing card_present payments. Unless stated otherwise, use the PIN 1234 when prompted. To test a declined refund, create a partial refund with an amount ending with the following decimal values: 01, 05, 55, 65, or 75.

Note

The Interac test card doesn’t support contactless payments.

eftpos test cards Australia only

To test your eftpos integration, you can use the simulated eftpos test card or an eftpos physical test card. You can order it from the Terminal hardware shop in the Dashboard. You can’t use the Stripe-branded physical test card as an eftpos card.

You can use the same test amounts you use for testing card_present payments. Unless stated otherwise, use the PIN 1234 when prompted.

Go live

  1. In the Dashboard, open your Account settings.
  2. Enter your business type, tax details, business details, personal verification information, and customer-facing information (for example, a statement descriptor).
  3. Add bank details to confirm where your money will be paid out.
  4. Set up two-step authentication to secure your account.
  5. You can optionally add automatic tax collection or revenue-based climate donations.
  6. Review the information you entered, and click Agree and submit.
  7. After you activate your profile, Stripe updates you from sandbox mode to live mode.

Learn more about activating your Stripe account.

Next steps

After setting up your integration, we recommend you implement the following features:

  • Create physical or digital receipts for your customers.
  • Collect on-screen information such as your customer’s signature or email. You can use this feature to do things such as create a rewards system or have your customers fill out a questionnaire.
  • Collect tips on the reader or on a receipt.
Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc