Order via QR Code
QR code based self-ordering page. Visitors open a link or scan the QR at the table, choose products, complete payment (if the POS has a payment gateway enabled), then send the order straight to the cashier system â without calling a waiter.
When to Use
đŊī¸Restaurant / Cafe
- Tables have a QR code containing a URL with the POS and table number parameters.
- Visitors order by themselves from a smartphone without calling a waiter.
- Orders go straight into the cashier POS and can be printed to the kitchen immediately.
đŗSelf-Pay
- The POS enables a payment gateway in the payment type configuration.
- Visitors complete full payment from the table â no need to go to the cashier.
- The cashier only needs to close the table once the order has been prepared.
đī¸Outlets with Varied Menus
- Products are shown by the categories configured on the POS point.
- Prices, discounts, and tax are calculated automatically according to the product configuration.
- Products with variants or extra options show a selection dialog.
đAdd to an Order
- Visitors can order additional products again from the same table.
- Earlier orders are locked (readonly) so only new items are sent.
- The cashier receives a new notification and prints only the additional order to the kitchen.
How to Access
Scan the QR at the table
The page is opened through a special URL created by the system when the table QR is generated. The URL contains three required parameters:
| Parameter | Example | Description |
|---|---|---|
p |
p=12 |
ID of the POS point that will receive the order. |
t |
t=5 |
Table ID (from the table postable). |
e |
e=1720000000 |
Unix timestamp of the link's validity limit. Once passed, the page shows an "Invalid URL" message. |
Standard Ordering Flow (Without Online Payment)
The system validates the URL (parameters p, t, e), checks the POS status, and loads the table data. If the URL is wrong or the POS is inactive, the page shows an error message.
The product list, categories, and POS configuration are loaded. The page is ready to use.
Browse products through the category tabs or the search box. Click a product to add it to the cart. Products with variants or extra options show a dialog before going into the cart.
Open the Your Ordertab. The list of items, quantities, prices, and total is shown. Change quantities or remove items before sending.
Click Send Order. The system sends the data to savepos with the flag isorder=1, isordervisitor=1. After success, the order items are locked and the visitor receives a confirmation.
The cashier POS detects the new order (10-second polling), plays a sound notification, and the table appears in the urgent color. The cashier opens the table and prints the order to the kitchen.
Online Payment Flow from the Table New Feature
If the POS point has a payment type with kind = 7 (Online Payment Gateway), the Order via QR Code page shows a payment button. Visitors must complete payment before the order is sent.
Same as the standard flow. After products are added, open the Your Order tab to see the total.
The system calls getpossalesid to get the transaction ID that will be used as the gateway payment reference. This process runs in the background.
The payment button (named according to the payment type configuration) appears in the Your Order tab, replacing the Send Order button. Click the button to open the gateway payment process.
Follow the gateway instructions (transfer, scan QRIS, credit card, etc.). After the gateway confirms the payment, the system receives a success callback.
After a successful payment, the order is sent automatically to the server with the confirmed gateway payment data (accepted=1). The cashier does not need to enter the payment again.
The page shows a green check icon and the message "Payment Successful". The visitor cannot add more orders from this session.
Page Layout & 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 the item count as a badge.
- Language Selector â change the page display language.
- Navigation Tabs (bottom) â switch between Products and Your Order.
- Categories â buttons to filter products by product group. All categories can be selected at once or one by one.
- Product Grid â shows the product image, name, and price. The number of columns adapts to the screen width.
- Click a Product â adds one unit to the cart. A variant dialog appears if the product has extra options.
- Discount Label â shown on products that have an active discount rule.
- Out of Stock â products with 0 stock (if stock control is active) are shown inactive.
- Item List â each item shows the product name, unit, unit price, quantity, and subtotal. Items already sent to the cashier are marked with a lock icon (readonly) and cannot be changed.
- Order Total â shown in the toolbar below the item list.
- Pay Online 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. The visitor confirms, then the order is sent to the cashier.
- Completion Screen â after a successful online payment, the page shows a green check mark and a confirmation message. All actions are disabled.
Interaction with the Cashier POS
After a visitor sends an order, a series of events happens automatically on the cashier side.
| Visitor Action | What Happens on the Server | What the Cashier Sees |
|---|---|---|
| Send order (without paying) | isordervisitor = 1, firstorder = 1 (first) or 0 (additional) in postable |
Sound notification, table turns urgent |
| Pay via gateway + send order | isordervisitor = 1, isvisitorpaid = 1, payment saved in salespayments, POS balance updated |
Sound notification, urgent table, payment panel already filled in automatically, Save button = Close Table |
| Cashier clicks Print Order | Item diff sent to the kitchen printer, isordervisitor = 0, snapshot updated |
Print confirmation, the table's urgent color disappears |
| Cashier clicks Close Table | Table cleared (salesid = '', all flags = 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 Data
isorder | 1 (order mode, not cashier finalization) |
isordervisitor | 1 (visitor sends) |
firstorder | 1 (first) / 0 (additional) |
payment | [] (empty if there is no gateway) |
payment | Gateway data with kind=7, accepted=1 if already paid |
deleteproduct | 0 (add only, no delete) |
| Flag | Value |
|---|---|
isordervisitor |
1 (there is a new order) |
firstorder |
1 (first) / 0 (additional) |
isvisitorpaid |
1 (if paid via gateway) / 0 |
salesid |
Filled with the active transaction ID |
Comparison: With vs Without Payment Gateway
| Aspect | Without Gateway | With Gateway New |
|---|---|---|
| Button in the Order tab | Send Order | Gateway Button |
| Payment flow | The cashier receives and processes the payment | The visitor pays by themselves from the table |
| Cashier panel when opening the table | Payment amount = 0, cashier must enter it | Amount already filled in automatically, readonly |
| Cashier button | Save | Close Table |
| Print Order to the kitchen | â Yes | â Yes (not affected) |
| Table status after sending an order | Still occupied (waiting for the cashier to take payment) | Still occupied (waiting for the cashier to close) |
| Visitor screen when finished | "Order Received" confirmation | "Payment Successful" confirmation + locked |
Things to Note
-
Invalid or expired URL. If the parameters
p,t, oreare wrong, the page shows an error message and the order cannot be sent. - POS inactive. If there is no active shift at that POS point, the page cannot load products.
- Visitors cannot change items already sent to the cashier (marked with a lock icon). For changes, contact the cashier.
- If the gateway payment fails or is cancelled, the order is not sent. The visitor can try the payment again.
- Prices, discounts, tax, and service staff are calculated automatically from the product and POS configuration â visitors cannot change them.
- After paying via the gateway, the screen is locked. To add a new order, the table must be closed by the cashier first.
- The cashier can still print the order to the kitchen even though the visitor has paid. The payment feature does not affect the kitchen printing flow.
-
For security, the gateway payment confirmation is validated on the server side before the flag
isvisitorpaidis set.
Required Configuration
| Configuration | Location | Description |
|---|---|---|
usetable = 1 |
POS Point | Enables the table feature in the POS. |
orderfromvisitor = 1 |
POS Point | Enables polling of visitor orders on the cashier screen. |
| Rental Product List | POS Point â Tables | List of tables that can receive orders from visitors. |
| Payment Type (kind=7) | Master Data â Payment Type | Add a gateway payment type to enable the pay-online-from-table feature. |
| Order Printer (Print Order) | POS Point â Print Orders | Kitchen printer configuration along with the product groups to be printed on that printer. |
Menu Location
-
Sales & POS / Point of Sale / Order via QR Code
/tableorder?p=[posid]&t=[tableid]&e=[expired]