Skip to content

The Point of Sale (POS) turns a browser on a counter computer or tablet into a cash register. Cashiers unlock it with a personal 6-digit PIN, ring up products and services, take payment, and print or email a receipt. Every completed sale becomes a paid invoice with its payments, and stock is updated at the branch.

Point of Sale is part of the Pro plan. See Plans & Add-ons.

The Point of Sale section of the sidebar has three pages:

Page Purpose Permission
POS Console The register screen, at /pos pos.access
Reports Sales, payments, taxes, discounts, and shifts. See POS Reports. pos.view_sales
Time cards Staff clock-ins and hours. See Time Cards. pos.manage_time_entries

An admin needs to set up three things. See Point of Sale Settings for each step.

  1. A branch with POS turned on, with at least one active register.
  2. Cashiers with POS access, the branch assigned, and a POS PIN.
  3. Products to sell, with prices, tax rates, and stock at the branch.
  1. Open POS Console. The register opens full screen.
  2. Choose your store and Choose your register. Either step is skipped when there is only one choice, and your last choice is remembered on this browser.
  3. In Unlock register, pick the Register operator (when there is more than one) and enter your 6-digit PIN.
  4. If an admin gave you a temporary PIN, choose a new one.
  5. If the branch uses the time clock, you can Clock in before you Start selling. See Time Cards.

Five wrong PINs lock that PIN for 15 minutes. After 15 idle minutes the register locks itself; the current sale stays in place until you unlock again. To switch cashiers, click Lock and unlock as the other operator.

The header shows the store and register, whether a shift is open, the operator, and an Online/Offline indicator. The register needs a connection to sell; it does not queue sales offline. If the connection drops while you complete a sale, the register checks the server and recovers the sale instead of charging twice.

When the branch has Require an open shift on, the register asks you to open a shift before selling.

  • Open shift: count the cash in the drawer and enter it as Opening cash. The currency you choose is locked for the whole shift.
  • Cash movement: record Paid in or Paid out cash during the shift, with a reason.
  • Current shift report: a printable summary of the shift so far.
  • Close shift: count the drawer and enter Counted closing cash. Workstation produces the final closing report.

These actions are in the More actions menu. The shift report shows opening cash, cash sales and refunds, paid in and out, gross sales, discounts, taxes, expected cash, closing cash, the difference, and a breakdown by payment method. With Blind cash close on, expected cash and the difference are hidden from cashiers without pos.view_expected_cash, so they count the drawer without knowing the target.

Search by name, SKU, or barcode, or tap a tile. Barcode scanners type straight into the search box. Products with variants ask you to pick one, unless you scanned the variant’s own barcode.

By default the catalog has All, Products, Services, and Memberships tabs. Admins can design a custom layout of up to three tabs of tiles for the branch.

In the Current sale panel:

  • Change quantities with + and −. The trash button removes a line, with Undo.
  • Items sold by weight (for example kg or lb) ask for the weight when you add them. Each weighing is its own line. A scale barcode printed by a deli or produce scale adds the item with its weight or price already filled in.
  • Open prices: authorized operators can type a different unit price when the branch allows it.
  • Stock warnings show Out of stock or how many are short. What happens when you charge depends on the branch’s Negative stock setting.
  • Pick the customer with the customer button. Leave it as Walk-in customer if the branch allows walk-in sales, or create a new client.

On phones and tablets, the cart opens as a sheet from View cart.

  • Choose a preset discount for one line or for the whole sale (the Cart discount).
  • Choose Custom to enter a percentage or fixed amount, with an optional reason.

Some presets need Manager approval, and so does a custom discount from someone without pos.approve_override. A manager assigned to the branch enters their email and POS PIN to approve that exact cart once. Presets that don’t allow combining can’t be used with other discounts.

Use Hold to park a sale and serve the next customer. Give the ticket a name, such as a table or a pickup spot. If the branch has predefined ticket names, they appear as chips, and names already in use are disabled.

Held tickets in the header lists open tickets at the branch. You can Resume a ticket, merge it into another one, move it to another register at the same store, or delete it. Prices, tax, stock, and approvals are checked again when a ticket is resumed.

Click Charge. The Take payment screen shows the amount due and, when set up for the branch:

  • Sale details: invoice fields the branch asks cashiers to fill in. Required ones must be filled before completing.
  • Tip: the branch’s suggested percentages, or a custom amount.
  • Loyalty rewards: redeem the customer’s points for a reward. See Client Loyalty.
  • Gift card or store credit: enter a gift card code and click Check, or Use store credit. See Gift Cards.
  • Cash rounding, when the whole sale is paid in cash and the branch rounds cash.

Choose the Payment method. For cash, enter the amount tendered (or tap a quick amount) to see the change due. Use Split payment to add several tenders. A sale can stay partly unpaid only when the branch allows Partial payments. Click Complete sale.

  • A paid invoice (or open, if partly paid) numbered with the branch’s receipt prefix, for example MAIN-000123.
  • One payment per tender. Gift card and store credit balances are reduced.
  • Stock movements at the branch.
  • A membership, if one was sold.
  • Loyalty points earned or redeemed.
  • Journal entries, when Accounting is enabled.

On a contact’s record, POS sales are listed separately from other invoices.

After a sale, Sale complete shows the receipt with Print, Email, and New sale. Receipts include the branch details, VAT and CR numbers, items, taxes, tenders, change, and the ZATCA QR code when ZATCA is connected. To email, leave the address blank to use the customer’s saved email.

Receipts print through the browser on 58 mm, 80 mm, or 4-inch paper, set per branch.

Open Sales from the More actions menu to see recent sales. Cashiers see their own sales unless they have pos.view_all_sales. From a sale you can Reprint, Email, Return, or Void sale.

  • Return credits everything still returnable, restocks it where inventory is tracked, and refunds the original payment methods. It needs a reason and an open shift. Workstation creates a credit note linked to the original invoice.
  • Void sale reverses the sale and restores stock. It is only possible during the sale’s original shift, before anything is returned, and not while ZATCA is connected. After the shift closes, use a return.

Gift card and store credit payments go back onto the original card.

POS permissions are checked twice: against the signed-in user and against the operator who unlocked the register with their PIN. The operator also needs POS access and the branch assigned.

Permission Allows
pos.access Open the POS Console
pos.sell Ring up and complete sales
pos.view_sales / pos.view_all_sales See own sales and POS Reports / see everyone’s sales
pos.view_customers / pos.create_customers Find customers / create new clients at the register
pos.hold_ticket / pos.manage_all_held_tickets Hold tickets / manage and reassign any cashier’s tickets
pos.apply_discount / pos.override_price / pos.approve_override Apply discounts / enter open prices / approve manager-only discounts
pos.sell_negative_stock Sell past zero stock when the branch requires authority
pos.return, pos.refund, pos.void Return, refund, and void sales
pos.open_shift, pos.view_shift, pos.close_shift, pos.cash_movement Run shifts and the cash drawer
pos.view_expected_cash See expected cash with blind cash close on
pos.reprint_receipt / pos.send_receipt Reprint / email receipts
pos.time_clock / pos.manage_time_entries Clock in and out / view and correct time cards
pos.manage_settings, pos.manage_devices, pos.manage_layout, pos.reset_member_pin Manage branch POS settings, registers, the register layout, and PINs

By default, Managers have every POS permission except managing settings, registers, and the layout. Users can sell, hold tickets, apply discounts, run shifts and the cash drawer, view their own sales, and reprint or email receipts.