← All articles

Three Things to Watch When Implementing Stripe Terminal

Lessons from Japan's Stripe Terminal launch: internet-connected vs Bluetooth readers, mandatory firmware updates, and Location/country constraints that docs alone do not spell out.

Published
Three Things to Watch When Implementing Stripe Terminal cover image

On September 4, Stripe announced Stripe Terminal availability in Japan. Japanese developers can now build in-person payment systems.

In practice, however, several important caveats are hard to grasp from the official docs alone. This article expands on what I shared at Japan's first Stripe Terminal event—the three things you should know before you start.

Reference event: https://nishinomiya.connpass.com/event/368493/

1. Internet connectivity is a big deal

Japanese Stripe Terminal hardware splits into two broad categories depending on internet connectivity. That choice heavily affects implementation and operating cost, so pick carefully. Compare supported devices first.

Device Price (excl. tax) Internet connectivity Connection method
Stripe Reader S700 ¥52,480 ✅ Supported Direct Wi-Fi
BBPOS Wise Pad 3 ¥10,480 ❌ Not supported Via Bluetooth

The price gap is about fivefold, but choosing the cheaper option makes implementation much harder because non-internet devices have these constraints:

How implementation differs

Internet-connected devices (S700)

You can connect directly from the browser; JavaScript skills are enough.

// Stripe Terminal JS SDK example
import { loadStripeTerminal } from '@stripe/terminal-js';

const terminal = await loadStripeTerminal();
const reader = await terminal.discoverReaders({
  simulated: false,
  locationId: 'tml_xxx'
});

✅ Controllable directly from a web app
✅ Server-driven implementation is possible
✅ Relatively simple development and operations

Non-internet devices (BBPOS)

Native app development is mandatory. You also need iOS or Android devices for day-to-day operation, so upfront cost goes beyond the reader itself.

❌ No browser-based connection
❌ Requires iPhone/Android app development
❌ Much higher development and operating cost

2. Readers need regular updates

Stripe Terminal readers require periodic updates for security and features. The update process differs sharply by device type.

Required updates start installing when you connect to the reader. You cannot use the reader until the update completes.

https://docs.stripe.com/terminal/payments/connect-reader?terminal-sdk-platform=android&reader-type=bluetooth#optional-updateshttps://docs.stripe.com/terminal/payments/connect-reader?terminal-sdk-platform=android&reader-type=bluetooth#optional-updates

More precisely, updates split into "required" and "optional." Required updates start as soon as the reader connects to the internet and block use until finished (for non-internet devices, connection through an iPhone or Android app triggers the same behavior).

Optional updates are announced through MobileReaderListener when the reader is online. You can defer them, but optional updates have a requiredAt deadline—after that, they behave like required updates and force installation.

Depending on the update, if you have skipped updates for months, expect 15 or even 20 minutes.

2.1. Internet-connected readers are still easier

Internet-connected readers start updating the moment they join the network—e.g., as soon as they connect to store Wi-Fi—so you can finish updates outside business hours.

They run Android under the hood, so without your app you can check for updates and skip optional ones on the device itself. Genuinely easy. Remember this—it really is easy.

2.2. Non-internet readers make timing hard

Non-internet readers reach the internet through an iPhone or Android app. Updates start the moment the app connects to the reader.

When does that happen? At checkout. If a required update starts then, you might leave a customer waiting 15 minutes. That is very bad.

If you use non-internet readers, plan operations like:

  • Periodically connect the reader to your iPhone or Android app to complete updates
  • Separate "connect for updates" from "connect for payment"

If you adopt non-internet hardware, your app needs UI dedicated to updates only. Forget that and updates pile up until a required update hits at payment time and customers wait a long time.

3. Watch Location settings

Stripe Terminal registers physical readers to a store (Location) in the Dashboard.

If your Stripe account country differs from the reader's Location country, payments fail. This error appears when the account is US-registered but the reader's store Location is NZ:

The reader being used to confirm this payment is registered to a Location in a country (NZ) that is not supported for this account. Please register to a Location in US. See https://stripe.com/docs/terminal/fleet/locations for more information.

You can only accept payments in the local currency.
https://docs.stripe.com/terminal/payments/regionalhttps://docs.stripe.com/terminal/payments/regional

Beyond that, docs do not fully spell out how far you can move a reader from its registered Location. A Reddit thread asks whether Terminal readers work only in the account's home country—with no clear official answer:

Do Stripe Terminal readers work only in the account's country of residence, or abroad too?
https://www.reddit.com/r/stripe/comments/1cganrh/do_stripe_terminal_readers_work_only_in_the/?utm_source=chatgpt.com

Domestic use is probably fine; if you take hardware overseas, confirm with Stripe Support first.

Summary

Stripe Terminal brings a new option to Japan's in-person payments market. Integration with Stripe's ecosystem can change the payment experience and improve operations.

Before you implement, weigh these three points:

  1. Device choice: upfront cost vs. total development and operating cost
  2. Update operations: plan when and how readers update
  3. Location setup: confirm region and currency in advance

Understanding these upfront makes Stripe Terminal adoption smoother.

If you are evaluating Stripe Terminal, read the official docs alongside this article and map the requirements to your project.