RetailOSRetailOS · POS Manual

RetailOS — Point of Sale (POS) Manual

A hands-on guide to running the till: setting up registers, opening and closing cash sessions, selling, taking payment, reprinting receipts, handling returns, and working offline.

Base URL: https://goretailos.com POS terminal: /admin/pos · Registers & cash: /admin/registers · Orders & returns: /admin/orders · Offline sync: /admin/sync This is the POS-focused companion to the full User Manual and the Usage Guide.

1. Who can use the POS, and what a register is

Tip — install it as an app. The POS runs as a Progressive Web App: on the till device open /admin, then Install (Chrome/Edge address bar) or Add to Home Screen (iPad Safari). It launches full-screen like a native terminal and keeps working through Wi-Fi drops. See the Usage Guide → Installing the POS for the full setup.

Admin dashboard


2. Opening the register (start of shift)

You must open a cash session before you can complete a sale. The session tracks every cash movement from open to close so the drawer can be reconciled.

  1. Open the terminal at /admin/pos.
  2. In the session bar at the top, pick your register.
  3. Enter the opening float — the cash you're starting the drawer with (count it first).
  4. Select Open session.

Rules:

POS terminal


3. Selling — the terminal

The terminal is a full-screen workspace: catalog on the left, cart on the right (a slide-in sheet on phones).

POS terminal

Finding items

Only "Available for sale" items appear here. Products, categories and brands that aren't marked Available for sale (internal-only items such as raw materials or packing supplies) do not show up in the POS product grid, search or category chips. They stay in inventory and purchasing — they just can't be sold at the till.
Overselling into negative stock is limited to permitted roles. By default the till stops you adding more of a stock-tracked item than is on hand. Only roles your shop has permitted (Settings → Inventory → "Who can oversell (negative stock)", default Owner / Admin / Manager) may push a line past available stock; for everyone else the quantity is capped at what's in stock. The server enforces this too, so it can't be worked around. (The shop-wide Allow negative stock toggle governs the online store checkout, not the till.)

The cart

Keyboard shortcuts

KeyAction
F2Focus search
F4Attach / change customer
F6Apply a discount
F8Hold the current sale
F9Open the payment screen
EscCancel / close the current panel
The cart prices tax per line — each item uses its own tax rate, or the shop's default (inclusive or exclusive) — so the Total you collect matches exactly what the server posts. The server still re-validates every sale authoritatively when it's completed.

Customer-facing display (second screen)

Show the customer the bill as it's built. In the POS toolbar select Display — a full-screen customer display window opens; drag it onto a second monitor or customer-facing screen at the counter.

It's a read-only mirror — it never changes the sale. It runs on the same device/browser as the till (open it from the POS on that machine), works offline, and shows nothing to anyone who opens the page on a different device.


4. Taking payment

  1. Press F9 (or Pay) to open the payment sheet. It shows the Total due.
  2. Pick a payment method tile (Cash, Card, Bank, etc.).
  3. For split payments, use Split payment to add more rows — the sheet shows Allocated, Remaining and Change due live.
  4. Press Complete sale. The button shows Processing… while the sale posts, and can't be double-clicked.

Payment rules:

On success you get the receipt screen (and, if offline, a "Saved offline" confirmation).

Credit / udhaar (pay later)

If your shop allows it, a permitted user can complete a sale without full payment and let the customer pay later ("udhaar"). In the payment sheet, tick Credit sale (udhaar / pay later), then press Complete credit sale — you can take part of the money now or none at all, and the unpaid balance is booked to the customer's account.

Whether credit is available at all, and which roles may use it, is set in Settings → Customers & credit.


5. Receipts


6. Cash in / cash out during the shift

Money sometimes moves in or out of the drawer outside of sales — a float top-up, a payout, or a cash expense. Record these so the drawer still reconciles at close.

From Registers & Cash → the open session panel:

TypeUse it for
Cash inAdding cash to the drawer (e.g. a float top-up).
Cash outRemoving cash (e.g. a payout, banking).
ExpenseA cash purchase — also posts to the ledger under the chosen expense category.

Each movement takes an amount and an optional note. Only the session's opener or a manager can record movements.


7. Closing the register (end of shift)

  1. Go to the session (POS session bar Close session, or Registers & Cash).
  2. Count the drawer and enter the Counted cash — this is required; you can't close with a blank amount (type 0 if the drawer is genuinely empty).
  3. Close. The system computes the variance.

Expected cash is calculated as:

opening float
  + cash sales
  − cash refunds
  + cash in
  − cash out
  − cash expenses

The close screen shows the full reconciliation — Opening, Cash sales, Refunds, Cash in, Cash out, Expenses, Expected, Counted, and the Difference. Only the opener or a manager can close. A discrepancy raises an alert for a manager to review (flagged critical if it's more than ~5% of expected).


8. Recent sales, the order ledger & reprints


9. Returns & refunds

Returns are processed from the order, not the till screen.

  1. Open the order in Orders, returns & payments.
  2. Choose Full return & refund.

What happens: the returned items are restocked, a refund is issued (cash refunds re-enter the open drawer), and the sale's revenue/tax/COGS are reversed in the ledger — all in one step.

You can't refund an order that was never paid. For an unpaid order (e.g. a Cash-on-Delivery online order that wasn't collected) the refund option is hidden and the server blocks it — there's no money to give back. Cancel such an order instead.

10. Offline mode & sync

The POS is offline-first: if Wi-Fi drops (or a checkout call fails), it keeps selling.


11. Troubleshooting

ProblemWhat to do
Register not in the listAsk a manager to create it and assign you to it in Registers & Cash.
"Register already has an open session"Someone else opened it — close that session first, or use a different register.
Can't complete a sale — payment doesn't matchThe total tendered must cover the order total. Over-tendering cash is fine (you'll see change); a card/bank amount can't exceed the total.
Close button won't workEnter the Counted cash amount first — it's required (use 0 for an empty drawer).
Nothing loads offlineYou never primed the cache online, or you're in a browser tab instead of the installed app. Reconnect, open the installed app, load the POS once, then retry.
A sale is stuck "syncing" / rejectedA manager resolves it in the Offline Sync console.
Refund option missing on an orderThe order was never paid — there's nothing to refund; cancel it instead.
No "Credit sale" toggle on the Pay screenCredit sales are off for the shop, or your role isn't permitted. An owner/admin enables it in Settings → Customers & credit.
"Credit limit exceeded" when completingThe customer's outstanding balance + this sale is over their limit. Take more upfront, raise the customer's limit, or have a manager tick Override the customer's credit limit.
Can't add more than the stock on handOverselling into negative stock is restricted — ask a manager, or a permitted role (Settings → Inventory → who can oversell) to complete the sale.

This page renders POS_MANUAL.md. See also the full User Manual and the Usage Guide.