Point of Sale
Point of Sale (POS) is the main cashier workspace. From here, cashiers manage the full transaction lifecycle: selecting products, managing tables, accepting payments, printing receipts and kitchen orders, and closing the shift. POS also receives real-time notifications for visitor orders.
When to Use
πͺShift Operations
- Cashier opens a new shift by entering beginning balances per payment type.
- Cashier resumes an active shift without opening a new one.
- Supervisor closes the shift, reconciles physical totals, and prints the closing report.
πTransactions
- Scan barcodes, search products, select from grid or category.
- Import from Sales Order or reopen a previous invoice.
- Change qty, price, discount, memo, customer, or salesperson.
- Process multiple payment types including online payment gateways.
πͺTable Management
- Open a table, fill in guest name and guest count.
- Move an order to a different table.
- Print orders to the kitchen by product group and dedicated printer.
- Receive and process visitor orders via table QR codes.
βRewards & Points
- Auto-calculate product rewards from customer rules.
- Use customer point balance as a payment method.
- Invoice discounts, product discounts, and taxes are calculated automatically.
Opening & Managing a POS Shift
Navigate to Sales & POS β Point of Sale β Point of Sale. The list of POS points is shown with their status, opening date, and the user holding the shift.
Click the POS point to use. If no shift is active, a form to enter beginning balances per payment type appears. Fill in the opening balances and click Start.
If the same user already has an active shift, click Resume to return directly to the POS screen without entering balances again.
The system loads POS point configuration: default customer, table list, printers, payment types, paper width, product categories, barcode decoder, reward rules, and table/rental mode.
Add products, manage tables, accept payments, and print receipts or kitchen orders.
Return to the PosStart screen, open Close POS, enter the physical count per payment type, review discrepancies, then click Close POS. Only users with the closepos role can close a shift.
Main POS Screen
The POS screen is split into two main areas: the product area on the left and the transaction panel on the right.
- Barcode scan β scanning a barcode automatically adds the product to the cart. Supports multiple barcode decoder formats configurable per POS point.
- Product search β search by name or code in real time. Display can be a grid with images or a text list depending on POS point layout.
- Product categories β filter products by product groups allowed in this POS point.
- Product cache β when enabled, the product list is stored locally for faster navigation.
- Special products β products with serial numbers, variants, multiple units, or departments open an additional dialog before being added to the cart.
- Cart β each item shows product name, qty, unit, price, discount, and subtotal. Click an item to select it, then use the keypad or dialog to change values.
- Keypad β number buttons to change qty, price, or discount for the selected item. Discount editing can be locked by the
locksalesdiscrole; price editing bylocksalesprice. - Customer & Salesperson β change from the POS default customer; changing customer affects discount and point rules.
- Sales Order Import β pull items from a confirmed Sales Order into the POS cart.
- Open Invoice β reopen a previously saved transaction by invoice number for revision or reprint.
- Print Bill β print a temporary bill (not final) to show the customer.
- Point Balance β current customer point balance.
- Transaction Points β points earned from this transaction, calculated from
salespointrewardrules. - Reward Products β free or bonus products added to the transaction based on customer reward rules.
- Reward calculation runs automatically before the transaction is saved.
All payment types enabled in the POS point configuration appear here.
| Type | Kind | Notes |
|---|---|---|
| Cash | 0 |
Amount minus remain (change) determines the actual payment. |
| Transfer / Card | 1β5 |
Direct amount input; can be combined with other types. |
| Customer Points | 6 |
Uses point balance. Conversion rate (points to currency) is set in the payment type configuration. |
| Online Payment Gateway | 7 |
The Pay Now button opens the gateway process. Payment must be confirmed (accepted) before Save becomes active. |
- Credit Limit β shown above the payment type list; affects whether Save is enabled.
- Quick Amount β fast amount buttons to speed up cash entry.
- QR Code β some payment types show a QR button to display a payment code.
- Save button β active when total payments satisfy the credit limit. After a successful save, cashier can print a receipt, open a new order, or return to PosStart.
Table Management & Kitchen Print Order
The table feature is active when the POS point is configured with usetable = 1. Each table has its own status communicated through the postable database table.
- Click the Select Table button to open the table grid.
- Occupied tables look different from empty ones. Tables with new unprocessed visitor orders are shown in an urgent color (orange/red).
- Click a table to open its order. The system calls the
openposAPI and loads all existing order products. - Enter guest name and guest count in the table properties dialog.
- Use Move Table to transfer the entire order to a different table.
- Click Print Order to send items to the kitchen printer.
- The system compares the last printed order snapshot with the current order. Only new items (the difference) are sent to the kitchen β previously printed items are not repeated.
- Each kitchen printer can be configured to receive items from specific product groups only.
- After a successful print, the snapshot is updated and the
isordervisitorflag is reset to 0.
postable table)| Flag | Value | Meaning |
|---|---|---|
isordervisitor |
0 | No new visitor order is waiting to be processed by the cashier. |
isordervisitor |
1 | Visitor has sent a new order. Table appears urgent in POS. Cashier should open the table and print to kitchen. |
firstorder |
1 | First visitor order at this table. POS clears the old snapshot so all items are treated as new during Print Order. |
isvisitorpaid |
1 | Visitor has fully paid via payment gateway from the Order via QR Code screen. Cashier only needs to click Close Table. |
Visitor Order Flow
This feature is active when the POS point is configured with orderfromvisitor = 1. POS polls the server every 10 seconds.
Visitor Side
- Scan table QR β Order via QR Code page opens.
- Browse and select products.
- If the POS has an active payment gateway: complete payment first.
- Click Send Order β order saved on server, table flags updated.
Cashier Side
- POS detects
isordervisitor = 1via polling β notification sound plays. - Table appears with urgent color in the table grid.
- Cashier clicks the table β POS loads the visitor's order.
- Cashier clicks Print Order β new items are printed to the kitchen.
- If visitor already paid: see the "Already Paid by Guest" banner in the payment panel.
- Cashier clicks Close Table β table is cleared, transaction complete.
Scenario: Guest Already Paid from the Table New
1. Guest Pays
Guest clicks the gateway button on the Order via QR Code screen β payment confirmed β order is submitted automatically with isvisitorpaid = 1.
2. Cashier Prints to Kitchen
Cashier receives notification, opens the table, clicks Print Order as usual. The payment panel is pre-filled and marked "Already Paid by Guest".
3. Cashier Closes Table
The Save button changes to Close Table (orange). Click to clear the table. No payment re-entry needed.
- A β Already Paid by Guest banner appears above the payment type list.
- All payment types are displayed as read-only β the cashier cannot modify amounts.
- The Pay Now button (online payment gateway) is disabled.
- The Save button changes to Close Table with a meeting_room icon and orange color.
- Clicking Close Table only clears the table status β it does not rewrite payment data.
Direct Posting New
Normally a POS invoice only reduces stock and reaches the ledger when the shift is closed. With Direct Posting, inventory and journal entries are written as soon as the invoice is saved, so stock and the ledger follow sales throughout the day instead of waiting for the shift to close. The switch lives in Point of Sale Configuration, is set per POS point, and is off by default. While it stays off, POS behaves exactly as before.
| Event | Direct Posting off (default) | Direct Posting on |
|---|---|---|
| Invoice saved | Only the invoice is stored. Stock and journal have not moved yet. | Inventory and journal for that invoice are written immediately. |
| During the shift | Stock and ledger reports do not yet include this shift's sales. | Stock and ledger reports already include every saved invoice. |
| Closing the shift | Every invoice in the shift is posted at that moment — the more invoices, the longer it takes. | There is no posting queue left, so closing is much faster. |
| Not enough stock when the invoice is saved | Same for both. When the checkinventoryavailable access right is on, an invoice that exceeds stock is rejected when saved (see Insufficient Stock When Saving an Invoice). When it is off, nothing is checked. |
|
| Stock problems | Closing is rejected when stock is not enough for this shift's invoices. | Closing is rejected while any product still has a negative balance. |
| Closing report | Identical. Invoices still belong to the running shift until the shift is closed. | |
- When the Check stock balance during transaction access right is on, an invoice that exceeds stock is rejected when saved, and the screen shows the quantity entered and the quantity available (see the section below). When it is off, the cashier is never blocked and selling continues even when the recorded stock is empty.
- With the access right off, stock may go negative without any warning. With it on, a negative balance that still appears (for example two cashiers selling the last unit at the same moment) is caught at closing time.
- Only finalized cashier invoices are posted. Table orders that have not become an invoice do not reduce stock.
- The POS screen, buttons, and printouts do not change at all.
- Close POS is rejected while any product still has a negative balance. The full list is shown and can be exported to CSV.
- Fix it first with a goods receipt or a stock adjustment, then run Close POS again.
- The
checkinventoryavailableaccess right controls two checks: when an invoice is saved (rejecting sales that exceed stock) and at shift closing. It is on by default for roles. For cashiers who may sell without stock, turn it off on the Role. - Cancelling a shift also reverses its posting: inventory, journal, customer deposits, and giro written by those invoices are removed again.
Insufficient Stock When Saving an Invoice New Feature
When the Check stock balance during transaction access right on the cashier's Role is on, items without enough stock cannot be sold. The check runs when the invoice is saved, in regular POS and in Direct Posting alike. This access right is on by default.
- The cashier saves the invoice or completes payment. The system compares each product's quantity with the stock balance in the invoice's warehouse and department.
- If anything is short, the invoice is not saved and a dialog shows each product's name, the quantity entered, and the quantity available.
- Click OK. The quantity on the short lines is adjusted to the available stock, the line is selected and scrolled into view, and prices and totals are recalculated. A line with no stock at all is removed.
- Payment amounts are cleared because the total changed. Enter them again, then save.
How Stock Is Counted
- The balance is counted up to the end of today, in the invoice's warehouse and department.
- In regular POS an invoice does not reduce stock until the shift is closed, so quantities on other POS invoices that are not posted yet are deducted too. Three invoices that each sell 4 from a stock of 10 will not all pass.
- Packages are checked component by component. Services are not checked. Products with serial numbers or expiry dates are checked per lot. PPOB products are not checked.
- Units other than the base unit (for example a carton) are reduced in whole numbers: a stock of 20 pieces for a carton of 12 becomes 1 carton.
- Table orders that have not become an invoice are not checked.
Want to Keep Selling Without Stock?
Turn off Check stock balance during transaction on that cashier Role. Selling becomes unrestricted, and the stock check at shift closing stops as well. Direct Posting has no effect on this.
Split Bill New
Split Bill is for a table whose guests want to pay separately. The cashier picks the items and quantities one guest pays for, takes payment as its own receipt, and the rest of the order stays on the table for the next guest. It is available on POS points that use tables (usetable = 1) and needs no extra setup.
- Open a table that already has an order, then go to the payments tab. A blue Split Bill button (call_split icon) appears above the payment types.
- Click Split Bill. The dialog lists every item on the table. Set the quantity this guest pays for with the − / + buttons or by typing a number; the estimated amount shows at the bottom left.
- Click Pay Selected Items. The cart now holds only the selected items as a new receipt without a table. A bar above the payments reads Split bill from [table name] with a Cancel button.
- Take payment as usual: choose the payment type, enter the amount, save, and print the receipt.
- Once the receipt is fully paid, click the green Continue to [table name] button. The table reopens with the remaining items. Repeat for the next guest, or pay the rest directly as usual.
- Quantities can be split per item, for example 3 portions with 1 for this guest and 2 staying on the table. Line discounts are split in proportion to the quantity.
- At least one item must be selected and at least one item must stay on the table. If everything is being paid, pay the table directly without Split Bill. A table with only one item cannot be split.
- The receipt-level fixed discount and additional charges stay on the table receipt; the split receipt does not carry them.
- The split receipt records the memo Split bill from [table] ([table receipt number]) so it is easy to trace in reports.
- Not available for rental/reservation tables, tables already paid by the visitor, and receipts that include a Sales Order.
- While a Split Bill is in progress the cashier cannot switch to another table or queue; the system asks to finish or cancel the Split Bill first.
Product Variants in POS New
Products managed as variants (size/color/model from the Product form → Manage Variants) appear as one card per parent, not one card per combination.
- Tapping the card opens the combination picker: one row per value of the first axis, one button per combination with its price and cart quantity. The picker stays open so the cashier can add several sizes at once.
- Scanning a barcode or typing a variant code adds that product directly, without going through the parent card. Search also finds variant names.
- The cart, stock, receipts, and reports stay per product (per combination).
Temporary Offline Mode New
If the cashier’s internet drops briefly, receipts can still be saved. They are kept on the device, the receipt prints as usual, and once the connection is back they are sent to the server automatically, in order, with no action from the cashier.
Requirements
- On the POS Point, Allow offline mode and POS Products Cached are on. Table POS is included, except rental tables.
- The POS page is already open before the internet drops. Do not reload the page while offline.
- After opening the POS, the device must be online once: that is when it prepares spare receipt numbers to use while offline.
When the Internet Drops
- Save the receipt as usual. If the server cannot be reached, the receipt is kept on the device with a spare number, the receipt prints, and a new sale can start.
- A cloud icon with a number appears at the top of the POS screen: the receipts not yet sent. Click it to see the list.
- Once connected, the receipts are sent automatically. The time on each receipt is when the cashier saved it, not when it was sent.
What Cannot Be Done Offline
- Online payments (QRIS, VA, e-wallet) and integrated EDC. Use cash or another manual payment type.
- PPOB products, split bills, and receipts from a sales order.
- Customer discount and point rules calculated by the server: offline receipts use the on-screen prices and give no points. The cashier is warned.
Table POS While Offline
- Kitchen orders still work: the kitchen ticket prints (local printer), the order is kept on the device, and the table shows as occupied on screen. The order is sent to the server once connected.
- A table that already has an order can only be opened if its content is on this device, meaning tables last opened or ordered from this device. Tables whose order was taken by a waiter on another device or by a guest cannot be opened until the connection is back.
- Closing and paying a table works like a normal receipt: the table is free again on screen, and the receipt closes that table on the server when sent, including items added while offline.
- If the table was taken by another receipt on the server while offline (for example by another device), the receipt does not overwrite it: it goes to the failed list with its message. Check the table with the other cashier, then resend.
- Rental (hourly) tables, moving tables, and split bills still need the internet.
After Sending
- An offline receipt that turns out to exceed stock is still accepted (the goods were already handed over) and flagged. The message appears on screen; check it at end of shift.
- A receipt rejected by the server (for example, the session is already closed) is not discarded: it stays on the device with the rejection message, and its content is also kept on the server. Open the list from the cloud icon and press Resend once the cause is fixed.
- Spare numbers that were never used leave gaps in the receipt numbering. This is expected.
Clashing Receipt Numbers New
A POS session cannot be opened if that POS’s Sales Invoice Prefix can produce the same numbers as another POS, or as the sales invoice or sales return number format of any division. The message names the clashing format. Change the prefix in POS Point so it is unique, then open the session again.
Closing POS (End of Shift)
- Return to the PosStart screen from the button in POS or the menu.
- Click Close POS (only visible to users with the
closeposrole). - The system shows a shift summary: total per payment type, number of transactions, and net sales.
- Cashier/supervisor enters the physical count per payment type.
- Review discrepancies. If stock is not enough — or, on a POS point with Direct Posting, any product has a negative balance — the page lists the affected products with a CSV export option.
- Click Close POS to save the closing. A closing report can be printed after the process completes.
Things to Check
-
Do not leave the POS screen while a transaction is unsaved. Temporary data is stored in local storage, but the official save only happens when
savepossucceeds. - POS point configuration changes (default customer, printer, payment type, etc.) take effect immediately without restarting.
- The Save button is inactive if the customer's credit limit is not satisfied by the total payment.
-
Payment gateways (kind=7) require confirmation (
accepted = 1) before the transaction can be saved.
- Print Order uses a diff/snapshot β items that were already printed will not be printed again even if they appear in the cart.
- Closing reads totals from all shift transactions. Negative stock is detected at closing and must be resolved before the report is accepted.
- On a POS point with Direct Posting, stock and journal were already written when each invoice was saved. Closing only reconciles cash and confirms no product is left with a negative balance.
- Printing can go through APS (raw printer) or browser preview. If APS connection fails, prints are queued as pending and resent when the connection is restored.
- For tables with visitor payment, the cashier does not enter payment amounts β just click Close Table.
Menu Location
-
Sales & POS / Point of Sale / Point of Sale
/posstartβ/pointofsale