Tab

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 served from Tab's own /api/qr endpoint. Self-hosted via the qrcode package, no third-party dependency. The QR payload is always a plain URL, no proprietary format, so any QR scanner on earth can read it, not just ours.