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.