Skip to main content
Cycle Counting & Stock Audit for Odoo — Recurring cycle counts and blind stock audits per location, product, lot or ABC class — 1/1Illustrative preview

Recurring cycle counts and blind stock audits per location, product, lot or ABC class

— built, installed and supported by ECOSIRE.

What is Cycle Counting & Stock Audit for Odoo?

Recurring cycle counts and blind stock audits per location, product, lot or ABC class — built, installed and supported by ECOSIRE. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Scheduled recurring cycle-count campaigns driven by ir.cron automated actions — weekly, monthly, quarterly or custom cadences per item group
Blind-count workflow that hides the theoretical on-hand quantity until the count is submitted, so operators record real observed stock
Count scoping by location, sub-location, product, product category, lot/serial number or ABC velocity class
Automatic ABC classification of products from rolling stock-move history so A-items are counted more frequently than C-items
Configurable variance tolerance (absolute qty or percentage) that decides which counts pass silently and which require review
Recount step that re-issues a task before a variance is escalated, catching simple miscounts
Multi-level variance approval with record rules — counters submit, supervisors approve, and only then is the adjustment posted
Inventory adjustments posted as real stock.move records against Odoo's inventory loss/gain locations, never silent quant edits
Mobile and scan-friendly OWL count screens for handheld/barcode devices, with keyboard-and-scanner entry
JSON-RPC / XML-RPC endpoints so external WMS, barcode terminals or scripts can create and submit counts programmatically
Computed accuracy KPIs — count accuracy %, variance value, hit/miss rate — via @api.depends compute fields for dashboards and reporting
QWeb PDF count sheets (blind and non-blind) and variance/adjustment audit reports for sign-off and archiving
Full audit trail with Odoo chatter: who counted, who recounted, who approved, timestamps and before/after quantities
Assignment of count tasks to specific users or teams, with per-user access restricted by record rules
Optional lock/reservation handling so counted locations can be flagged during counting to reduce concurrent-move drift
Warehouse and multi-company aware, respecting Odoo's standard company and location security boundaries

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Keeping Odoo inventory accurate should not mean shutting the warehouse for a full stocktake every quarter. This is a build-to-order Odoo module — ECOSIRE designs, builds, installs and supports it for you (typical one working week lead time). It is not an instant apps.odoo.com download; you get a module scoped to your locations, operations flow and audit policy.

Cycle Counting & Stock Audit adds a dedicated counting layer on top of Odoo's native stock.quant and stock.move engine. Rather than relying on the ad-hoc "Physical Inventory" adjustment screen, you get scheduled, repeatable count campaigns driven by ir.cron automated actions: count high-value or fast-moving items weekly, slower items monthly, and everything at least once a year — without ever freezing the whole warehouse. Each campaign generates count tasks scoped to the exact locations, products, lots/serials or ABC velocity class you choose.

Counters work through a clean blind-count workflow: the expected on-hand quantity is hidden until the count is submitted, so operators record what they actually see instead of confirming the system number. When a submitted count differs from the theoretical quant beyond your tolerance, the module raises a variance, routes it for recount and then approval, and only posts the inventory adjustment (a genuine stock.move against your inventory-loss/gain location) once an authorized user signs off — giving you a clean, auditable trail instead of silent quantity edits.

Built on Odoo's standard ORM and security model, the module ships as a proper addon: a custom stock.cycle.count model with computed fields (accuracy %, variance value, aging) using @api.depends, list/form/kanban and OWL-based mobile views, ir.model.access.csv plus record rules so counters see only their assigned tasks, QWeb PDF count sheets and variance reports, and JSON-RPC/XML-RPC endpoints so barcode terminals or a WMS can push counts in. It layers cleanly on both Community and Enterprise, and we deliver and test it on your target Odoo 17, 18 or 19 instance.

The result: measurable, defensible inventory accuracy, fewer emergency full counts, faster month-end close, and a documented audit trail your finance and compliance teams can rely on — all inside the Odoo you already run.

What you get

  • Complete, installable Odoo addon (the module source with __manifest__.py, Python models, XML/OWL views, security files and QWeb reports) targeting your Odoo 17, 18 or 19 version
  • Configuration of your cycle-count policy: ABC classes, count cadences, tolerance thresholds and location scopes mapped to your real warehouse layout
  • ir.model.access.csv and record rules set up for your counter, supervisor and approver roles
  • Deployment and installation on your instance (staging first, then production) with post-install validation of a full count cycle
  • Administrator and end-user documentation, plus QWeb count-sheet and variance report templates ready to print
  • A live training session for warehouse managers, counters and approvers on running campaigns and handling variances
  • A defined post-go-live support and warranty window for bug fixes and adjustments after handover
  • Source code ownership handover so your team (or another partner) can maintain and extend the module later

Who this is for

Warehouse Manager

Owns inventory accuracy and needs recurring, low-disruption counts across locations, lots and ABC classes instead of shutting the warehouse for full stocktakes. Wants clear accuracy KPIs and a defensible audit trail.

Inventory / Stock Controller

Runs the day-to-day counts, investigates variances and posts adjustments. Needs blind counts, easy recounts and scan-based entry so miscounts are caught before they hit the books.

Finance / Compliance Lead

Relies on accurate stock valuation for month-end close and audits. Needs every quantity change approved and evidenced — who counted, who approved, and the before/after — rather than silent manual quant edits.

How Cycle Counting & Stock Audit for Odoo Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Recurring scheduled cycle counts (no full stocktake)Automated ir.cron campaigns per ABC class / location / cadencePossible but must be designed and built from scratchVaries — often basic scheduling, not tailored to your policyNot included
Blind counting (hide expected qty until submit)Built in, role-controlled via record rulesRequires custom developmentPartial supportNot included
Scoping by lot/serial and ABC velocity classIncludedOnly if you build the ABC engine yourselfPartial supportNot included
Recount + multi-level variance approvalConfigurable recount and approval before any adjustment postsMust be modeled and codedPartial supportNot included
Adjustments posted as audited stock.move (no silent quant edits)IncludedDepends on the build's disciplinePartial supportPartial support
Fitted to your locations, roles and count policyScoped and configured to your warehouse during the buildIncludedNot includedNot included
Scan / JSON-RPC / XML-RPC integration for WMS & terminalsDelivered endpoints plus OWL scan screensBuild it yourselfPartial supportPartial support
Ongoing support, source handover and version upgrades (17/18/19)Support window, full source, upgrade pathOnly if you retain the original developersVendor-dependent, often per-version repurchasePartial support

Frequently Asked Questions about Cycle Counting & Stock Audit

How long until the module is delivered and installed?

This is a build-to-order module, not an instant download. Typical lead time is one working week from a confirmed scope, depending on how many count policies, ABC rules and integrations you need. We start with a short requirements pass, build and test on a staging copy of your Odoo, then install on production once you sign off on a full count cycle.

What support and updates do I get after go-live?

Every build includes a defined post-go-live support and warranty window covering bug fixes and adjustments to the delivered scope. Because we hand over the full source, your team can maintain it too. We also offer paid support plans and version-upgrade work — for example migrating the module when you move from Odoo 17 or 18 to 19.

Which Odoo versions and editions does this work with?

We build and test the module for Odoo 17, 18 or 19 — you tell us your target version. It works on both Community and Enterprise, since it is built on the standard stock app (stock.quant, stock.move, locations, lots/serials) rather than any Enterprise-only feature.

How is this different from Odoo's built-in physical inventory adjustment?

Odoo core lets you do an ad-hoc inventory adjustment where you see and edit the on-hand quantity directly. This module adds a scheduled, repeatable cycle-count layer: recurring campaigns, blind counts, ABC-based frequency, recount and multi-level approval, and adjustments posted only after sign-off — so accuracy improves continuously without full stocktakes and without unaudited quantity edits.

Can our barcode scanners or external WMS feed counts into it?

Yes. The module exposes counting through Odoo's JSON-RPC and XML-RPC APIs, so handheld barcode terminals, a WMS or your own scripts can create count tasks and submit counted quantities programmatically. We also deliver scan-friendly OWL count screens for staff who count directly in Odoo on a tablet or handheld.

Do counters get to see the system quantity while counting?

Not by default. The blind-count workflow hides the theoretical on-hand quantity until a count is submitted, so operators record what they physically see instead of just confirming the system number. Whether specific supervisor roles can see expected quantities is configurable through the record rules we set up for your team.

How are variances and stock adjustments handled?

When a submitted count differs from the system quantity beyond your configured tolerance, the module flags a variance and can trigger a recount. Confirmed variances route to an approver, and only after approval does the module post a real stock.move adjustment against Odoo's inventory loss/gain location. Every step is logged in the chatter with user, timestamp and before/after quantities.

Request a quote

Cycle Counting & Stock Audit

Recurring cycle counts and blind stock audits per location, product, lot or ABC class — built, installed and supported by ECOSIRE.

  • Scheduled recurring cycle-count campaigns driven by ir.cron automated actions — weekly, monthly, quarterly or custom cadences per item group
  • Blind-count workflow that hides the theoretical on-hand quantity until the count is submitted, so operators record real observed stock
  • Count scoping by location, sub-location, product, product category, lot/serial number or ABC velocity class
  • Automatic ABC classification of products from rolling stock-move history so A-items are counted more frequently than C-items

Request a Quotation

Tell us about your Cycle Counting & Stock Audit requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.