[PLUGIN] Stripe Card Reader POS — Accept in-person card payments

Stripe Card Reader POS — Accept in-person card payments directly from Bubble

Hey Bubble community :waving_hand:

We just released Stripe Card Reader POS — a plugin that connects your Bubble app to a physical Stripe Terminal card reader so you can accept in-person card payments without leaving Bubble.


What it does

If you’re building a POS system, a booking app with in-person checkout, a restaurant ordering flow, or anything that needs to take card payments face-to-face — this plugin handles the full Terminal integration for you.

Your customers tap or insert their card on the reader, the payment goes through Stripe, and your Bubble app reacts instantly via events and exposed states.

Supported readers: Stripe Reader S700, Stripe Reader S710, BBPOS WisePOS E, and Verifone devices.


Features

:backhand_index_pointing_right: Discover and connect to a reader — point the plugin at your Stripe location and it finds and connects to your reader automatically

:backhand_index_pointing_right: Take in-person payments — full collect → process flow with proper async event handling so your workflows fire at the right time

:backhand_index_pointing_right: Show cart details on the reader screen — display line items, quantities, tax and totals on the reader display before the customer taps

:backhand_index_pointing_right: Save a card for future charges — full SetupIntent flow to save a card on file and charge it later from your backend

:backhand_index_pointing_right: Manage locations and readers from Bubble — create locations, register readers, and move readers between locations without touching the Stripe Dashboard

:backhand_index_pointing_right: Events for everything — Reader Connected, Payment Collected, Payment Succeeded, Payment Failed, Card Saved, Error — build reactive UIs without polling

:backhand_index_pointing_right: Exposed states — connection status, payment status, payment intent ID, amount, currency, last error — reference them anywhere in Bubble


How it works

The plugin uses a single invisible element on your page that manages the SDK connection. Everything is controlled through workflow actions.

The basic payment flow looks like this:

Page loads
→ Create Connection Token (server-side action)
→ Set Connection Token
→ Connect to Reader

Customer checks out
→ Create Payment Intent (server-side action)
→ Collect Payment Method ← reader waits for tap here

Customer taps card → Payment Collected event fires
→ Process Payment

Payment Collected event fires
→ Save to database, show confirmation

Two workflows, no hacks, no polling. The plugin tells Bubble exactly when each thing happens.


Security

Your Stripe secret key lives in plugin settings and is only ever used in server-side actions — it never touches the browser. Connection tokens are fetched server-side and passed to the element via a dedicated action.

The plugin supports two setups:

Single account — paste your Stripe secret key once in the plugin settings tab and forget it. Every server-side action picks it up automatically with no extra configuration.

Multi-account / multi-tenant — every server-side action also accepts a Stripe Secret Key field directly. Leave the plugin setting blank and pass each user’s secret key dynamically from your database instead. This means each user or business on your platform can connect their own Stripe account and take payments directly into it — no platform fees, no Connect required unless you want it.


Links

:repeat_button: Plugin link: Stripe Card Reader POS Plugin | Bubble
:open_book: Documentation: Stripe Card Reader POS | No-Code Venture
:video_game: Demo: NCV Starter Template
:wrench: Demo Editor: ncv_card_reader | Bubble Editor


Notes

  • Requires a Stripe account with Terminal enabled
  • Works with Stripe’s simulated reader for testing — no hardware needed to get started
  • Internet-connected smart readers only (not Bluetooth or Tap to Pay)
  • Chrome 142+ users will see a one-time local network permission prompt — this is a browser requirement, not a plugin limitation

Happy to answer any questions below. If you run into issues, the docs have a full troubleshooting section and the demo editor is open so you can see exactly how the workflows are set up.

— No-Code Venture

Plugin just got released: :repeat_button: Stripe Card Reader POS Plugin | Bubble