FEATURES

Scan to Pay

Point a phone at any Tab payment QR and the checkout opens. Used in person at a POS, on-screen for events, or to share a @handle quickly without typing.

What it reads

  • A full Tab pay link like https://thetab.bar/pay/ord_… → opens the hosted checkout for that order.
  • A handle link like https://thetab.bar/pay/handle/alice → opens the open-amount checkout for that handle.
  • A bare @alice → also opens the handle checkout.
  • Anything else is shown but not auto-navigated, so a wrong QR can't hijack you.

How it's built

The scanner at /dashboard/scan uses the browser- native BarcodeDetector API where available (Chrome / Edge on desktop and Android, Safari on iOS 17+). On unsupported browsers we fall back to a paste-the-URL textarea so the workflow still works.

We never upload the video stream anywhere — it's read by getUserMedia, decoded in the browser, and the only thing that leaves the device is the resulting navigation.

QR generation

Tab's POS, order pages, and handle pages all embed a QR rendered via api.qrserver.com. The QR payload is always a plain URL — no proprietary format — so any QR scanner on earth can read it, not just ours.