AWRA OpsHub Search

When the Till Moves Stock: POS and Inventory as One Record

A till that sells and a stock system that gets updated later are two systems that will disagree by Friday. What it means for the counter to move stock at the moment of the sale — the warehouse behind the till, the batch that left, and why the system should refuse a sale it cannot supply.

Point of Sale Washingtone Aura 11 min read

The most common inventory architecture in Kenyan retail is two systems and a person in between. The till records sales. The stock system holds quantities. Somebody exports one and updates the other, daily if they are diligent, weekly if they are busy, and the gap between the two is where the entire month's stock accuracy is decided.

It is worth being precise about why this fails, because the usual explanation — human error — is not the interesting part. The interesting part is that the two systems are never wrong at the same moment about the same thing, so every disagreement takes an investigation to resolve, and investigations do not happen. The number gets adjusted to match the count and everyone moves on.

One sale, one movement

The alternative is structural rather than procedural: a sale at the counter is a stock movement, recorded in the same transaction as the payment. Not exported, not synced overnight, not reconciled — the same event, written once.

That single design decision removes an entire category of daily work and an entire category of argument. There is no export to schedule, no failed sync to notice, no window during which the two systems hold different truths, and no question about which one is authoritative when they disagree — because there is only one record.

The reconciliation you no longer do

Ask any retailer running a separate till and stock system how long the daily stock update takes and how often it is skipped when the shop is busy. The honest answers are usually "about forty minutes" and "whenever we are busy" — which means the reconciliation is absent on exactly the days that generate the most movement.

Every counter belongs to a warehouse

For a sale to move stock, the system has to know whose stock it moved. That is what the link between a counter and a warehouse does, and it is the piece most people never think about until they open a second branch.

Each till is bound to a warehouse and a default location within it. A sale at the Ngong Road counter depletes Ngong Road stock, not a company-wide pool. Cashiers can be scoped to their own warehouse, so a branch user sees their own counters and locations rather than the whole estate. The wider branch discipline is covered in multi-branch retail.

  1. Set up the counter with its warehouse before the first sale

    A till pointed at the wrong warehouse produces perfectly recorded sales against somebody else's stock, and the error is invisible until a count.

  2. Scope cashiers to their branch

    Not primarily as a security measure — it removes the possibility of selecting the wrong location during a rush, which is where most misallocation comes from.

  3. Keep a default location per warehouse

    The shop floor, typically. Without one, every sale asks a question the cashier should not have to answer with a customer waiting.

  4. Reconcile transfers, not sales

    With sales moving stock automatically, the remaining source of branch discrepancy is inter-branch transfers. That is a much smaller and much more tractable problem.

Refusing the sale you cannot supply

Here is a design choice worth stating openly, because reasonable people disagree with it: the till checks available quantity at that warehouse and location, and refuses to complete a sale for more than is there.

Some retailers dislike this. The customer is standing at the counter with the item in their hand — of course it exists. But look at what the alternative actually produces. A system that allows the sale drives the stock figure negative, which is an arithmetic statement that you sold something you never had. Negative stock corrupts costing, breaks reorder calculations, makes margin reporting meaningless, and — most damaging — trains everyone to ignore the stock number entirely.

Allowing the oversell

  • The queue moves, one problem is deferred
  • Stock goes negative, which cannot be true
  • Reorder logic reads a false figure and mis-buys
  • Costing on the negative line is undefined
  • Staff learn the stock figure is not to be trusted

Refusing until the record is right

  • One awkward moment at the counter
  • The discrepancy surfaces immediately, with a witness
  • A goods receipt or adjustment is done there and then
  • The stock figure stays a fact rather than an estimate
  • Staff learn that a wrong figure gets fixed, not bypassed

The refusal is not the point — the timing is. A discrepancy discovered at the counter with the goods physically present is the cheapest possible moment to resolve it: usually a delivery that was never received into the system, and a two-minute fix. The same discrepancy found during a stocktake in November is a mystery with no witnesses.

Negative stock is not a warning. It is an arithmetic statement that you sold something you never had — and once staff see it, they stop believing any stock figure at all.

The batch leaves with the sale

For anything with an expiry date or a recall risk — pharmacy lines, food, agrochemicals, cosmetics — knowing that a unit was sold is not enough. You need to know which unit, which means the batch has to be allocated at the point of sale rather than reconstructed later.

When a sale depletes stock, the allocation against specific batches is recorded with it. That is what makes a recall answerable in minutes instead of days: the question "who bought batch 4471" has a recorded answer rather than an estimate based on dates. The rotation discipline behind it is FEFO versus FIFO, and the traceability case is made in quality holds and traceability.

This is the whole argument for one system in regulated retail

A pharmacy running a separate till cannot answer a recall question at all — the till knows what was sold and the stock system knows what batches existed, and nothing connects a specific sale to a specific batch. Where you are legally exposed to a recall, batch allocation at the counter is not a nice-to-have.

What we do and do not do

POS and inventory — the straight answer

What AWRA OpsHub does today

  • Every sale moves stock in the same transaction as the payment, with no export, sync or overnight job in between.
  • Counters bound to a warehouse and a default location, so a sale depletes the right branch.
  • Availability checked before a sale completes, at that warehouse and location — the system refuses to sell what is not there.
  • Batch allocations recorded on depletion, so a sold unit is traceable to the batch it came from.
  • Cashiers scopable to their own warehouse, limiting counters and locations to their branch.
  • Returns that restock, where the return is marked for restocking and the sale has a warehouse behind it.

What it does not do

  • No overselling, and no override at the till. If the record says the stock is not there, the sale does not complete until the record is corrected — deliberate, but you should know it before go-live.
  • No offline stock validation. Availability is checked against the live record; the honest limits of selling through an outage are covered separately.
  • No automatic replenishment from shop floor to store. Moving stock between locations is a transfer somebody initiates.
  • No serial capture at the counter as standard. Batch allocation is recorded on depletion; per-unit serial capture at the point of sale is not part of the standard till flow.

The first line generates the most questions during evaluation, so decide your position on it early. Our view is that a counter is the best place in the business to discover a stock error, because the goods, the staff member and the evidence are all present at once.

What changes in the shop

Two things, in the first fortnight. Receiving becomes urgent — goods that arrive must be received into the system before they can be sold, which is a genuine change in habit for shops used to putting items straight onto the shelf. And the daily stock update disappears, along with the argument about who was supposed to do it.

The first is a real cost and worth planning for: brief the receiving staff before go-live, not after the first refused sale. The second is a permanent saving. On balance, businesses that make the switch describe the receiving discipline as the thing they resented in week one and relied on by month three, because it is also what makes the stock figure trustworthy for the first time.

Our take

Bind every counter to its warehouse before you sell anything, brief receiving staff that goods must be received before they can be sold, and treat a refused sale as a free stock audit rather than an obstruction. The daily export-and-update ritual disappears, and the stock figure becomes something you can actually make buying decisions on.

See point of sale in AWRA OpsHub

A till bound to your warehouse, availability checked before the sale, batch allocation recorded on depletion and returns that restock — one record, not two systems.

Explore point of sale

Frequently asked questions

Can we override the stock check when a customer is waiting?

No — a sale that exceeds available quantity at that warehouse and location does not complete. The intended response is to fix the record on the spot, which in practice usually means receiving a delivery that arrived and was never entered. That takes a couple of minutes with the goods and the staff member both present, which is far cheaper than the same discrepancy surfacing in a stocktake months later with nobody able to explain it.

What happens to stock when the internet drops during trading?

Availability is validated against the live record, so this is the honest weak point of any connected till and it deserves a plan rather than an assumption. Decide in advance what your counter does during an outage and how those sales re-enter the system afterwards; the trade-offs are worked through in our post on selling when the internet drops.

Does a return put the stock back?

Only where you say it should. A return is recorded with a restock decision, because a returned item is not automatically resaleable — damaged goods, opened medicines and spoiled food should not go back on the shelf. Restocking requires the sale to have a warehouse behind it, and the decision is captured on the return record so the physical outcome and the stock figure agree.

Can two branches sell from one stock pool?

Not from a shared pool — each counter is bound to a warehouse, and a sale depletes that warehouse. That is intentional: a shared pool means neither branch can trust its own figure, and staff cannot promise a customer anything. Where stock genuinely needs to move between branches, do it as a transfer, which leaves a record of what went where and when.

Do we need batch tracking if we sell general merchandise?

Probably not, and it costs a little discipline at receiving to maintain. It becomes close to non-negotiable where expiry or recall risk exists — pharmacy, food, agrochemicals, cosmetics — because without batch allocation at the point of sale a recall question simply has no answer. If any part of your range carries that exposure, set it up for those lines and leave the rest simple.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center