Point of Sale
This page is generated from the in-app guide content — edit
featureToggleGuidesand runpnpm gen:feature-toggle-docs.
Auto-issue stock on sale
Deduct stock the moment a sale is confirmed. Turn off (or set a store to “Store keeper confirms”) when a store keeper must confirm each stock issue.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
pos.auto_issue_on_sale | On | /pos/settings | Deduct stock on sale (pos.inventory_sync_on_sale) |
How it works
For stores whose stock mode is “Inherit”: ON issues stock the moment the bill is confirmed, OFF leaves the bill “pending” until a store keeper confirms the issue. A store set to “Auto” or “Store keeper confirms” overrides this switch.
Conditions for it to take effect
Needs “Deduct stock on sale”.
When ON
Inherit stores deduct stock and post cost of goods sold at checkout.
When OFF
Inherit stores create pending bills; stock is deducted when the store keeper confirms. With strict stock ledger on, the goods are held so other registers cannot sell them twice.
Screens, documents and reports affected
POS checkout, store-keeper issue queue, shift close summary (pending count), store settings, POS settings.
Caveats
Changing the switch does not touch bills already sold — pending bills stay pending, issued bills stay issued. Voiding a pending bill releases its hold; refunding it restocks. Closing a shift with pending bills is allowed; the summary shows how many are still pending.
Deduct stock on sale
Track stock for POS sales: stocked items are deducted from the register’s warehouse, at checkout or after the store keeper confirms. Off = POS does not track stock.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
pos.inventory_sync_on_sale | On | /pos/settings | — |
How it works
Decides whether POS tracks stock at all. ON: bills with stocked items are stamped “issued” (stock deducted from the register’s or store’s warehouse now) or “pending” (waiting for the store keeper), according to the store’s stock mode and “Auto-issue stock on sale”. OFF: bills are stamped “not tracked” and no stock moves.
When ON
Selling a stocked item needs it assigned to the register’s warehouse, otherwise the sale is refused. Cost of goods sold is posted from the stock ledger.
When OFF
No stock movement, no cost of goods sold from POS, and store-keeper confirmation does not apply.
Screens, documents and reports affected
POS checkout, void, refund, store-keeper issue queue, register/store warehouses, Setup assistant warning.
Caveats
Void and refund follow the stamp on the original bill, not today’s switch — bills sold while OFF are never restocked, bills sold while ON are still reversed after turning OFF. Pending bills stay in the store-keeper queue and can still be confirmed.
Example
A café that does not manage stock turns this off; a mini-mart keeps it on.
Loyalty points
Earn loyalty points (1 per currency unit) on sales to POS customers; reversed on void/refund.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
pos.loyalty_points_enabled | On | /pos/settings | — |
How it works
A POS customer on a sale earns 1 point per whole currency unit of the bill total. Void deducts points for the voided total, refund deducts points for the refunded subtotal (never below 0).
When ON
Points are added to the POS customer’s balance at checkout and taken back on void/refund.
When OFF
Sales add 0 points; void and refund of those bills deduct none. Existing balances stay as they are.
Screens, documents and reports affected
POS checkout, void, refund, POS customer page (points balance), POS settings.
Caveats
There is no point redemption at checkout — points are only accumulated and shown. Each bill records the points it earned: void takes back exactly those points, and refunds take back points for the refunded amount without exceeding what the bill earned in total — whatever the switch is at the time of the void or refund. Void and refund always reduce the customer’s total spent. Bills sold before this was recorded follow the switch at the time of the void/refund.
Reason required to refund
A reason note is required when refunding a POS transaction.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
pos.refund_requires_reason | Off | /pos/settings | — |
How it works
Refunding a POS bill (full or partial) must include a reason; a refund with an empty reason is rejected.
When ON
Refund without a reason ⇒ refused, nothing is refunded or restocked.
When OFF
The reason is optional. The refund dialog still offers the reason list and a note.
Screens, documents and reports affected
Refund on the POS transaction detail page, POS settings.
Caveats
Only checks that the text is not blank. A blank reason is refused with a “reason required” error. Voids follow their own switch.
Reason required to void
A reason note is required when voiding a POS transaction.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
pos.void_requires_reason | Off | /pos/settings | — |
How it works
Voiding a POS bill must include a reason; a void with an empty reason is rejected.
When ON
Void without a reason ⇒ refused, the bill stays completed. The reason is saved on the bill notes as “VOID: …”.
When OFF
The reason is optional. The void dialog still offers the reason list and a note.
Screens, documents and reports affected
Void on the POS transaction detail page, POS settings.
Caveats
Only checks that the text is not blank — any word passes. A blank reason is refused with a “reason required” error. Bills linked to a retail e-invoice cannot be voided either way (refund instead). Refunds follow their own switch.
Require customer on sale
Block completing a sale unless a customer is attached.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
pos.customer_required_on_sale | Off | /pos/settings | — |
How it works
Every sale sent to the server (terminal, offline sync, sales channels) must carry a POS customer or a CRM customer; otherwise the sale is rejected.
When ON
Charge is blocked until a customer is selected. A sale reaching the server without a customer is refused and nothing is saved — no bill, no stock movement, no payment.
When OFF
Anonymous walk-in sales are allowed. A customer can still be attached to earn loyalty points and track spending.
Screens, documents and reports affected
POS terminal checkout, offline bill sync, sales-channel orders, POS settings.
Caveats
The terminal blocks Charge with a message when no customer is selected, before any money is taken — this also covers sales rung up offline, as long as the terminal loaded its settings while online. Other clients (mobile, API, sales channels) are stopped by the server with a “customer required” error. Void and refund are not affected.
Example
A members-only store turns this on so every receipt is tied to a member card.