Payments
Tap to Pay on iPhone & Android
Last updated 19 May 2026
Tap to Pay on iPhone & Android
Accept contactless card and digital-wallet payments directly on your phone — no card reader, no extra hardware. Built on Stripe Terminal's mobile SDK with country-aware availability, an education flow on first enable, and platform-specific permission handling.
Where to find it — Mobile: Settings → Card payments → Tap to Pay toggle (web has no Tap to Pay surface — by design, since this runs on the phone's NFC chip).
TL;DR
- Built on Stripe Terminal SDK 5.4.x via a custom Expo module — Swift for iOS, Kotlin for Android.
- AU + GB: iPhone XS+ (iOS 17.6+) and Android with NFC. NZ: Android only (Apple restriction).
- One-time Stripe Terminal Terms acceptance on first enable, plus a re-launchable education flow.
- Owner/Manager toggle; Staff see "contact admin" message.
- Cardholder sees your venue's brand name on the system tap sheet — not OpenChair.
Country & device support
| Country | iPhone | Android |
|---|---|---|
| Australia | Yes (XS+, iOS 17.6+) | Yes (NFC + Android 10+) |
| United Kingdom | Yes (XS+, iOS 17.6+) | Yes (NFC + Android 10+) |
| New Zealand | Not available — Apple restriction, coming when Apple releases iOS Tap to Pay in NZ | Yes (NFC + Android 10+) |
The Tap to Pay settings page detects your device and country automatically. Unsupported combinations show a disabled toggle with a "coming soon" message.
Enabling Tap to Pay
- Open Settings → Card payments on mobile.
- Tap the Tap to Pay toggle.
- First time only: the Stripe Terminal Terms dialog appears. Tap View terms to read them in browser (opens
stripe.com/au/legal/terminal), then return and tap Accept & continue. - iPhone: a quick capability provisioning step runs (~90 seconds). Android: first-time setup takes up to 5 minutes — Stripe registers your device with their partner backend. Once.
- Android only: the app asks for Location permission (ACCESS_FINE_LOCATION). Required by Stripe Terminal for compliance. Tap Allow when prompted.
- After provisioning completes, the education screens run automatically (you can re-launch them any time).
The toggle goes green. You can now use Tap to Pay during checkout.
The education flow
5-screen walkthrough explaining how Tap to Pay works, what cards and wallets are accepted (chip & PIN, contactless, Apple Pay, Google Pay, Samsung Pay), how PIN entry works (with VoiceOver/accessibility notes), and a UK-specific fallback note.
On iOS 18 or later, the final screen uses Apple's native ProximityReaderDiscovery "See it in action" overlay (Apple req 4.1) — Apple's own walkthrough alongside ours.
You can re-launch the education any time from Settings → Card payments → Tap to Pay → How to use Tap to Pay button.
Taking a payment
- From the mobile checkout, tap Tap to Pay.
- The phone wakes the Tap to Pay subsystem (faster after first use).
- The system tap sheet appears showing your venue brand and the amount.
- The customer holds their card or wallet phone over the back of your phone.
- Payment completes; the receipt is generated as normal.
The cardholder-facing merchant name is your venue's name (or "OpenChair" if no venue name is set). Not the OpenChair brand — it's your business taking the payment.
Surcharge notice (Apple req 5.11)
If your venue is configured to pass card fees to the customer, Apple requires the surcharge amount to be disclosed on the system tap sheet before the customer taps. OpenChair builds the notice server-side from your feeAbsorption setting and passes it to Apple's tap sheet automatically.
Android note: the Stripe Terminal LocalMobile SDK doesn't currently support setSurchargeNotice at collect time. Native modules retry without the surcharge config so the payment still completes — but the surcharge isn't shown on the system sheet on Android. If you rely on surcharge disclosure for compliance, factor this into your operational practice.
Disabling Tap to Pay
Toggle off in Settings → Card payments → Tap to Pay. Confirm in the dialog. The next enable goes through provisioning again:
- iPhone: ~90 seconds
- Android: up to 5 minutes (first time only after disable + re-enable)
Diagnostic tools
If something's wrong:
- Copy debug log — captures the recent SDK events to your clipboard for support
- Capture system log (Android only) — ~2,000-line system trace, copied to clipboard
- Report a problem — opens the support form pre-filled with diagnostic context
These three buttons sit at the bottom of the Tap to Pay settings page.
Recovery from connection errors
If the Tap to Pay subsystem gets into a bad state (AIDL errors on Android, ProximityReader stale state on iPhone), the app:
- Disconnects the active session
- Clears cached credentials
- Wipes the corrupted Tink keysets (Android encryption store)
- Kills the Tap to Pay process
- Waits 800ms
- Re-prepares
Two consecutive failures surface as "Tap to Pay connection lost" — restart the app and try again, or use a different payment method for the current transaction.
Role gating
| Role | Tap to Pay access |
|---|---|
| Owner | Can enable / disable / use |
| Manager | Can enable / disable / use |
| Stylist | Can use (during checkout). Cannot toggle. Sees "contact admin" message on settings page. |
Tier
All plans, requires Stripe Connect to be active on your venue. Standard transaction fees apply (see Fees and Processing).
Platform-specific notes
iPhone
- iPhone XS or newer, iOS 17.6 or newer
- Requires the Apple Tap to Pay entitlement (we have this from Stripe; no action required from you)
- Provisioning: ~90 seconds first time, instant subsequent
- iOS 18+ uses Apple's native education overlay alongside our screens
Android
- Android 10+ with NFC
- ACCESS_FINE_LOCATION permission required (Stripe compliance)
- First-time provisioning can take ~5 minutes
- Works in NZ (where iPhone Tap to Pay isn't yet supported)
- Surcharge notice on Android isn't supported by Stripe's SDK; payment still completes
On the FREE plan
Tap to Pay works on FREE. The requirement is Stripe Connect activation, not subscription tier. Standard processing fees apply (3.0% + $0.50 on FREE, 1.8% + $0.30 on PRO — see plans and tiers).
Common mistakes
| Problem | What to check |
|---|---|
| Toggle is disabled with "coming soon" | Your device or country isn't supported (NZ iPhone, older iPhone, no NFC). The matrix above shows what's available. |
| Stuck on Stripe Terminal Terms | Tap Accept & continue after viewing terms. If the dialog won't progress, restart the app and re-toggle. |
| Android first-time setup taking forever | First setup is 5 minutes maximum. If it stalls, check you granted Location permission, then capture the system log via the diagnostic button. |
| Payment fails with "connection lost" | Restart the app, re-enable Tap to Pay, retry. If repeated, use a hardware reader or another payment method. |
| Surcharge not showing on Android | Stripe's Android SDK doesn't support runtime surcharge notice. Use signage or staff disclosure as a compliance fallback. |
| Wrong merchant name on tap sheet | Confirm your venue name in Settings → Venue details. The first 22 characters are what Apple/Google display. |
FAQ
What's Tap to Pay?
Accept contactless card and digital-wallet payments directly on your iPhone or Android phone — no card reader, no extra hardware. Built on Stripe Terminal's mobile SDK; works in AU, GB (iPhone + Android) and NZ (Android only).
What devices work with Tap to Pay?
iPhone: iPhone XS or newer running iOS 17.6+. Android: NFC-capable Android 10+. The settings page tells you whether your specific device qualifies. Requires Stripe Connect to be active on your venue.
Why isn't Tap to Pay on iPhone available in New Zealand?
Apple restriction — iOS Tap to Pay isn't released in NZ yet. Android Tap to Pay works fine in NZ. NZ iPhone users see a 'coming soon' message on the settings toggle.
What's the surcharge notice?
If your venue passes card fees to customers, Apple requires the surcharge amount to be shown on the system tap sheet before payment (Apple requirement 5.11). OpenChair builds the notice from your fee-absorption setting; it appears automatically when applicable.
Do I need an extra Stripe device or reader?
No. Tap to Pay uses your phone's built-in NFC. If you want a dedicated hardware reader (for the counter, or as a backup), see Setting Up Stripe & Card Payments.
Does Tap to Pay work with Apple Pay / Google Pay / Samsung Pay?
Yes — wallet payments work the same as physical cards. The customer holds their wallet phone or watch over the back of your phone.