Tap To Pay (Stripe Terminal)
Tap to Pay with Stripe Terminal allows you to accept contactless cards and mobile wallets directly on a compatible smartphone or dedicated reader without extra hardware
The Stripe Tap to Pay add-on connects your WebToNative app to Stripe Terminal — Google's and Apple's native contactless payment APIs. When a customer is ready to pay, your website calls a single JavaScript function and the SDK handles everything: discovering the reader, showing the native payment UI, collecting the card, and returning the result to your website.
Your website, backend, and Stripe account remain fully under your control — WebToNative sits in the middle as the native bridge between your web payment flow and the device's payment hardware.
This is available for both Android and iOS, and you will need to contact the sales team to access this add-on.
Where to Find It In Your Dashboard
My Apps ➡️ Edit your app ➡️ Add-ons ➡️ +ADD ➡️Monetization & Payments ➡️ Tap to Pay (Stripe Terminal) ➡️ Contact Support
Supported payment methods
Supported methods vary by country and device. Typically includes:
- Contactless Visa
- Mastercard
- American Express
- Discover
- Apple Pay
- Google Pay
- NFC-enabled wallets
What you need before you start
For everyone (both platforms): an active Stripe account with Stripe Terminal enabled, a WebToNative application, a backend server, and an HTTPS-capable website that can call WebToNative JavaScript APIs.
| iOS — Tap to Pay on iPhone | Android — Tap to Pay |
|---|---|
| Apple Developer Account | Google Play Developer Account |
| Stripe account with Terminal enabled | Stripe account with Terminal enabled |
| Apple Tap to Pay entitlement approval | Supported Android device with NFC |
| Supported iPhone model and iOS version | Stripe Terminal configuration |
| NFC enabled | Stripe-supported country |
| Physical device for final testing — simulators not supported | Physical device for testing |
Apple must approve your application before Tap to Pay works on real devices. Purchasing this add-on does not guarantee Apple's approval. Only the Apple Developer Account Holder can submit the entitlement request. See the Apple Tap to Pay entitlement guide for details. https://developer.apple.com/tap-to-pay/ (opens in a new tab)
What WebToNative handles — and what you handle
| What WebToNative handles | You are responsible for |
|---|---|
| Stripe Terminal initialisation | Stripe account setup & Dashboard config |
| Reader discovery and connection | Connection Token API (backend) |
| Native Tap to Pay UI | Create PaymentIntent API (backend) |
| Contactless card collection | Capture PaymentIntent (if manual capture) |
| Payment Intent confirmation | Order management & inventory updates |
| Secure Stripe communication | Refunds via Stripe API |
| Payment result callback to the website | Stripe Webhooks & customer records |
Backend APIs you must implement
/connection_token
Securely generates a Stripe Connection Token. The SDK automatically calls this endpoint when initializing — your server requests the token from Stripe and returns it. Never expose your Stripe Secret Key in the app or website — this must run on a backend.
/create_payment_intent
Your backend creates a Stripe PaymentIntent for the transaction amount and returns the client_secret. Your website then passes this client_secret to the SDK when calling makeTapToPay().
/capture_payment_intent
Required only when using capture_method (=) manual in your PaymentIntent. Explicitly captures the funds after the card is authorised.
Payment flow — end-to-end
Customer taps Pay ↓ Website creates PaymentIntent ↓ Backend → Stripe returns client_secret ↓ Website calls WTN.Stripe.makeTapToPay() ↓ SDK shows native Tap to Pay UI ↓ Customer taps card/wallet ↓ SDK confirms PaymentIntent with Stripe ↓ Callback returns to your website ↓ Backend updates order & inventory
Never expose Stripe Secret Keys in the app or website. Always use HTTPS. Store sensitive credentials on the backend only. Verify payment status server-side before fulfilling orders.
Official documentations
Tap to Pay on iPhone Overview
Supported PSPs, regions, design guidance, and app review requirements for Tap to Pay on iPhone. https://developer.apple.com/tap-to-pay/ (opens in a new tab)
Request Tap to Pay Entitlement
Official guide to request and configure the Tap to Pay entitlement. Only the Developer Account Holder can submit. https://developer.apple.com/contact/request/tap-to-pay-on-iphone/ (opens in a new tab)
Stripe Terminal — Tap to Pay
Complete integration guide: setup, supported countries, devices, SDK integration, and best practices. https://stripe.com/docs/terminal/payments/collect-payment?terminal-sdk-type=ios#tap-to-pay (opens in a new tab)
Stripe Terminal Overview
Learn about Stripe Terminal, supported hardware, Tap to Pay, and in-person payment solutions.
https://stripe.com/docs/terminal (opens in a new tab)
Frequently Asked Questions
Do I need a backend?
Yes — a backend is required. The SDK cannot create Connection Tokens or PaymentIntents on its own. Your backend must implement at minimum a Connection Token endpoint and a PaymentIntent creation endpoint. Never handle Stripe Secret Keys in your website's frontend code.
Can I use my existing Stripe account?
Yes — the SDK works with your own Stripe account. You retain full control of your Stripe Dashboard, account settings, and payment data. WebToNative does not have access to your Stripe account.
Can I use automatic or manual capture?
Yes. Your backend controls the PaymentIntent configuration. If you use automatic capture (the default), funds are captured immediately when the card is confirmed. If you use manual capture, you must also implement the capture endpoint on your backend and call it separately after the payment is authorized.
Does purchasing this add-on guarantee Apple's approval?
No. Apple's Tap to Pay entitlement is a separate approval process managed entirely by Apple. WebToNative has no involvement in that process. Only the Apple Developer Account Holder can submit the entitlement request. Without Apple's approval, Tap to Pay will not work on real devices in production.
Can I test without a physical device?
For development, set isSimulated: true in the makeTapToPay() call — this uses Stripe's simulated reader and doesn't require NFC or a physical card. However, all final testing must be done on a supported physical device before submitting to the app stores or going live in production.
Is Tap to Pay available in my country?
Stripe Terminal and Tap to Pay availability varies by country. Check stripe.com/docs/terminal for the current list of supported countries and devices before purchasing this add-on. If your country is not supported, the feature cannot be used.

