Home

Services

About Us Frequently Asked Questions Blog Contact Us
Saudi warehouse worker scanning carton barcodes on shelves with a handheld reader - Odoo inventory and warehouse management

Odoo Inventory and Warehouse Management in Saudi Arabia: From Manual Stock Counts to Real-Time Tracking

Odoo inventory software shows you the real stock of every warehouse in real time. If answering "How much of this item do I have right now, and in which warehouse?" takes two phone calls and an Excel file, you need inventory management software that answers it at a glance. Odoo does exactly that: every receipt, transfer and delivery is recorded by scanning a barcode the moment it happens, so the stock in every warehouse updates instantly. Here we explain how Odoo inventory and warehouse management works in Saudi Arabia in versions 18 and 19, from barcodes, lots and expiry dates to inter-warehouse transfers, automatic reordering, cycle counts and valuation methods. We apply it all to the scenario of a distribution company with three warehouses in Riyadh, Jeddah and Dammam, explain how inventory connects to e-invoicing, then present the approximate cost in SAR and a checklist to help you decide before signing with any provider.

Saudi worker scanning a pallet barcode at a warehouse loading dock - Odoo inventory software for distribution companies

Why do manual stock counts fail in Saudi distribution companies?

The problem is not Excel itself. The problem is that the stock recorded in it lags behind reality. The warehouse receives goods in the morning, sales sells at noon, and the accountant updates the file at the end of the day or the week. In that gap, what every operations manager knows happens:

  • Selling an item you do not have: The sales rep sees stock in the file and confirms the order with the customer, then the warehouse discovers the quantity ran out yesterday.
  • Dead and expired stock: Nobody knows which lot came in first, so the new lot gets dispatched and the old one stays on the shelf until it expires.
  • "Lost" transfers between cities: A shipment left Riyadh for Jeddah; it was deducted from Riyadh but never added to Jeddah. Where is it now? The system has no answer.
  • An annual stock count that halts operations: The warehouse closes for two or three days at year-end, and large discrepancies appear with no way of knowing when or why they happened.
  • Estimated cost of goods sold: The accountant calculates inventory cost once a month or once a year, so your monthly profit is an approximation, not a real figure.

Simple accounting software solves part of this, but it struggles with multiple warehouses and lots. We explained this turning point in detail in our comparison Odoo vs Qoyod vs Daftra: when multiple stock locations and branches become a daily part of your business, you need inventory management software built around inventory itself, not an accounting system with inventory added later.

How Odoo inventory software works: real-time stock for every warehouse

The core idea behind any modern inventory management software, Odoo included, is that stock is never entered manually. Stock is the result of movements. Every item that comes in, goes out or moves has a documented "stock move": from which location, to which location, in what quantity, who performed it and when. So the same item never has two different balances in two places in the system. Configuring these locations and routes to match your actual warehouses is the core of our Odoo ERP development and implementation service.

Warehouses and internal locations

In the Odoo Inventory app, you define each warehouse (Riyadh, Jeddah, Dammam), then divide it into internal locations as needed: the receiving area, aisles, shelves, the cold room and the shipping area. You then set Putaway Rules, so the system suggests where the employee should place each item on receipt, such as putting chilled items directly into the cold room, or placing a specific item on its dedicated shelf.

Three numbers for each item instead of one

The most important thing the system gives a sales manager is that it distinguishes between three numbers:

  • On Hand quantity: What is physically on the shelf right now.
  • Reserved quantity: What is in stock but tied to confirmed orders that have not shipped yet.
  • Forecasted quantity: The balance after accounting for incoming purchases and confirmed orders.

When sales reps see the forecasted quantity, not just the on-hand quantity, double-selling the same carton stops. That alone solves a large share of customer complaints in distribution companies.

Receiving and delivery in one, two or three steps

Odoo inventory software lets you design the receiving route according to the size of your warehouse. A small warehouse receives in one step: goods go straight to the shelf. A larger warehouse receives in two steps (receive, then store) or three (receive, then quality check, then store). The same applies to shipping: one step, pack then ship, or pick then pack then ship. The extra steps are not bureaucracy; they are checkpoints that stop the wrong item from going out or damaged goods from reaching the shelf.

Barcodes, serial numbers, lots and expiry dates

This is where Odoo Inventory moves from a "record" to an "operating tool", and where the difference between real inventory management software and a spreadsheet shows. Real-time stock is only accurate if each movement is recorded the moment it happens, and that does not happen by typing. It happens by scanning barcodes.

The barcode app in the warehouse

Odoo's Barcode app (part of the Enterprise edition) runs on Android handheld scanners, on a regular smartphone using its camera, or with a barcode reader connected to a computer. The employee opens the receipt, scans the item, scans the location, and the stock updates instantly. If they scan an item that is not on the purchase order, or a larger quantity than ordered, the system alerts them on the spot before the error becomes a stock count discrepancy. Versions 18 and 19 improved the app's speed on handheld devices and made receiving, picking and internal transfers easier.

Odoo also supports GS1 barcodes, which carry the product number, lot number and expiry date in a single code, so all of them are read in one scan instead of entering each piece of information manually (see Odoo's official documentation on GS1 nomenclature). This point is especially important for food and pharmaceutical distributors.

Lots, expiry dates and the FEFO strategy

For each item, you choose the tracking method: no tracking, by lot, or by serial number. Food and consumer items are usually tracked by lot. When expiry dates are enabled, Odoo calculates for each lot an expiration date, a "best before" date, a removal date and an alert date, and sends an alert before the lot reaches its date, as explained in Odoo's documentation on expiration dates.

Most importantly, choose the FEFO removal strategy (first expired, first out). The system then automatically suggests the lot closest to expiry to the picker, so nothing depends on the storekeeper's memory. Odoo also offers other strategies such as FIFO, LIFO and closest location, detailed in its documentation on removal strategies, so you can choose what suits each product category.

Serial numbers for devices and high-value parts

Electrical appliances, spare parts and equipment are tracked with a unique serial number for each unit. You know which supplier it came from, when it arrived, which customer it was sold to and on which invoice. When a customer comes back with a warranty claim, the customer service agent finds the unit's full history in seconds.

Food and drug traceability requirements in Saudi Arabia

If your company distributes human medicines, you are subject to the drug track-and-trace system RSD launched by the Saudi Food and Drug Authority. The system relies on GS1 standards: a GTIN for the product, a unique serial number for each pack, and the lot number and expiry date in a two-dimensional DataMatrix code, with each warehouse identified by a GLN global location number. Odoo stores the lot, serial number and expiry date for each pack, but electronic reporting to the RSD platform itself usually requires a custom integration or an approved intermediary. Ask your provider about this point specifically before signing.

For food distributors, tracking by lot and expiry date is not a luxury. In any product recall, you need to know within minutes which customers received the affected lot. In Odoo, the Traceability report gives you that list directly from the lot number.

A practical scenario: a distribution company with three warehouses in Riyadh, Jeddah and Dammam

To make this concrete, take a hypothetical but realistic example: a distributor of food and personal care products, with its main warehouse in Riyadh and two branch warehouses in Jeddah and Dammam. It handles about 2,000 items, half of which have an expiry date, and sells to supermarkets and retail shops through sales reps in all three cities.

Designing warehouses and routes

  • Riyadh (main warehouse): Receives from suppliers and ports in three steps (receive, inspect, store), because most imported goods need inspection before reaching the shelf.
  • Jeddah and Dammam (branch warehouses): Mostly receive from Riyadh rather than from suppliers, and ship to customers in two steps (pack, then ship).
  • Tracking: Food by lot and expiry date with FEFO. Small appliances (such as hair dryers) by serial number.

Transfers between warehouses without "losing" goods

When the Jeddah warehouse needs stock, Odoo inventory software creates two linked movements: a delivery order from Riyadh and a receipt in Jeddah. Between the two steps, the goods sit in a Transit location that is visible in reports. In other words, a shipment on the highway does not vanish from the system; it shows as quantity in transit until a Jeddah employee scans it on arrival. If it arrives short, the discrepancy appears immediately, along with the stage where it happened.

Automatic reordering by city

You set a minimum and a maximum for each item in each warehouse (Reordering Rules). When an item's stock in Dammam drops below the minimum, the system suggests a transfer from Riyadh. When Riyadh's stock drops, it suggests a purchase order from the usual supplier for the quantity that brings the stock back to the maximum. From the Replenishment screen, the purchasing officer reviews all suggestions in one place and approves them with a click. Newer versions try to improve these suggestions based on sales history and each supplier's lead time.

A tip from the field: do not set the same limits in all three cities. Jeddah's consumption usually rises during Umrah seasons, and demand for some items differs between regions. Review the limits every quarter based on actual sales in each warehouse.

Saudi warehouse worker scanning lot and expiry barcodes in a cold store with Odoo warehouse management

Do you know the stock of every warehouse right now without a single phone call?

Book a hands-on demo with the Bateel team of managing your warehouses with barcodes, lots and expiry dates, using data similar to your company's.

Contact us on WhatsApp now
Book your free consultation

Cycle counts and inventory valuation: correct accounting figures every day

Any inventory counting software worth using must answer two questions: Does the quantity in the system match the shelf? And what is this inventory worth in my books?

Cycle counts instead of closing the warehouse

Instead of a single annual count that halts work for days, Odoo inventory software supports Cycle Counts: you set for each location how many days pass between counts. A fast-moving aisle might be counted every two weeks, for example, and slow-moving shelves every three months. The system creates count tasks automatically when they are due, the employee scans the shelf with a barcode device, and discrepancies appear instantly and are approved after a supervisor's review. You can still set a date for the full annual count for the financial year-end close. The result: a discrepancy is caught days after it happens, not a year later, which makes its cause much easier to find.

Inventory reports and KPIs to read every week

Counting keeps quantities accurate, while KPIs tell you whether the inventory itself is healthy. Four KPIs are enough for a short weekly meeting:

  • Inventory turnover = cost of goods sold ÷ average inventory value. A healthy rate varies widely between industries, so compare your company with itself quarter over quarter rather than with a generic figure.
  • Days of cover = current stock ÷ average daily sales. It tells you how many days your stock will last before running out, and helps you set reordering limits.
  • Slow-moving stock: Items with no movement for, say, 90 days; this is cash frozen on the shelf that needs a markdown or return decision.
  • Count accuracy: The share of locations where the cycle count matched the system balance. A low rate points to a process problem, not a system problem.

ABC classification helps direct cycle counts: the few items that make up most of the inventory value are counted more often than others. Odoo's stock reports, moves analysis and valuation give you the raw figures for these KPIs, and ready-made views and dashboards for them can be configured during implementation. The same routes also cover other cases you may need, such as shipping directly from the supplier to the customer (Dropship), moving straight from receiving to shipping (Cross-dock), and recording damaged goods (Scrap) with an accounting entry instead of writing them off manually.

Inventory valuation methods: standard cost, weighted average and FIFO

Odoo supports three methods for calculating inventory cost, and you choose one for each product category:

Method How it works When it suits a Saudi company
Standard cost A fixed cost that you set and adjust periodically Factories and items with stable costs
Weighted average cost (AVCO) The average cost is recalculated with every new receipt Most distribution and retail companies, because it absorbs fluctuations in supplier prices
First in, first out (FIFO) The cost of the oldest lot is used first Imported items with highly variable costs, and items with a shelf life

With automated (Perpetual) valuation, every stock move becomes an accounting entry, so the finance manager sees cost of goods sold and inventory value daily without waiting for month-end. Version 19 reorganized valuation to make the Periodic option easier for those who prefer it, with closing entries suggested automatically. An important warning: change the costing method before transactions start, not after, because changing it on an item with previous movements is not simple. Decide it during the analysis phase with your accountant.

Landed costs for imports

If you import through Jeddah Islamic Port or King Abdulaziz Port in Dammam, the cost of an item is not just the supplier's price. There is freight, customs clearance, customs duties and inland transport. In Odoo, these costs are allocated across the shipment's items (by value, weight, volume or quantity), so they become part of the item's true cost. Your selling prices are then built on a correct profit margin, not on the supplier's price alone.

Linking stock movements to e-invoicing in Saudi Arabia

A question we often hear from operations managers: "Does every stock movement need an e-invoice?" The answer is no. The e-invoice mandated by the Zakat, Tax and Customs Authority (ZATCA) is tied to sales and supplies to customers, not to the movement of goods within your business. A transfer from the Riyadh warehouse to the Jeddah warehouse within the same company is an internal stock movement, not a sale, so it usually does not require a tax invoice. That said, review special cases (such as transfers between two companies in the same group with different commercial registrations) with your tax advisor.

So where does the link come in? In Odoo, the whole cycle is connected:

  1. The sales order is confirmed, and the quantity is reserved from the appropriate warehouse.
  2. The item is picked and shipped using barcodes, and the lot or serial number is recorded on the delivery order.
  3. The invoice is issued for the delivered quantity (not the ordered quantity) and sent to the FATOORA platform under the Phase Two requirements through Odoo's Saudi localization package.
  4. If the customer returns part of the goods, a return order puts the quantity back into stock, and a credit note linked to the original invoice is issued.

The real benefit here is that the invoice and the inventory never disagree: there is no invoice for a quantity that never left the warehouse, and no shipment that left without an invoice. That is what protects you in any tax audit. You will find the details of the integration requirements and both phases in our guide to e-invoicing in Saudi Arabia.

And if you also sell through an online store or point-of-sale terminals in branches, the same stock feeds every channel. We explained linking inventory to point of sale in our article Odoo for restaurants and point of sale, and the same logic applies to retail shops. If your online store is still being built, the team behind Bateel's e-commerce store design service designs the store from the start so that it reads stock from the real inventory, not from a manually entered number.

The cost of implementing Odoo inventory software in Saudi Arabia in SAR

The cost of inventory management software in Odoo consists of four items: Odoo licenses, implementation and configuration, hardware, and annual support. The following figures are approximate as of 2026, vary with the number of warehouses and items, the quality of your current data and the amount of customization, and are exclusive of 15% VAT:

Item One warehouse and simple items 2–3 warehouses with barcodes, lots and expiry Multiple warehouses with integrations and customization
Implementation, configuration, data migration and training SAR 20,000–45,000 SAR 60,000–150,000 SAR 150,000 and up
Handheld barcode scanners (per device) SAR 1,000–5,000 SAR 1,000–5,000 Industrial devices with higher durability and price
Barcode label printer (per printer) SAR 800–3,000 SAR 1,500–4,000 Depends on the number of print stations
Approximate implementation time 4–8 weeks 10–16 weeks 4–8 months in phases

Odoo Enterprise licenses are added as a subscription per internal user. Based on the currently published prices, they come to roughly SAR 51–63 per user per month on the Standard plan and SAR 96–120 on the Custom plan, depending on annual or monthly billing, before 15% VAT, and they change periodically. The Custom plan is required if you need multiple companies or code customizations on Odoo.sh. A practical warning: the Barcode app and the Saudi e-invoicing package are Enterprise features, so watch out if you are offered the Community edition at a lower price. To understand all project cost items and how to spread your budget across phases, read our guide to Odoo implementation cost in Saudi Arabia.

Do not forget an item many overlook: Wi-Fi coverage inside the warehouse. Scanners need a stable connection in every aisle, and warehouses with tall metal racking have many "dead zones". Test the coverage before buying the devices, not after.

Decision checklist: is your company ready for a warehouse management system?

Before requesting quotes, answer these questions within your company. Every "no" here means extra project work that must be factored into the timeline and budget.

Internal checklist before you start

  • Does every item have one clear code? Or do you have the same item under three names in three cities?
  • Do your items carry supplier barcodes? Or will you need to print internal labels?
  • Do you know which of your items need tracking by lot, expiry date or serial number?
  • Are the shelves numbered in every warehouse? The system cannot direct an employee to a shelf with no name.
  • Has the finance department agreed on the valuation method (AVCO, FIFO or standard)?
  • Who "owns" the project in your company? An inventory project without a partly dedicated internal lead is always delayed.

Common mistakes we have seen in inventory projects

  • Migrating messy data as is: If you load opening balances from a file that was never counted, you start the new system with the old system's errors. Count before go-live.
  • Enabling everything from day one: Three receiving steps and three delivery steps for a warehouse with two employees slow work down for no benefit. Start simple and add steps when needed.
  • Training accountants and neglecting storekeepers: The people who scan barcodes every day determine the system's accuracy, so training them matters more than training anyone else.
  • Allowing all users to adjust stock manually: Make stock adjustments a supervisor-only permission with a documented reason, or the chaos will come back through the back door.

Questions to ask your implementation provider

  • Have you implemented a multi-warehouse inventory project with lots and expiry dates before? Ask for a hands-on demo, not slides.
  • Which scanners have you tested with Odoo? And who sets them up?
  • Is integration with the FATOORA platform included in the offer? And what about RSD tracking if you are a pharmaceutical distributor?
  • How will opening balances be migrated? And who is responsible for cleaning them?
  • What support is there after go-live? And who answers you if receiving stops on a workday morning?

At Bateel, we ask ourselves these questions during the analysis phase with every client, and experience has taught us that clear answers before starting save weeks during implementation. If you want the broader picture of Odoo and its modules before going deeper into inventory, start with our complete guide to Odoo ERP for Saudi companies.

One more detail completes the picture: field sales reps need to see available stock on their phones before confirming an order with a customer. Odoo runs in the mobile browser, and if you need a branded app for your sales reps or wholesale customers, our mobile app development team builds it connected to the same inventory.

Frequently Asked Questions

What is the best inventory management software for companies in Saudi Arabia?

Choosing an inventory system for Saudi companies depends on your size. A business with one warehouse and few items can usually make do with accounting software that includes basic inventory. But multi-warehouse distribution and wholesale companies that need barcodes, lots, expiry dates, transfers between cities and e-invoicing integration are better served by an integrated ERP system such as Odoo.

Does Odoo support barcodes and expiry dates?

Yes. The Barcode app in Odoo Enterprise runs on Android scanners and smartphones and reads GS1 barcodes that carry the lot number and expiry date. The system tracks each lot with its expiry date, alerts you before it expires, and suggests dispatching the soonest-expiring stock first through the FEFO strategy. You can also track devices with a serial number for each unit.

How much does Odoo warehouse management cost in Saudi Arabia?

Single-warehouse projects start at about SAR 20,000 to 45,000 for implementation, rising to SAR 60,000–150,000 for a company with 2–3 warehouses using barcodes and lots. Licenses are added at about SAR 51–63 per user per month (Standard) or SAR 96–120 (Custom), plus scanners and label printers. All figures are approximate for 2026, vary with the number of warehouses and items, and exclude 15% VAT.

Do transfers between warehouses need an e-invoice?

Usually not. A transfer between warehouses of the same business is an internal stock movement, not a sale, so no tax invoice is issued for it. The e-invoice is issued when selling to a customer, and Odoo issues it for the quantity actually delivered. Transfers between two different companies in the same group should be reviewed with your tax advisor.

How do I migrate inventory data from Excel to Odoo?

Items and opening balances are imported from Excel or CSV files using Odoo's ready-made templates, after standardizing item codes and cleaning up duplicates. Most importantly, do a physical count right before go-live, so the new system starts with correct balances rather than the old file's errors. Ideally, go-live should happen at the start of an accounting month.

Move your warehouses from manual counts to real-time tracking with Bateel

The value of Odoo inventory software does not come from its screens but from three things: every movement recorded by barcode the moment it happens; every lot and expiry date tracked from supplier to customer; and every movement turned into a correct accounting figure and invoice. A company that gets there stops selling what it does not have, reduces waste from expired products, and knows its real profit every month.

At Bateel Tech Solutions in Riyadh, we implement Odoo inventory and warehouse projects with full Saudi configuration: warehouse and route design, barcodes, lots and expiry dates, e-invoicing integration, and Arabic training for storekeepers with post-launch support. Contact us on WhatsApp or through our Contact Us Page, and get a free consultation and a clear quote for your warehouses.

Contact us on WhatsApp now
Book your free consultation


Contact Us

    We will contact you during working hours. By submitting, you agree to our privacy policy.