The Three Methods Odoo Gives You (And Why Most Brands Pick Wrong)
Odoo 16 and 17 offer three costing methods: FIFO (First In, First Out), Average Cost (AVCO), and Standard Price. Each one determines how Odoo calculates the value of the goods you sell and the goods still sitting in your warehouse. Choosing wrong does not just produce bad reports — it produces bad decisions.
Here is the thing nobody tells you: the costing method is set at the product category level, not just the product level. If your "All / Saleable" category is set to Standard Price and you never changed it, every product in that category — including the ones you buy at wildly fluctuating rates — is being valued at a fixed number that you typed in manually, possibly three years ago.
(Yes, we have seen this. Multiple times. Across brands doing $500k to $8M/year.)

FIFO: The Method That Mirrors Reality (When Your Costs Actually Change)
FIFO assumes that the first units you purchased are the first ones you sell. The financial impact is anything but obvious when your raw material costs shift by 12-18% between purchase orders — which is exactly what happened to every brand importing from China in 2022-2023.
FIFO Journal Entry Math
Receipt 1
100 units at $4.00 each = $400 inventory value recorded at actual PO cost
Receipt 2
100 units at $5.50 each = $550 inventory added with cost layers maintained separately
Sale of 120 Units
COGS = 100 x $4.00 + 20 x $5.50 = $510. Remaining 80 units valued at $5.50 = $440 on balance sheet
That $440 reflects the actual replacement cost of what is in your warehouse. Your financial statements are telling the truth.
Who Should Use FIFO
1. Brands with perishable or batch-tracked products (food, cosmetics, pharma)
2. Any brand importing goods where landed costs vary order-to-order
3. Businesses that need to pass a GAAP/IFRS audit — FIFO is accepted globally
4. D2C brands scaling from $1M to $10M ARR where investor due diligence accuracy matters
The Dirty Detail Nobody Mentions
In Odoo, FIFO only works properly if you have perpetual inventory valuation enabled. If you are on "manual" (periodic) valuation and switch to FIFO, you get garbage data because Odoo loses the lot-level cost tracking that FIFO depends on. We see this exact mistake in 1 out of every 3 Odoo setups we audit. The fix takes 23 minutes. The uncleaned data behind it? 3-4 weeks.
If your current inventory management system cannot trace the exact cost layer of every unit on your shelf, your financial statements are fiction.
Average Cost (AVCO): The Default That Most Mid-Size Brands Actually Need
AVCO is Odoo's most-used method for a reason. Every time you receive stock, Odoo recalculates the average cost of all units currently in inventory. Sell a unit — Odoo expenses the current average cost as COGS. Simple, clean, predictable.

AVCO Real Calculation
Existing Stock
50 units at $6.00 average cost = $300 current inventory value
New Receipt
100 units at $7.20 = $720 added to inventory pool
Blended Output
New average = (50 x $6.00 + 100 x $7.20) / 150 = $6.80/unit for all future sales
AVCO smooths out price volatility. If you are buying the same SKU from three different suppliers at slightly different prices — a common reality for brands doing $200k-$800k/month in product volume — AVCO means your gross margin does not whipsaw every time a cheaper PO arrives.
Who Should Use AVCO
1. Brands with interchangeable goods (electronics components, apparel basics, dry goods)
2. Businesses buying from multiple suppliers for the same SKU
3. Operations where lot tracking is not required by law or quality standards
4. Brands that need clean, stable gross margin reporting for month-end investor calls
The AVCO Vendor Return Trap
AVCO has a fatal flaw when you do returns. If a supplier ships defective goods and you return them at the original PO price after the average has already been recalculated, Odoo creates a cost adjustment journal entry that confuses most bookkeepers. We have watched finance teams at $3M brands spend 37 hours per quarter manually reconciling these entries in QuickBooks because nobody configured Odoo's vendor return workflow properly. Set up your return reason codes. Map them to the correct accounts. Do not let your accountant discover this mid-audit.
Getting AVCO configured with proper return handling is a core part of our Odoo implementation services — because the vendor return journal entry disaster is the single most common AVCO complaint we hear from finance teams.
Standard Cost: Powerful for Manufacturing, Dangerous for Everyone Else
Standard Price is the simplest method on paper: you manually set a fixed cost per product, and every purchase, sale, and valuation uses that number until you change it. Odoo does not update the cost based on actual PO prices. Any difference between what you actually paid and the standard cost goes to a "price difference" account.
For a manufacturing company with stable bill-of-materials costs and predictable labor, this is brilliant. You can measure production efficiency against a budget. Variances tell you exactly where your factory is leaking money.
For a D2C brand buying finished goods? It is a really bad idea.
$14,200 in Unreconciled Variance — Hiding in Plain Sight
If your standard cost for a product is $8.00 and you receive a PO at $9.40 (because freight costs spiked), Odoo posts a $1.40/unit price variance to a suspense account. Most brands have no idea this account exists, and after 18 months it has $14,200 in unreconciled entries that your auditor will flag. We have seen this exact scenario at brands on three continents. The standard cost was set during the initial Odoo demo. It was never updated. The variance account was never reviewed. The P&L looked artificially healthy.
Who Actually Should Use Standard Cost
1. Manufacturers with tight production controls and monthly variance review processes
2. Brands with fixed-price contracts with suppliers (rare, but they exist)
3. Operations teams doing production order costing and wanting to track waste/efficiency
If you are a Shopify-to-Odoo brand buying finished goods from a contract manufacturer in Vietnam or Bangladesh — where prices fluctuate based on raw material index, freight, and MOQ — Standard Cost will lie to you every single day.
The Method-Switching Trap: What Happens When You Change Your Mind
Frankly, this is where we see the most expensive mistakes. A founder reads a blog post (ironic, we know), decides AVCO is better than their current Standard Price setup, and just... changes the product category costing method in Odoo settings.
Do not do this without a full inventory revaluation.
Singapore Client: $22,700 Phantom Inventory Loss Overnight
When you switch costing methods in Odoo mid-operation, the system does not retroactively recalculate historical moves. Your on-hand inventory gets revalued at a new cost immediately, creating a sudden hit or gain in your inventory valuation account. We had a client in Singapore switch from Standard to FIFO with $340,000 worth of on-hand inventory without running the revaluation wizard first. Their balance sheet showed a $22,700 inventory loss overnight. Their bank's covenant ratio triggered. Very bad week.
The Correct Process
Run Odoo's "Update Product Cost" wizard, post a manual revaluation journal entry for the delta, close the period, then switch methods. Takes about 4 hours with a consultant who knows what they are doing. Takes about 4 weeks to clean up if you do not.
The Odoo Valuation Method Decision Matrix
| Your Business Model | Recommended Method | Valuation Type | Risk If Wrong |
|---|---|---|---|
| D2C brand, finished goods, variable supplier prices | AVCO | Perpetual | Margin distortion, bad investor reports |
| Food / pharma / cosmetics with expiry / lot tracking | FIFO | Perpetual | Regulatory non-compliance, COGS errors |
| Manufacturer with BOM + production orders | Standard | Perpetual | Variance account bloat, misleading P&L |
| Simple dropship, single supplier, stable price | Standard | Manual (periodic) | Works, but limited financial insight |
| Multi-supplier, high purchase price variability | AVCO or FIFO | Perpetual | $18k-$40k/year in COGS errors |
The Configuration Nobody Checks (But Should)
Inside Odoo → Inventory → Configuration → Product Categories, every category has two settings that interact with costing method:
The Two Critical Settings
1. Costing Method (Standard / AVCO / FIFO) — determines how unit cost is calculated
2. Inventory Valuation (Manual Periodic / Automated Perpetual) — determines whether journal entries post on every stock move
If you choose AVCO or FIFO but leave valuation on Manual (Periodic), Odoo does not post journal entries on every stock move. Your accounting module will be blind to real-time inventory value. You will be running a sophisticated costing method on a periodic accounting backbone — and your trial balance will look like it was built by someone who hates your finance team.
Perpetual valuation is mandatory for FIFO and AVCO to work correctly. Full stop.
The 4 Accounts You Must Check Right Now
Stock Valuation Account (balance sheet) — where your inventory sits as an asset
Stock Input Account — goods received but not invoiced (GR/IR clearing)
Stock Output Account — goods shipped but not yet billed
Price Difference Account — used by Standard costing for variances
If these four accounts are misconfigured — or worse, if they all point to the same account because somebody copy-pasted the setup — your inventory accounting will produce numbers that make no sense to any auditor, anywhere.
What Braincuber Finds in 9 Out of 10 Odoo Inventory Audits
Across our last 50+ Odoo implementations and audits, we consistently find the same three failures:
The Three Failures We Find Every Time
Standard Cost Never Revisited
Set during initial setup, now producing $12,000-$35,000 in annual variance account buildup that nobody reviews
AVCO + Manual Valuation
Average cost is calculated but journal entries are not posting — accounting module has no idea what inventory is worth
No Landed Cost Module
Freight, customs, and insurance (8-14% of product cost) expensed directly to P&L instead of capitalized into inventory — over-reporting operating expenses by $8,800/month for a brand importing $80,000/month
The third one costs the most. A brand importing $80,000/month in goods with 11% average landed cost — and not capitalizing it into inventory — is over-reporting operating expenses by approximately $8,800/month. That is $105,600/year that looks like losses but is not.
Making sure your Odoo ERP integration handles landed costs correctly from day one is the single highest-ROI configuration decision in any D2C Odoo setup.
The Implementation Reality: How Long Does This Actually Take to Fix?

Timeline by Scenario
Starting fresh (new Odoo instance): 2-4 hours to configure the right costing method, set up perpetual valuation, map accounts correctly, and test with a sample PO-to-sale cycle.
Migrating from Standard to AVCO or FIFO: Inventory revaluation (1-2 days), account mapping review (4-6 hours), historical variance account cleanup if needed (1-3 weeks depending on buildup).
Cleaning up 18+ months of mismatched costing: Data audit (3-5 days), journal entry corrections (1-2 weeks), finance team re-training on Odoo valuation reports (1 day).
The cost of fixing the system is always less than the financial cost of continuing to report bad data. Every month you stay on the wrong costing method, your financial statements drift further from reality.
Frequently Asked Questions
Can I change the costing method in Odoo after going live?
Yes, but never do it without running Odoo's inventory revaluation wizard first and closing the current accounting period. Switching methods mid-operation without revaluation creates an instant balance sheet adjustment — we have seen this generate phantom inventory losses of $10,000-$22,000 overnight for brands with high on-hand stock value. Always do this with a certified Odoo partner.
Does FIFO in Odoo require lot or serial number tracking?
No — FIFO in Odoo works at the product level without mandatory lot tracking. However, if you want FIFO to work at the batch or expiry level (critical for food and pharma), you must enable lot tracking in the product form. Without it, Odoo sequences FIFO by receipt date, which works for general costing but not for expiry-based compliance.
What is the difference between perpetual and periodic inventory valuation in Odoo?
Perpetual valuation posts a journal entry to your accounting module every time stock moves — purchase, sale, internal transfer, scrap. Periodic (manual) valuation only updates inventory value when you manually run the revaluation. For AVCO and FIFO to produce accurate, real-time financial statements, perpetual valuation is non-negotiable.
Which inventory valuation method is best for a Shopify brand using Odoo?
For most Shopify brands syncing orders to Odoo and buying finished goods from suppliers, AVCO with perpetual valuation is the right answer. It handles variable PO prices without the complexity of FIFO, and it keeps gross margin reporting stable for monthly investor or bank reporting. If you also sell perishable goods or need lot traceability, shift to FIFO.
Why does my Odoo inventory value not match my accounting balance sheet?
Nine times out of ten, this is because your Inventory Valuation is set to Manual (Periodic) while your costing method is AVCO or FIFO. Odoo calculates the cost correctly on stock moves but never posts the journal entries to accounting. Run Odoo's Inventory Valuation report under Reporting, compare it to the Stock Valuation account in your chart of accounts, find the delta, and post a manual adjustment — then switch to perpetual immediately.
The Insider Takeaway
- AVCO + Perpetual is right for 70% of D2C brands buying finished goods
- FIFO + Perpetual is mandatory if you have expiry dates, lot tracking, or GAAP/IFRS audits
- Standard is for manufacturers only — and even then, review your variance account monthly
- Never switch methods without running the revaluation wizard and closing the period first
- The landed cost module is not optional for any brand importing goods — it is $105,600/year in P&L distortion if you skip it
Stop Flying Blind on Inventory Valuation
If you have not deliberately chosen your costing method — meaning you clicked whatever was default during setup — you are probably sitting on a $18,000-$40,000/year time bomb right now.
Book our free 15-Minute Operations Audit. We will identify your costing method risk and the specific dollar impact on the first call. No slides. No pitch deck. Just your numbers.
Book Your Free Valuation Audit
