POS Terminal

The POS turns any laptop or tablet into a checkout counter. It uses the same products and stock as your website, keeps selling when the internet drops, and handles everything from split payments to shift cash counts.

In the dashboard:POSPlan:Business and above

Turn on the POS

  1. Install the extension

    Go to Website › Extensions, find Joomni POS System and install it. Set a Default Terminal Name (for example “Main Register”) and choose whether to enable offline mode.
  2. Open POS

    A POS item appears in the sidebar. Service businesses see it as Service Terminal.
  3. Pick this device's register

    The first time a device opens the POS it asks Which register is this? The device remembers the answer. If your store has no register yet, a “Main register” is created for you. See Registers and shifts.
  4. Sync the catalog

    The first time, run a Full Catalog Sync from the sync button next to the search box. This copies your products to the device so the terminal is fast and works offline. After that, Sync Changes picks up only what changed, including products you archived or deleted.

Find products

  • Search by name, or filter with the collection tabs above the grid.
  • Scan a barcode. A USB or Bluetooth scanner works like a keyboard, so just scan while the POS is open. Joomni matches the code against the variant's barcode, then its SKU. Typing a barcode or SKU into the search box and pressing Enter adds it straight to the cart.
  • View mode. The icons on the right of the collection bar switch the grid between Small, Medium and Large tiles and a compact List(thumbnail, title, SKU or number of options, stock and price on one row).
  • How many to list. Pick 25, 50 or 100, or type your own number (up to 1,000). “Showing X of Y” tells you when more products match than are listed. Search to narrow it down.

The view mode and the number listed are remembered on each device.

Ring up a sale

  1. Add items

    Tap a product or scan it. If it has options, pick the variant. The POS won't let you sell more than the stock on hand for tracked items.
  2. Adjust the cart

    Under Current Order, change quantities with − / +, or remove a line with its red bin button. Clear empties the whole cart. The cart is saved on the device, so a refresh or a dropped connection doesn't lose it.
  3. Attach a customer (optional)

    Search by name, email or phone to link the sale to a customer record.
  4. Discounts (optional)

    Type a promo code and click Apply, or give a manual discount if you're allowed to.
  5. Take payment

  6. Print or email the receipt

    Once the sale is placed, print the receipt. Later, Recent sales lets you reprint any receipt or email it to the customer.

Payments and split payment

Take payment shows the total and the ways to pay:

MethodNotes
CashEnter the cash received and the POS works out the change. Leave it blank if the customer paid the exact amount.
Fonepay QR, eSewa, KhaltiWallet payments. Add the transaction ID if you like; it helps you match the payment later.
CardCard machine payments, with an optional transaction ID.
Bank transferWith an optional transaction ID.

Click Split payment when a customer pays with more than one method, for example part cash and part eSewa. Add a line per method with Add another method. Leave the last line blank and it takes whatever is left. Only cash can be more than what's owed (the extra is given back as change); card and wallet amounts must be exact. A split sale shows as Split payment in Orders and is counted under each method in the reports.

Hold a sale

Customer forgot their wallet, or someone is waiting behind them? Click Hold in the cart header to park the sale and serve the next person. Held (n) lists parked sales. Resume one to carry on; if the current cart has items, it is put on hold in its place. Held sales are kept on the device.

Price changes and manual discounts

Both need permission and a reason, and both are flagged for a manager in the day summary, the Z report and analytics.

ActionHow it works
Change priceClick the “each” price under a cart line, enter the new unit price and pick a reason. Back to catalogue price undoes it. Needs Change prices at the register.
Manual discountClick Add discount under the subtotal and enter an amount or a percentage of the whole sale, with a reason. Needs Give manual discounts, and staff are capped at their maximum discount % (the owner has no cap).

Prices are checked when the sale is placed

The server checks every line against your current catalogue price. If a price changed since the device last synced, the POS takes the new price, tells you, and keeps the payment screen open so you can confirm the new total. Sales made offline keep the price shown at the time, and the difference is recorded.

Registers and shifts

A register is one till. Each register numbers its own bills and has its own shifts. The button in the POS header shows this device's register and whether a shift is open; its menu holds everything below.

Menu itemWhat it does
Open shiftCount the cash in the drawer before the first sale. This opening float is the starting point for the end-of-shift count.
Cash in / outRecord money added to or taken from the drawer that isn’t a sale: change top-ups, paying a supplier, a bank drop. Each needs a reason.
Close shiftCount the cash in the drawer. The POS shows expected cash, what you counted and the difference (over or short); add a note to explain it. You then get the Z report to print.
Recent salesThe sales in this shift (or the store’s latest). Reprint a receipt or email it to the customer.
Move stock hereBring units to this register’s location from another location. Total stock doesn’t change.
Change registerSwitch this device to a different register (shown when you have more than one).
Register analytics / Register settingsShortcuts to the pages below, for people allowed to see them.

Expected cash = opening float + cash sales (net of change) + cash in − cash out. Refunds made outside the POS are not taken off it.

The Z report is the end-of-shift report: sales and average sale, takings by payment method, discounts, VAT collected, the cash lines (opening float, cash sales after change, cash put in and taken out), expected versus counted cash, and how many price changes or manual discounts the shift had. It is kept with the shift, so you can reopen it later from Register settings. For the sale-by-sale list of price changes and discounts, use Today's Sales or Register analytics.

Register settings

Open Register settings from the register menu (/dashboard/pos/settings):

SectionSettings
RegistersRename a till, see its code and bill count, switch it on or off (Active), and choose which location it Sells from. A till at a branch sells that branch’s stock; set up branches under Inventory › Stock locations.
VAT and receiptsCharge VAT at the register (off by default), the VAT rate, whether shelf prices include or exclude VAT, your registered business name, PAN/VAT number, invoice address, bill number prefix and receipt footer. With VAT on, receipts become tax invoices.
Require an open shift to sellA register must count its opening float before the first sale. Offline sales are never blocked.
ShiftsEvery shift with its cash count. Open one for its Z report.
Sales by registerPaid sales per till and the location it sells from.

Check VAT with your accountant

Confirm the rate, whether your prices include VAT, and what your invoices must show before turning VAT on. Bill numbers never repeat, but a number can be skipped (for example if a sale fails after its number was taken).

Branch stock

When a register sells from a branch, the POS shows that branch's stock and takes sold units from it. If the branch runs short, the rest comes from your main stock and the sale is flagged as a branch stock shortfall. Cancelled, refunded and returned items go back to the branch they were sold from. See Inventory.

Offline mode

If the connection drops, keep selling. Sales are saved on the device and queued, with a provisional receipt. When you're back online they sync automatically. The red Pending / Failed button in the header opens the queue, where you can retry or delete a queued sale. Shifts, cash in/out and recent sales need a connection.

Keep the device's queue safe

Queued offline sales live on that device until they sync. Signing out keeps them, but clearing the browser data or switching devices while sales are pending loses them.

Barcode labels

Barcode Labels (from the POS header) opens /dashboard/pos/barcodes. Pick products or scan codes to add them to the Print queue, set copies per variant (or one label per unit in stock), check the preview and print.

SettingOptions
Label sizeThermal rolls (50 × 25 mm, 40 × 30 mm, 58 × 40 mm, 38 × 25 mm for jewellery) or sheets (Avery L7159, L7651 and US Letter 5160).
Skip labels on the first sheetReuse a part-used sheet: start after this many labels.
Barcode typeAutomatic (EAN/UPC when the code is a valid one, otherwise Code 128) or always Code 128.
Show on labelProduct name, variant, price, compare-at price, the code under the barcode, and your shop name.

Each label encodes the variant's barcode, or its SKU if it has none, so printed labels scan straight into the POS. Give products a barcode or SKU in the product form first. Label settings are saved on the device.

Today's Sales: the day summary

Click Today's Sales to see paid in-store sales since midnight:

FigureMeaning
Revenue, Sales, Avg. saleHow the day went.
Cash in drawerCash taken today, net of change.
Discounts given / RefundsWhat reduced takings.
By payment methodCash, card, each wallet and bank transfer. Split sales count under each method.
By staffSales per cashier.
Needs a manager’s eyePrice changes, manual discounts and offline price changes, sale by sale.
Top productsWhat sold best today.

For a per-till cash count, close the shift and use its Z report.

Register analytics

Register analytics (/dashboard/pos/analytics) covers any date range up to a year, compared with the previous period or the same period last year, and filtered by register or staff member. Paid sales only; refunded sales count under refunds.

  • Revenue, sales, average sale, items per sale, discount rate, refunds, share of sales with a customer attached, and tax collected.
  • Sales over time, and a busy-hours heatmap by day and hour.
  • Top products, staff, registers, how customers paid, and new versus returning customers.
  • Worth a look: price overrides, manual discounts, offline sales, offline price changes and branch stock shortfalls.

Offline sales are counted on the day they synced.

Staff permissions

Set these per person under Staff › Permissions › Point of Sale:

PermissionAllows
Use the registerOpen the POS and sell. On by default.
Change prices at the registerOverride a line’s unit price.
Give manual discountsDiscount the whole sale, up to the maximum discount % you set for them (10% by default).
View Analytics & ReportsSee Register analytics and Sales by register.

How POS fits with the rest of Joomni

  • POS sales appear in Orders with the channel In-store (POS).
  • Stock is shared. Selling the last one at the counter takes it off the website too. See Inventory.
  • Give cashiers their own staff accounts so summaries, Z reports and analytics show sales per person.
  • Connected AI assistants can read the day summary and ring up sales. See Claude & ChatGPT.
Need help?