23 min read

Shared Inventory with Your Online Store

How counter sales, online orders and returns use one set of products and stock, and what the cashier sees when stock is short.

The counter does not keep a separate catalogue. It sells the same products you manage under Products, so a counter sale and an online order draw from the same stock number. This page covers what the cashier sees, and what you do when the two meet.

One catalogue, one stock number

What the cashier sees

On the counterMeaning
Tile shows Out of stock (standard tile grid) or 0 left (Big buttons mode and the paged catalog view)A stock-tracked item with no stock counted. The tile is marked unavailable and cannot be sold unless the product is set to keep selling when out of stock
Tile shows a number and left (for example 4 left)A stock-tracked item with 1 to 9 units available. The badge shows only the remaining count, with no "Low" word before it, and stays on one line. The 10-unit cut-off is fixed on the counter; it is not an alert level you set. At 10 or more, or for an item that does not track stock, no badge shows
Not in stock or a number followed by in stock on a size or typeStock for that variant
Stock quantity unavailableThe stock count could not be read
Only a number in stock on the billThe bill asks for more than is left
Stock not counted (appointment bills)The product has no stock count

Stock at the counter's own location

In a store that has taken a location live (see Take one location live), each counter is bound to one active location, and every stock figure on that counter is that location's available quantity: the level minus its safety stock. It is not the store-wide total.

  • Tiles and search results: the figure and the Out of stock / 0 left label come from the bound location. A product with variants adds up its distinct variants at that location.
  • Size and type chips: each variant shows Not in stock or its count at that location.
  • Barcode scans: a scanned item is checked against the same location.
  • Offline copy: a store with per-location stock cannot prepare an offline copy yet, so these figures are online only. See Why does offline preparation say it is not available for per-location stock?
  • Live updates: when stock moves, the counter reloads its catalogue from the server instead of adjusting numbers itself, so the figure never drifts back to the store-wide residual.

Stores that have not taken a location live behave as before and show the store-wide count.

Owner screens read the catalogue without a counter. Batch opening, location go-live, purchasing, stock and the reorder trace load the product list as the owner or an admin, not through a bound counter device, so they open from a normal admin browser. An owner or admin sees the catalogue for the location they selected on that screen; a location that is archived, unknown or from another store is refused, and staff roles without owner access cannot open these screens. If one of these screens shows an empty or refused product list, pick an active location first.

Why does the counter show Out of stock or 0 left when Inventory shows stock? The stock is at a different location, or this item has no count at the bound location. Open the item in Inventory, check the quantity for the counter's location, then receive or transfer stock to it. A counter whose binding needs review or whose location is inactive refuses the catalogue rather than showing wrong numbers; ask the owner to fix the binding under Activate one location.

When online orders are waiting for stock

If the item a cashier is selling is also needed by online orders, the counter asks Online orders are waiting for stock. Sell anyway? and shows how many are left and how many are reserved. If the cashier sells anyway, the sale is rung up and the counter then tells them the order needs stock: Arrange stock or ask the owner to refund. The notice names the customer by first name; when the order has no usable first name it reads Online customer instead.

Check the stock

Open the product in Products and look at Stock history. It lists each sale, return and count.

Decide

Arrange more stock for the waiting online order, or refund it from Orders, Refunds & Carts.

Returns and stock

On the return screen a damaged item reads damaged · no stock restored, so it is not added back to stock. See Returns & Exchanges.

Recipe items

Under recipes, selling a made-to-order item uses up its ingredients from stock, not the finished item. Only items with a stock count can be ingredients. Voided cooked items count as waste. The recipe screen has no sidebar entry; open it from Recipes and ingredients on POS Settings.

Owner stock tasks live at fixed addresses

Receiving stock, transfers, lot setup, lot history, reorder advice and location go-live are owner screens with no counter shortcut. Each section below gives its address. Purchasing screens need only an active POS add-on (see Suppliers & Purchase Orders). Lot tracking and location go-live also need an owner account and the checks described below.

Stock at the shop on the product page

When your store sells at the counter with the retail shop mode, the online product page can show a Stock at the shop block. It sits below the product's purchase controls (price, options and add to cart) and above the sticky bottom buy bar.

  • The block has a Details button (it becomes Hide) that reveals when stock was last checked and a Check again button.
  • The message reads, for example, Checked recently. Availability will be checked again at checkout., Recent shop activity may not be reflected yet. Check again before ordering. or Stock cannot be confirmed right now. Please check again. The status does not reserve stock; the shop re-checks stock at order time.
  • The block shows nothing at all when the POS add-on is not active for the store, when the shop mode is not retail, while the check is loading or has failed, or when the product page is plan-locked. Stores without POS see no change.

If customers do not see it, confirm the POS add-on is active (see Enable the POS Add-on), the shop is in retail mode, and the page is not locked by plan.

Troubleshooting

What you seeWhat to do
Counter shows Out of stock (or 0 left) but you have stockCheck the item has a stock count in Products and the right variant is chosen
Stock differs between counter and adminReload both. Check Stock history for the sale, return and count rows
Stock changed while you were editingSee Inventory & Stock and use Refresh stock
Working without internet. Stock counts are last known.The counter is offline; counts may be out of date until it reconnects

Take one location live (multi-location stores)

Screen: as the owner open /settings/pos/cutover, titled Activate one location. There is no sidebar entry; use the address. You activate one location at a time: other locations keep their current stock settings until you review and activate each in turn. The page reviews only the location you pick, and the shared stock pool shown beside each item is context, not a count for that location.

Choose the location

Open the Location list and pick the shop or warehouse. Only active locations are listed; an archived location cannot be activated here. The review loads for that location only. While a go-live request is in flight the list is locked.

Count each item

Every item has its own box showing the shared pool, for example Shared pool: 40 kg; buffer 2; available 38. Enter your physical count in Reviewed quantity and check Safety stock (it is pre-filled from the current buffer). Quantities accept up to the item's unit decimals. Safety stock cannot be more than the quantity you counted. Changing any number clears your acknowledgement.

Read any blockers

If the location is not ready, a warning appears for each blocker, for example Finish pending work at this location., Register bindings need review., A selling unit needs review., This location is inactive., Stock schema is not ready. or These counts would change stock available at another location. Review the allocation. Resolve the cause, then select Review again.

Acknowledge and activate

Tick I reviewed these counts and safety stock for this location. It stays disabled until every count is valid and there are no blockers. Then select Activate this location. On success the page shows [Location] is active at stock version N.

If the answer is lost. When the result is uncertain the page says The result is uncertain. Keep this review open; check or retry the same request. Choose Check original request to ask what happened to your request, or Retry the same request to send it again unchanged. Do not start a new review for the same location. If the stock changed underneath you the page says The source changed. Review the fresh counts before activating. and reloads the counts; an Activation was refused. Review the stock and readiness checks. warning means the server declined and nothing was activated.

Why is Activate this location disabled? A count box is empty or invalid, Safety stock is above the quantity, a blocker is showing, the review is not in a pending state (for example the location is already active), or a request is in flight. A location that is already active shows its active at stock version line instead of the form.

Why can't I open the page? It is open to the store owner and admin roles only (store staff are sent to the access-denied screen). The Location list shows only active locations.

Record opening lots and turn on lot tracking

Screen: /settings/pos/lots/opening, titled Set up lot tracking. Use an owner account with lot tracking enabled in settings; otherwise the page says Lot tracking is off in settings. Enable it before opening lots. or Only an authorized owner can record opening lots. Saving an opening never adds stock by itself and is separate from permission to sell.

Choose what the lots are for

Pick the Product, then Variant if the product has variants. In a store with locations, also pick Location from Choose an active location; until you do the page says Choose a location before reviewing its opening lots. Single-location stores also see Store time zone (for example Asia/Kolkata) unless the server already knows it; with locations the zone comes from the location.

Enter the physical count

Fill Physically counted total with what you actually counted (not the system figure) and Quantity with unknown lot, which stays held out of sale. The known lot quantities plus the unknown quantity must equal the counted total, or the page says Count must equal all lot quantities plus the unknown quantity.

Add each lot

For every lot select Add a lot (up to 100) and fill Lot code, Quantity, Received at (date, time and offset), Supplier name (unverified), Receipt reference (optional, unverified) and Expiry date. Lot code is required: Review counts stays disabled while it is empty; quantity must be above zero. A lot with no expiry date counts as unknown expiry and is not offered for sale. Remove lot deletes a row.

Review the counts

Select Review counts. Review opening counts shows Physically counted, System stock, Known safe, Unavailable and Unknown lot, held. If the review is not eligible you see Resolve these checks before saving. with plain-language reasons. Edit entries returns to the form.

Save, then activate as the owner

Select Save lots. The page says Lots saved. Lot tracking is still off. Then the owner selects Turn on lot tracking; this records that you reviewed the saved opening lots. On success it says Lots saved and lot tracking is on. A lost answer shows Retry the same save or Retry activation; use those instead of entering the lots again.

If opening lots are already saved for the chosen location the page says Opening lots are already saved for this location. Turn on tracking below; do not save the opening again.

Why are lots saved but tracking still off? Activation is held while safety checks are open. The page names them: Open orders or stock commitments need review., Counter sessions or queued bills are still active. Sync pending bills, then close the counter sessions or revoke their devices. Review again after the counter work has drained., A recipe stock rule needs review before activation., Return handling must be ready before tracking can turn on., Online fulfillment checks must be ready before tracking can turn on. or Tracking cannot turn on until counter and online catalog safety checks are ready. If some counter work has no confirmed stock location the page instead says Some active counter work has no confirmed stock location. Sync pending bills and close the affected sessions or revoke their devices, then review again. Your saved opening stays; resolve the check (or ask support) and select Retry activation. For a location the page may say This location needs an active inventory opening before lot tracking. Complete its stock review in Live inventory, then select it again. (take that location live first, above), or This server did not confirm the selected location and stock version. Reload or ask support to update lot tracking.

Drain the counters before turning tracking on. When the page shows either counter message above, tracking waits until no counter still holds unsent or in-progress work for that location:

  1. On every counter for the location, let the saved bills send. Reconnect it and wait until no Waiting bills: N chip remains (see Read the Waiting bills chip).
  2. Close each open counter session with Close counter (see Reports & Day Close), or remove a retired device's access so it shows Access removed on Counter devices.
  3. Return to Set up lot tracking and select Retry activation (or Review counts again).

If the same message returns, a counter you did not check is still active; look for a counter that was left signed in, or a bill that stayed saved on a device that never reconnected. Do not clear the browser storage on that device: it may still hold unsent bills.

Lot history: hold, dispose or remove expired stock

To find lots that are about to expire, use Stock Nearing Expiry; its Open lot link lands on this page.

Screen: after saving opening lots at /settings/pos/lots/opening, select View history for lot followed by the lot code. It opens /settings/pos/lots/ followed by the saved lot ID, titled Lot history. You can also use that address when you have the lot ID. It reads, for example, Lot L1 · Item · Place, then a status: Saleable, Expired. Not for sale., Held out of sale, Disposed or Waiting for approval. In the new layout the breadcrumb for the list of lots reads Batches, and for opening lots Opening Stock, both under Counter Sales. The history lists Received, Opening count, Transferred, Sold, Returned, Used in recipe, Returned to supplier, Return undone, Counted, Wasted, Stock movement and Expired. Not for sale. entries, plus a Held out of sale or Disposed entry each time an owner held or wrote off stock from this lot (only the first 100 are shown; the page says so).

Each row has three parts. On the left is the event name, with any bill number or reason beneath it and then the date and time (in your browser's format), plus the staff name for a hold or disposal. On the right is the quantity with a sign and the lot's unit, for example -2 followed by the unit. A + means the lot gained stock (Received, Opening count, a transfer in, Returned by a customer, Return undone) and a - means it lost stock (Sold, a transfer out, Used in recipe, Returned to supplier, Wasted, expired, disposed). Opening count is how the lot's starting quantity is shown: counting an opening lot moves no stock, but the row appears so the history starts with the quantity you counted. Return undone appears when a purchase return is undone, with a + for the goods that came back (see Send Goods Back to a Supplier). Counted and Wasted rows take their + or - from the actual change a stock count or a write-off made to this lot, so a count that found more stock reads + and one that found less reads -. Stock movement and Held out of sale rows, and a Returned row that comes from a bill's stock disposition, show the quantity with no sign, because a movement the page does not recognise has no known direction and a hold takes nothing out of the lot. If the server cannot say which way a count went, Counted also shows the quantity with no sign. Sold stock is never deleted from history. Money and tax stay on the original bill.

Only actions the server allows right now appear; otherwise the page says No action is allowed on this lot right now. The three actions are:

ActionWhat happensReason box
Hold out of saleThe lot leaves saleable stock; you can still dispose of it laterRequired
Dispose of this lotThe remaining stock is written off and this cannot be undoneRequired
Remove expired stockExpired stock leaves saleable stock; original bills and tax are unchangedNone
  1. As the owner, open the saved lot and review its status, item, place and history.
  2. Select Hold out of sale, Dispose of this lot or Remove expired stock, when offered.
  3. For a hold or disposal, fill Reason. The confirmation stays disabled while it is blank. Read the warning, then select the same action label again to confirm; Back leaves it unchanged.
  4. Check Recorded. The history above keeps the original lot and place. and the refreshed history.

Hold and dispose entries stay in the history. After you confirm Hold out of sale or Dispose of this lot, the history keeps a row for it: the bold label Held out of sale or Disposed, the reason you typed in small text under it, and the quantity with its unit on the right (for a metre lot, for example, the metres held or written off). The row stays after a reload, so the reason for the hold or disposal is still on the lot later; the existing Received, Transferred, Sold, Returned, Stock movement and Expired. Not for sale. rows are unchanged.

Who recorded it, and when. Each Held out of sale and Disposed row also carries one more small line under the reason: the name of the staff member who recorded the action, a dot, then the date and time it was recorded. The time is shown in your browser's own date and time format and time zone. The name is looked up from the staff account of your own store when the page opens. When the name cannot be resolved, the line reads Staff member instead of a name. That happens when the account no longer exists or has no name saved, or when the record was made by an account that does not belong to your store. The page never shows the stored account identifier. If the record has no time, only the name (or Staff member) is shown. Only Held out of sale and Disposed rows have this line; the Received, Transferred, Sold, Returned, Stock movement and Expired. Not for sale. rows do not show a staff member or time on this page. Use it to answer who held or wrote off a lot and when, for example before a stock audit.

Metre and other measured lots. Hold out of sale and Dispose of this lot also work on lots of items sold by length, area, weight or volume, for example a metre lot; they are not limited to piece items.

When the stock is no longer there. If part of the lot has already been sold or moved so that the stock to hold or write off is not available, the server refuses the action and records nothing. The page now says so directly: Not recorded — not enough stock in this lot. The confirmation closes, the lot is unchanged, and no Check status panel appears, because the outcome is known. Reload the lot, read the current history and status, and act again only if Hold out of sale or Dispose of this lot is still offered. The message appears in the language the admin POS is using.

The result is not known. If the connection drops or the server gives an answer the page does not recognise, the page still shows The result is not known. Check the status; do not do the same thing twice. with Check status (see the troubleshooting note below). That is a different case from the stock refusal above.

A lot with an unrecognised unit. If the item's unit is not one of the standard units, the history still opens and shows every entry as recorded, with each quantity followed by the stored unit code. A warning reads Unit “(code)” is not supported. Lot history is shown as recorded; stock actions are unavailable. and the page says No action is allowed on this lot right now. Hold out of sale, Dispose of this lot and Remove expired stock are not offered. Have the item's unit corrected by whoever manages the catalogue, then reopen the history.

Why is an action missing? The lot must allow that action in its current state. Reconnect and reload if the lot changed elsewhere; an already-held or exhausted lot cannot be held again. Use an owner account; a cashier PIN does not grant owner stock-write access.

The result is not known. Check the status; do not do the same thing twice. means use the status check, not a second action. Nothing was recorded for this action yet. Check again in a moment. means the earlier attempt has not landed. This message no longer appears when the lot simply has too little stock left: that case reads Not recorded — not enough stock in this lot. and needs no status check.

Why does my hold or disposal not show in the history? Reload the lot. A row labelled Held out of sale or Disposed appears once the action was recorded; if you saw Not recorded — not enough stock in this lot. or never reached the confirmation, nothing was written. Only the first 100 history entries are shown.

Why does a hold or disposal row show no account or time? Those two details come from the saved action itself. A row recorded without them shows the label, reason and quantity only; nothing on the page lets you add them afterwards. Reload the lot first, in case the page loaded before the record finished. The time looks different from another device. It is converted to the time zone of the browser you are using, so two browsers in different zones show different clock times for the same action.

Receive stock and move it between shops

Receive or count stock (/settings/pos/stock/receive): on the bound counter browser, use an owner admin sign-in and check Shop → Current counter stock. This entry adds to this register's assigned stock location; it does not let you choose an arbitrary shop. Reconnect and keep POS access active, then scan or type in Item and select Find item, enter Received quantity in the item's unit, then Review. The preview reads Receive +qty · shop. Select Add to stock; a saved receipt cannot be edited, and mistakes are fixed with a new entry. Receive more stock starts another. If the item has no unit the page says to set its unit first.

Send stock to another shop (/settings/pos/stock/transfers): pick From, To (two different shops), the Item and Quantity to send (it shows how much can be sent), review, then Send stock. The other shop's stock goes up only when they receive it. Open the transfer to receive it at /settings/pos/stock/transfers/ plus its ID: Receive transfer N lists Sent, Received so far and Remaining; enter Receive now, or tick Rest will not arrive (mark as lost) and give a Reason to close it short. A lot keeps its identity across the transfer.

Quantities on these pages use the item's own unit in plain words, for example pieces, kg, litres, metres or square metres (the full list is in Units on reorder advice, purchase orders, transfers and receiving). An item whose unit is not recognised shows Unit “(code)” is not supported. This row cannot be changed. on its transfer; on Receive transfer N the quantity box and Rest will not arrive (mark as lost) are disabled, and the transfer cannot be received until the unit is corrected.

If a send or receive answer is lost the page says We are not sure the transfer went through or We could not confirm this receipt: use Check status and never repeat the action.

Transfer between locations during activation

As the owner, open /settings/pos/stock/transfers, titled Send stock to another shop. Reconnect and keep the POS add-on active before starting a transfer.

  1. Choose different From and To shops. An active source location with reviewed stock can send stock while another shop is still awaiting its inventory activation; the whole store does not have to switch at once.
  2. Find the Item, choose its size or type if offered, then enter Quantity to send within the amount shown as can be sent. Review the selected shops and quantity, then Send stock.
  3. Follow Open transfer or open the transfer address above at the receiving shop. Enter Receive now and select Receive. For a short delivery, use Rest will not arrive (mark as lost) and Reason before selecting Receive.
  4. Check the saved result. Stock at an activated destination is recorded against that location's stock version. At a shop still awaiting activation, it remains in the shared pool until that shop's stock is reviewed; receiving a transfer does not activate a location.

Why can't I transfer this item? Check the source has activated stock, the shops are different and active, and Quantity to send does not exceed what can be sent. An unknown stock balance is not zero or permission to transfer. A changed location or stock version needs a fresh review; keep any uncertain transfer and use Check status before starting another. A lot-tracked item keeps its lot identity and cannot become saleable merely by moving to another shop.

For a physical shelf count at a specific shop, use Shop to count on the product's Stock count tab.