Skip to content
Retail & FMCG

Stock counts from three days to one afternoon

Replacing a nightly POS-to-accounting export with one Odoo system, then fixing the habits that made the numbers wrong in the first place.

Client
National retail chainNamed once permission is confirmed
Year
2025
Duration
16 weeks
Stack
OdooPostgreSQLMikroTikZebra scanners
  • 3 days → 1 afternoon

    Full stock count duration

  • Same day

    Branch stock visible at head office

  • 0

    Closed trading days for counting

  • Per SKU

    Margin visibility, previously per category only

The situation

Head office and the branches reported different stock figures every month. A nightly CSV export moved sales from the POS into the accounting package, and anything that failed was reconciled by hand. The annual stock count took three days of closed trading and the variances it produced were never investigated.

What we did

  1. 1Ran a two-week discovery across head office and four representative branches, including a full-day observation of an actual stock count
  2. 2Migrated sales, purchase, inventory and accounting onto a single Odoo instance, removing the nightly export entirely
  3. 3Introduced barcode discipline on every movement — including inter-branch transfers, samples and wastage, which had never been scanned
  4. 4Replaced the annual count with rolling cycle counts owned by each branch, with variance reports going to the branch that produced them
  5. 5Added a cellular backup link per branch after discovering two branches had lost trading days to line faults in the previous quarter

The software mattered less than being told our counting process was the actual problem. Nobody had said that before.

— Finance Manager (attribution pending approval)

The finding that changed the project

The brief we were given was "replace the accounting system". The discovery found something else.

Sitting through a real stock count made it obvious that the numbers were not wrong because of the software. They were wrong because roughly a fifth of stock movement was never recorded at all: inter-branch transfers done on a phone call, samples handed out at the counter, damaged goods binned without a movement.

No system, however good, produces accurate stock from incomplete input. We said so in the discovery report, and it changed the shape of the engagement: less custom development, more operational change, and a much better outcome.

What we built

A single Odoo instance replaced both the POS integration layer and the accounting package. Sales, stock and payments now land in one place with no export step, which removed an entire category of monthly reconciliation work.

The custom development was smaller than expected: inter-branch transfer handling and a variance dashboard by branch. Everything else was standard Odoo configured properly.

The unglamorous part that produced the result

Barcode discipline and cycle counting. Every movement scanned, counts on a rolling schedule, variances investigated where they happened, within the week.

That is a process change, not a technology one. It is also why the stock figures are now trusted, and it would have worked less well without the system change underneath it.

What we would do differently

We under-estimated branch training. Four branches were straightforward; the two with high staff turnover needed a second round and a laminated one-page guide at each till. On the next rollout of this shape, that guide exists before go-live.

Comparable project

Something like this, for your business?

We will say whether the same approach applies.

  • A reply within one working dayFrom an engineer.
  • We look before we quoteA call, and a site visit if needed.
  • The recommendation is yoursYours to take elsewhere.
  • Or call +20 109 777 8090