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.

Visitors

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)

Scan the QR or open the table URL

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.

Loading the product page

The product list, categories, and POS configuration are loaded. The page is ready to use.

Choose products

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.

Check the cart

Open the Your Ordertab. The list of items, quantities, prices, and total is shown. Change quantities or remove items before sending.

Send Order

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.

Cashier receives a notification

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.

Choose products & check the cart

Same as the standard flow. After products are added, open the Your Order tab to see the total.

When switching to the Order tab — a Sales ID is created automatically

The system calls getpossalesid to get the transaction ID that will be used as the gateway payment reference. This process runs in the background.

Click the Payment Gateway button

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.

Complete the payment

Follow the gateway instructions (transfer, scan QRIS, credit card, etc.). After the gateway confirms the payment, the system receives a success callback.

Order sent automatically

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.

Screen locked — payment complete

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

Payload when Sending an Order
isorder1 (order mode, not cashier finalization)
isordervisitor1 (visitor sends)
firstorder1 (first) / 0 (additional)
payment[] (empty if there is no gateway)
paymentGateway data with kind=7, accepted=1 if already paid
deleteproduct0 (add only, no delete)
Status Flags after Sending an Order
FlagValue
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, or e are 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 isvisitorpaid is 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

See Also