Point of Sale

This page is generated from the in-app guide content — edit featureToggleGuides and run pnpm 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.

CodeDefaultSwitch atTurn on first
pos.auto_issue_on_saleOn/pos/settingsDeduct 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.

CodeDefaultSwitch atTurn on first
pos.inventory_sync_on_saleOn/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.

CodeDefaultSwitch atTurn on first
pos.loyalty_points_enabledOn/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.

CodeDefaultSwitch atTurn on first
pos.refund_requires_reasonOff/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.

CodeDefaultSwitch atTurn on first
pos.void_requires_reasonOff/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.

CodeDefaultSwitch atTurn on first
pos.customer_required_on_saleOff/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.