Most inventory setups come unstuck in the first week, not the sixth month. Someone installs the Inventory app, switches on every option they can find, imports 4,000 products with no units of measure, and then spends months fighting negative stock. Below is an order of operations that avoids that — written for a business doing somewhere between a few hundred and a few thousand stock movements a month on Odoo Community.
Decide three things before you touch Settings
- Is Odoo your accounting system, or just your stock system? If your books stay in Xero or MYOB, keep Odoo's inventory valuation on Manual and hand your accountant a stock-on-hand valuation report at year end. If Odoo is your ledger too, you'll want automated valuation (step 6). Odoo Community has no official Xero or MYOB connector — a two-way sync is custom work, not a toggle.
- How many physical places does stock live? One shed, or a shed plus two utes plus a consignment customer? One warehouse with child locations under it handles nearly every small business. Create a second warehouse only if you genuinely order and replenish it separately.
- Do you need lot or serial numbers? Food, chemicals, anything with an expiry date, anything you've had a warranty claim on — yes. Otherwise skip it; it adds a tracking step to every receipt and every delivery, and staff have to get it right each time.
Step 1: Install the Australian localisation first
Before any product or transaction exists, go to Settings → Accounting → Fiscal Localisation and set Australia. That loads the AU chart of accounts and the GST tax records (GST 10%, GST Free, Input Taxed) that your products will point at. Doing it after you've posted bills is painful to unwind. Even if you never use Odoo for accounting, install it so the 10% tax exists for quotes and sales orders.
Step 2: Turn on only the Inventory settings you'll use
In Inventory → Configuration → Settings:
- Storage Locations — on. You want named bins, not a single black box called "Stock".
- Units of Measure — on if you buy in cartons and sell in singles, or buy by the roll and sell by the metre.
- Multi-Step Routes — leave off at first. One-step receipts and deliveries is the right starting point, and you can move to pick-then-ship later without redoing your data.
- Lots & Serial Numbers — only if you decided yes above. Tick Expiration Dates for food and consumables.
- Delivery Packages, Consignment — off unless you have a specific reason today.
Step 3: Get products right once
Every stock item needs Product Type = Goods with Track Inventory ticked (this was labelled Storable Product in Odoo 17 and earlier). Consumables and services never show a quantity on hand, which is the most common answer to "why is my stock wrong?"
On each product, set:
- Internal Reference — your SKU. Short and unique; it's what prints on pick lists.
- Barcode — the barcode already printed on the retail pack or carton. Even without the Enterprise Barcode app, a basic USB or Bluetooth scanner plugs in and types like a keyboard, so scanning into a product or transfer search box fills it the same way typing would.
- Customer Taxes / Vendor Taxes — point these at the tax records the localisation loaded in step 1: GST 10% for standard lines, GST Free for GST-free items such as basic food, and Input Taxed where that applies. These totals feed the G1 and 1A figures on your BAS, so set them at the product level instead of correcting every invoice by hand.
- Purchase UoM vs Unit of Measure — e.g. buy a Carton of 12, stock and sell Units. Odoo converts on the receipt.
- Product Category — this drives costing and valuation accounts, so build a handful of real categories before you import.
Step 4: Warehouse and locations
Rename the default warehouse to your trading name and give it a short code ("SYD", "BNE") — it prefixes every reference number. Then in Inventory → Configuration → Locations, create children under WH/Stock: WH/Stock/Racking A, WH/Stock/Cold Room, WH/Stock/Van 1.
A workable rule for how deep to go: make a bin wherever a picker has to make a decision about which way to walk. If two shelves are always grabbed in the same trip without looking anything up, they're one bin. If a picker regularly walks to the cold room, the mezzanine or out to a van as a separate trip, each of those is its own bin. Depth beyond that only pays off once you're running directed picking.
Step 5: Load opening stock with a physical count
Don't import quantities on the product form. Use Inventory → Operations → Physical Inventory. Filter to the location, enter the Counted Quantity on each line, set the Accounting Date to your cutover date, then hit Apply. Odoo books the difference to the inventory adjustment account and leaves an audit trail your accountant can follow. Count when nothing is moving — a Sunday, or after close — and hold off processing receipts and deliveries until it's applied.
Step 6: Valuation and costing
On each Product Category, set Costing Method and Inventory Valuation. For most Australian SMEs, AVCO — average cost, where every unit on hand is valued at the running average of what you've paid — with Automated valuation is the practical choice. It smooths out exchange-rate swings on imported goods. FIFO suits you better if you track margin batch by batch. If valuation is Automated, set the Stock Input, Stock Output and Stock Valuation accounts on the category, or the postings land nowhere useful.
In the Odoo Community version we deploy, automated valuation, AVCO/FIFO and Landed Costs (rolling sea freight, duty and broker fees into unit cost) are all available — you don't need Enterprise for them. Landed costs matter if you import, because freight and duty can be a real share of true unit cost. The GST on imports is handled through your customs broker rather than the overseas supplier, and how you enter those bills affects your BAS — agree the entry method with your accountant or bookkeeper before you process the first shipment.
Step 7: Reordering rules instead of guesswork
Open Inventory → Operations → Replenishment. For each moving product set a Min and Max quantity, and add a preferred vendor with pricing on the product's Purchase tab. Set that vendor's Delivery Lead Time in days, plus a Purchase Security Lead Time in Purchase settings as a buffer. Run the replenishment screen every Monday; it proposes draft purchase orders you confirm or ignore. Start with your top 40 products by movement, not the whole catalogue.
Honest limits of Community here
- No Barcode app, so there's no dedicated scan-to-pick screen for a handheld. Scanners that type like a keyboard into standard forms work fine for small teams.
- No Quality app (inspection points, quality alerts), and no Studio — field and view changes are code, not drag-and-drop. See our breakdown of Odoo Community vs Enterprise.
- No built-in Australia Post, Sendle or Starshipit label integration. Those are third-party or custom Odoo modules, which means you need hosting that can install them: Odoo Online SaaS can't, while Odoo.sh and managed self-hosting can. If you know the integration you need, you can scope a fixed-price build in writing first.
Where ERPForge fits
We run Odoo Community on AWS Sydney (ap-southeast-2), so your stock and customer data stays in Australia, with nightly backups kept 7 days and SSL included. Pricing is flat AUD +GST and never per user: $29/month for up to 5 users or $79/month for up to 15, with every Community app — Inventory, Purchase, Sales, Accounting, Manufacturing — included on both plans. You can build a live demo instance from the chat on our homepage in about five minutes and run your real count data through it before committing. Browse our Odoo setup guides for the next steps.
See your Odoo running in five minutes. No card, no sales call — a chat, a verified email, and a live instance.
Start the demo →