Why this QR use case works
- Save 4 minutes per table on payment, which converts to 2 to 3 extra seatings per shift in a high-volume dining room.
- Handle the mid-meal 'I'll pay for my friend's burger' split-the-check scenario without flagging down a server.
- Encode the table number into the URL so the back-of-house POS knows which check is being settled.
- Drive higher tips through preset 18, 20, 22 percent buttons instead of a blank tip field that anchors low.
- Show the itemized bill on the destination page so guests trust the QR is not a phishing sticker stuck to the table.
Step-by-step rollout
Step 1
Encode table number into the URL pattern
The QR for table 12 should resolve to a URL the POS recognizes as table 12's open check. Toast, Square for Restaurants, and Lightspeed each support this through different URL parameters.
Step 2
Design the bill-display landing page
The first screen should show itemized line items, subtotal, tax, and tip presets. Guests need to see what they are paying before they tap pay; trust collapses if the destination is a generic checkout.
Step 3
Configure tip-default psychology
Preset 18, 20, 22 percent buttons outperform a blank field by a meaningful margin. Add a custom-tip option for outliers but make the presets visually dominant.
Step 4
Build the split-the-check flow
Two-, three-, and four-way splits are the high-frequency cases. Item-level splits ('I'll pay for the burger and the beer') are the harder UX problem. Test both before launch.
Step 5
Plan the QR-fail server fallback
When the scan fails, the server should walk over with a card reader. The handoff should be 30 seconds, not 5 minutes. Brief the floor team on how to spot a stuck guest.
Common mistakes to avoid
- Sticking a generic 'pay here' QR on the table without table-number encoding, then asking the guest to type their table number into the destination page.
- Linking to a Stripe Checkout that shows 'Restaurant XYZ - $87.40' with no itemization, which makes guests pause because they cannot see what they are paying for.
- Using a blank tip field in markets where 18 to 22 percent presets meaningfully lift average tip; the lost tip volume across a year is larger than most operators expect.
- Forgetting to configure the QR-fail fallback so a stuck guest waits 5 minutes for help instead of getting a server walkover within 30 seconds.
- Treating the tableside QR as identical to the counter-side payment QR; they encode different table contexts and need different POS webhooks.
Frequently asked questions
Should each table have a unique QR code?
Yes. The table number has to be encoded so the POS knows which check is being settled. A shared QR forces the guest to type their table number, which is friction that defeats the speed benefit.
How does this differ from a counter-side payment QR?
Counter-side QRs settle a check at pickup; tableside QRs settle an in-progress dine-in check that may include split logic. The destination pages and POS webhooks differ. The [payment-links playbook](/qr-code-for/payment-links) covers the counter-side variant in depth.
What tip presets should we use?
18, 20, 22 percent works in most US markets. Higher-end venues sometimes preset 20, 22, 25. The pattern that lifts tip volume is preset buttons, not the specific percentages.
Can guests split the check by item?
Yes if the POS and the landing page support it. Toast and Square for Restaurants both expose item-level data through their APIs; Lightspeed has the data but the integration depth depends on the connector.
What happens when the QR fails?
The server walks over with a portable card reader and processes the payment manually. The handoff should be a 30-second exception, not a 5-minute reset. Train the floor on visual cues that signal a stuck guest.
Execution notes
Tableside payment QR codesA 2D matrix barcode that encodes data in a square grid of black and white modulesA single black or white square in the QR grid. The number of modules per side scales with the QR versionThe size of a QR code, numbered 1 (21×21 modules) through 40 (177×177). Higher versions store more data but require more printed space. Read more →, from 21×21 modules for version 1 up to 177×177 for version 40. Read more →. Read more → have to do one specific job. They move the guest from “the meal is over” to “the bill is paid” without forcing the server to walk over with a card reader, wait while the guest reads the screen, and walk back. The job sounds simple. The mechanics are not.
Table-number encoding is the foundation
A QR sticker that says “scan to pay” without encoding the table number is the most common deployment failure. The destination page asks “which table are you at” and the guest mistypes 14 instead of 41, settling the wrong check. The kitchen voids the wrong order. The server has to chase down both checks. Every QR has to encode the table identifier into the URL so the POS resolves it without guest input. Toast supports this through a URL parameter that the platform translates into a check ID; Square for Restaurants exposes a similar pattern through its dine-in API; Lightspeed handles it through its connector layer with per-installation variation.
The print logistics that follow are non-trivial. A 60-table dining room needs 60 distinct QR codes, each printed on table-tent or under-glass material that survives bussing and cleaning. The naive approach prints all 60 at once and replaces the whole batch when the URL pattern changes; the pragmatic approach uses dynamic QR codesA QR code that points to a short redirect URL controlled by a service. Read more → where the printed sticker stays constant and the back-end maps each code to a table identifier the POS understands. The dynamic pattern means a code can be reassigned without reprinting if a table is renumbered, which happens more often than restaurants expect during renovation. The URL-to-PNG generator produces raster output sized for table-tent printing.
The bill-display screen earns the tap
A guest scanning a QR on the edge of a table is one click away from a checkout page they have never seen before. Trust collapses if the first screen is a generic Stripe Checkout that says “Restaurant XYZ - $87.40 - Pay.” The guest does not know what they are paying for, cannot verify the kitchen got the order right, and pauses to flag down a server, which is exactly the friction the QR was supposed to remove. The fix is simple. Show the itemized bill on the landing page before the pay button. Each line item, the subtotal, the tax, the suggested tip presets, the total. The guest sees what they are paying for, confirms the kitchen got the order right, and taps pay with confidence.
The design detail that matters is matching the visual hierarchy of the printed bill the server would have brought. Guests are accustomed to a check presentation pattern: items listed top to bottom, total at the bottom, tip line below. The digital version should replicate that pattern, not invent a new one. A landing page that presents the same items in a different order or hides line items behind a “view details” tap loses the trust the printed format earns. For execution depth on the printed-bill conventions, the restaurant menu playbook covers the lamination and lighting decisions that affect under-glass QR placement.
Tip-default psychology is real money
Preset tip buttons outperform blank tip fields by a meaningful margin in tableside payment data. The presets work because they remove the cognitive load of calculating 20 percent of an $87.40 check while sitting at a table with a half-finished glass of wine. A guest who taps the 20 percent button is not optimizing; they are picking the second of three options that someone else put in front of them, which is the ergonomic default in any UI choice with three buttons.
The percentages matter less than the presence of presets. 18, 20, 22 percent works in most US casual dining markets; 20, 22, 25 percent works in higher-end venues; 15, 18, 20 percent works in markets where tipping norms are lower. Test the presets that match your venue’s existing tip distribution; if your servers are already getting 22 percent on cash tips, your presets should bracket that number, not anchor below it. Add a custom-tip option for outliers, but make the presets visually dominant. The split-the-check variation needs preset logic per share: a four-way split should preset the tip on each share, not on the total bill, so each guest contributes their proportional tip without recalculating.
Split-the-check is the hard UX problem
Two-, three-, and four-way even splits are the high-frequency case. The hard case is item-level splitting: “I’ll pay for the burger and the beer; my friend will pay for the salad and the wine.” Item-level splits require the POS to expose line-item data to the landing page, the landing page to support item-selection UI, and the payment flow to settle multiple partial checks against the same table identifier. Toast and Square for Restaurants both support this through their dine-in APIs; Lightspeed supports it with more configuration depth.
The UX pattern that works is item-toggle: each line item has a checkbox or tap-to-select state, and the guest selects the items they are paying for. The partial total updates live; the tip preset recalculates against the partial subtotal; the pay button settles only the selected items. The remaining items stay open on the table check until the next guest scans and selects their items. The edge case is shared items (a bottle of wine across two payers) which needs a custom split UI that few platforms get right; for a launch deployment, support even-split and item-level select, and route shared-item splits to the server fallback. The payment links playbook covers the partial-check settlement patterns in more depth.
Table-flip math justifies the investment
The economic case for tableside payment QR codes is the table-flip math. A typical sit-down restaurant spends 3 to 6 minutes on the payment workflow per table: server walks over, drops the check, walks back, returns with the card reader, processes payment, prints the receipt, walks back. In a 90-minute dining experience, those minutes compound across the floor. Saving 4 minutes per table on payment turns into 2 to 3 extra seatings per shift in a high-volume restaurant, which at a $40 average ticket is $80 to $120 in incremental revenue per shift per table.
A 20-table dining room running two shifts seven days a week is roughly $22,000 to $34,000 in annual incremental revenue per table from the table-flip alone. The investment in QR deployment, POS integration, and server training pays back in the first month at most operations that run a full dining room on weekends. The static-vs-dynamic guide covers why dynamic QR codes are the right choice for tableside deployment: the printed sticker has to stay constant across menu changes, while the back-end URL needs to update with menu prices and seasonal items.
The QR-fail fallback is a 30-second handoff
QR scans fail. A phone with a smudged camera lens, an older device with weak QR detection, an under-glass placement that catches a hot spot from the pendant light. The fallback has to be a 30-second handoff, not a 5-minute reset. The server sees a guest pull out their phone, look at the QR, frown, and put the phone back down. That is the visual cue. The server walks over with a portable card reader, processes the payment manually, and the table flips on schedule.
Train the floor on the visual cue. The server who waits to be flagged down loses the time savings the QR was supposed to deliver; the server who watches for the frown-and-pocket gesture catches stuck guests within 30 seconds. The customer reviews playbook covers the post-payment review prompt that some operators chain onto the receipt-delivery email, which captures social proof while the meal is still warm in the guest’s mind. For the print-side decisions on under-glass QR placement, the QR design best practices guide covers contrast and quiet-zone choices that affect scan reliabilityHow consistently a QR code scans across different devices, lighting conditions, distances, and orientations. Read more → under typical restaurant lighting.
Rollout timeline
Days 1-14
Launch a constrained pilot in one high-intent placement.
Days 15-45
Fix low-performing surfaces and improve destination alignment.
Days 46-90
Scale to additional placements only after scan-to-action quality is stable.