Table Order
A QR-code-based self-ordering page for guests. Guests open a link or scan a QR on their table, browse products, complete payment (if the POS has a payment gateway enabled), and submit their order directly to the cashier system — without calling a waiter.
When to Use
🍽️Restaurant / Café
- Tables are equipped with QR codes containing a URL with the POS ID and table number.
- Guests order from their smartphone without needing to flag down a server.
- Orders go directly to the cashier POS and can be printed to the kitchen immediately.
💳Self-Pay
- POS has a payment gateway enabled in the payment type configuration.
- Guests complete full payment from the table — no trip to the cashier needed.
- Cashier only needs to close the table after the order is served.
🎛️Outlets with Diverse Menus
- Products are shown based on categories configured in the POS point.
- Prices, discounts, and taxes are calculated automatically per product rules.
- Products with variants or add-ons show a selection dialog before being added to the cart.
🔄Adding to an Existing Order
- Guests can return to the Table Order page to add more items to the same table.
- Previously sent items are locked (read-only); only new items are transmitted.
- The cashier receives a new notification and prints only the additions to the kitchen.
How to Access
Scan QR at the table
The page is opened via a special URL generated when the table QR is created. The URL requires three mandatory parameters:
| Parameter | Example | Description |
|---|---|---|
p |
p=12 |
ID of the POS point that will receive the order. |
t |
t=5 |
Table ID (from the postable table). |
e |
e=1720000000 |
Unix timestamp expiry. If the link has expired, the page displays an "Invalid URL" message. |
Standard Order Flow (Without Online Payment)
The system validates the URL parameters (p, t, e), checks POS status, and loads table data. If the URL is invalid or the POS is inactive, an error message is shown.
Products, categories, and POS configuration are loaded. The page is ready to use.
Browse products by category tab or search box. Tap a product to add it to the cart. Products with variants or add-ons show a dialog before being added.
Open the Your Order tab. See item list, quantities, prices, and total. Adjust quantities or remove items before sending.
Tap Send Order. The system submits data to savepos with flags isorder=1, isordervisitor=1. On success, items are locked and the guest sees a confirmation.
The POS detects the new order (polled every 10 seconds), plays a notification sound, and highlights the table as urgent. The cashier opens the table and prints the kitchen order.
Pay Online from the Table New
If the POS point has a payment type with kind = 7 (Online Payment Gateway), the Table Order page will show a payment button. The guest must complete payment before the order is submitted.
Same as the standard flow. After adding products, open the Your Order tab to see the total.
The system calls getpossalesid to obtain a transaction ID used as the gateway payment reference. This happens in the background.
The payment button (named per payment type configuration) appears in the Your Order tab, replacing the Send Order button. Tap it to start the gateway payment process.
Follow the gateway instructions (transfer, scan QRIS, credit card, etc.). After payment is confirmed by the gateway, the system receives a success callback.
After payment succeeds, the order is automatically submitted to the server with the confirmed gateway payment data (accepted=1). The cashier does not need to enter payment details.
The page shows a green checkmark and a "Payment Successful" message. The guest cannot add more items from this session.
Page Features
- Store Name — shown in the top-left corner.
- Search Box — search products by name in real time.
- Cart Button — shortcut to the Your Order tab with item count badge.
- Language Selector — switch the page display language.
- Bottom Tab Bar — navigate between Products and Your Order.
- Categories — filter buttons for product groups. All categories can be selected together or individually.
- Product Grid — shows product image, name, and price. Number of columns adjusts to screen width.
- Tap a Product — adds one unit to the cart. A variant/add-on dialog appears if the product has options.
- Discount Badge — shown on products with an active discount rule.
- Out of Stock — products with zero stock (when stock control is active) are shown as disabled.
- Item List — each item shows product name, unit, unit price, quantity, and subtotal. Items already sent to the cashier are marked with a lock icon (read-only) and cannot be changed.
- Order Total — shown in the bottom toolbar below the item list.
- Online Payment Button — appears if the POS has a gateway payment type (kind=7). Replaces the Send Order button.
- Send Order Button — appears if there is no gateway payment type. Guest confirms and the order is sent to the cashier.
- Success Screen — after a successful online payment, the page shows a green checkmark and a confirmation message. All actions are disabled.
Interaction with Cashier POS
After the guest submits an order, a chain of events happens automatically on the cashier side.
| Guest Action | What Happens on the Server | What the Cashier Sees |
|---|---|---|
| Submit order (without payment) | isordervisitor = 1, firstorder = 1 (first) or 0 (additional) on postable |
Notification sound, table turns urgent |
| Pay via gateway + submit order | isordervisitor = 1, isvisitorpaid = 1, payment saved in salespayments, POS balance updated |
Notification sound, table urgent, payment panel pre-filled, Save button = Close Table |
| Cashier clicks Print Order | Item diff sent to kitchen printer, isordervisitor = 0, snapshot updated |
Print confirmation, urgent highlight removed from table |
| Cashier clicks Close Table | Table cleared (salesid = '', all flags reset to 0) |
Table returns to empty status in the grid |
| Cashier clicks Save (normal payment) | Payment processed, table cleared, POS balance updated | Transaction complete, table empty |
Technical Reference
isorder | 1 (order mode, not cashier finalization) |
isordervisitor | 1 (guest is submitting) |
firstorder | 1 (first) / 0 (additional) |
payment | [] (empty if no gateway) |
payment | Gateway data with kind=7, accepted=1 if paid |
deleteproduct | 0 (append only, do not delete) |
| Flag | Value |
|---|---|
isordervisitor |
1 (new order waiting) |
firstorder |
1 (first) / 0 (additional) |
isvisitorpaid |
1 (gateway paid) / 0 |
salesid |
Populated with the active transaction ID |
Comparison: With vs Without Payment Gateway
| Aspect | Without Gateway | With Gateway New |
|---|---|---|
| Button in Your Order tab | Send Order | Gateway Button |
| Payment flow | Cashier receives and processes payment at the counter | Guest pays directly from the table |
| Cashier payment panel on table open | Amount = 0, cashier must enter | Amount pre-filled, read-only |
| Cashier action button | Save | Close Table |
| Print Order to kitchen | ✅ Available | ✅ Available (unaffected) |
| Table status after order submit | Still occupied (waiting for cashier to take payment) | Still occupied (waiting for cashier to close) |
| Guest screen after completion | Confirmation "Order Received" | Confirmation "Payment Successful" + locked |
Things to Check
-
Invalid or expired URL. If the
p,t, oreparameters are wrong, the page shows an error and the order cannot be submitted. - POS inactive. If there is no active shift on that POS point, the page cannot load products.
- Guests cannot modify items already sent to the cashier (marked with a lock icon). Contact the cashier for changes.
- If the gateway payment fails or is cancelled, the order is not submitted. The guest can retry the payment.
- Prices, discounts, taxes, and service staff are calculated automatically from product and POS configuration — guests cannot change them.
- After paying via gateway, the screen is locked. To add more items, the cashier must close the table first.
- Cashier can still print orders to the kitchen even after the guest has paid. The payment feature does not affect the kitchen print flow.
-
For security, gateway payment confirmation is validated server-side before the
isvisitorpaidflag is set.
Required Configuration
| Configuration | Location | Description |
|---|---|---|
usetable = 1 |
POS Point | Enables the table feature in POS. |
orderfromvisitor = 1 |
POS Point | Enables visitor order polling on the cashier screen. |
| Table List | POS Point → Tables | List of tables that can accept visitor orders. |
| Payment Type (kind=7) | Master Data → Payment Type | Add a gateway payment type to enable online payment from the table. |
| Order Printers | POS Point → Print Orders | Kitchen printer configuration with the product groups routed to each printer. |
Menu Location
-
Sales & POS / Point of Sale / Table Order
/tableorder?p=[posid]&t=[tableid]&e=[expired]