Guides & articles

Getting started with Odoo stock for an Australian business

This guide is for a small Australian trading business setting up Odoo Inventory for the first time — a few thousand product lines, one warehouse or shed, some goods arriving from overseas, and a bookkeeper who needs the numbers to hold up at BAS time. Work through it in order and you'll finish with products that actually track quantity, an opening stock count you can defend, a costing method that suits imports, and reorder rules that stop you running out. You'll also know, up front, which pieces the free edition doesn't include.

What "stock" means in Odoo

There's no menu item called Stock — it's the Inventory app (the underlying module is named stock, which is why you'll see the word everywhere in the technical docs). Everything physical flows through it: purchase orders create receipts, sales orders create delivery orders, manufacturing consumes components, and every movement writes a stock move that can post an accounting entry. Get the foundations right in the first week and the rest of Odoo behaves. Get them wrong and you'll spend months arguing with negative quantities.

Step 1: Turn on only the settings you need

Go to Inventory ▸ Configuration ▸ Settings. Resist the urge to tick everything. For a first go-live:

Step 2: Set products up so they actually track

In Inventory ▸ Products ▸ Products, a product only holds a quantity if its type is Goods with Track Inventory ticked (older versions call this a Storable Product). Services and consumables never show an on-hand figure. Check your imported data carefully — if you exported a product list out of MYOB or Xero and the type came in as consumable, your stock report will read zero forever.

On the Purchase tab, set the vendor and the purchase unit of measure. On the Accounting tab, confirm the taxes: your Australian chart of accounts should give you GST 10% on sales and purchases, plus GST-free codes for exports and the occasional exempt line. Install the Australian localisation (Settings ▸ Accounting ▸ Fiscal Localisation → Australia) before you enter any transactions — swapping charts of accounts later is painful.

Step 3: Load opening stock properly

Use Inventory ▸ Operations ▸ Physical Inventory (called Inventory Adjustments in some versions). Filter to your stock location, enter the Counted Quantity on each line, then Apply. Odoo posts the difference against an Inventory Adjustment location so there's an audit trail. Never fudge opening balances by editing the database directly or by backdating fake receipts.

Do the count on a day you're closed, or freeze picking for an hour. Put the count date in the adjustment reference so your accountant can tie the stock valuation back to a point in time.

Step 4: Costing method and valuation

Costing is set on the Product Category, not on individual products. Open Inventory ▸ Configuration ▸ Product Categories and choose:

Then choose Manual or Automated inventory valuation. Manual means stock value doesn't hit your profit and loss until you invoice, and you post a stock adjustment journal at period end — close to how a lot of small businesses already work in Xero. Automated posts accounting entries on every receipt and delivery, including a temporary holding account between "goods received" and "bill entered", which is more accurate but needs your accounts configured before the first receipt. Both options are in Odoo Community.

Step 5: Landed costs on imports — and where GST doesn't belong

Community includes Landed Costs (enable it in Inventory settings). Create a landed cost record, link it to the receipt, and spread sea freight, customs duty, quarantine fees and cartage across the products by value, weight or volume. Your cost per unit then reflects what the goods really cost to land in Sydney or Melbourne.

Be careful with import GST. As a general principle, GST paid at the border through your customs broker is a tax you claim as a credit, not part of the cost of the goods — so it usually belongs as a tax-only line on the broker's vendor bill rather than inside a landed cost record. Treating it as a landed cost quietly inflates both your inventory value and your cost of sales all year. We're not tax agents: confirm the correct treatment and BAS labels with your accountant or BAS agent before you set the pattern, because whatever you do on the first container you'll repeat on the next fifty.

Step 6: Reordering rules

Open Inventory ▸ Operations ▸ Replenishment. Set a minimum and maximum quantity per product, and set the vendor lead time on the product's purchase line. If you import, be honest about lead time — 45 days on the water plus 10 days clearing and carting is 55, not 45. Odoo then forecasts demand and proposes purchase orders. Start with your fifty fastest-moving lines rather than every product you sell.

What the free edition won't do

Straight answers, because these bite people at week three:

More detail on the split in Community vs Enterprise.

The weekly rhythm that keeps it accurate

Count a slice of the warehouse each week using Physical Inventory rather than attempting one heroic stocktake in June. Deal with backorders deliberately — when a delivery ships short, Odoo asks whether to create a backorder, and answering "no" cancels the remainder. Review the Forecasted Inventory report before you place orders. And check that nothing has been sitting in an Input or Transit location for weeks.

If you'd rather test this on your own data than read about it, the homepage chat can build you a live Odoo Community instance to play with — hosted on AWS in Sydney, data staying in Australia, SSL and nightly backups (kept 7 days) included, on flat pricing of $29 or $79 per month (AUD +GST, never per user), with every Community app included on both plans. Load fifty products, run a receipt, run a delivery, and see whether the flow matches how your warehouse actually works. More guides at Learn, background on the hosting at Odoo hosting in Australia, or start a scoped custom build if you already know where the gaps are.

See your Odoo running in five minutes. No card, no sales call — a chat, a verified email, and a live instance.

Start the demo →