When automatic inventory valuation is enabled in Odoo, the system doesn't just track stock quantities — it also automatically creates accounting entries for the movement of goods. And it's exactly at this point that the cost of goods stops being a "purely warehouse topic" and becomes a matter of correct accounting logic.
One of the most common ideas that seems harmless but creates problems in practice is manually changing the account types for stock valuation, stock input, and stock output, especially when a company uses the Anglo-Saxon approach. On the surface, this looks like a minor tweak. In reality, it's an intervention into the very logic of automatic inventory accounting, interim accounts, and cost of goods. Odoo explicitly states that automatic valuation uses separate valuation, input, and output accounts, and that in Anglo-Saxon accounting, stock input and stock output work as interim accounts to balance between the movement of goods and the vendor or customer accounts.
What Automatic Inventory Valuation Is in Odoo
With automatic inventory valuation, Odoo creates accounting entries during stock movements so that Inventory and Accounting stay linked. To do this, at least three key accounts are set on the product category: Stock Valuation Account, Stock Input Account, and Stock Output Account. The Stock Valuation Account holds the current value of inventory, while the input/output accounts are used as interim accounts for automatic entries on receipt and dispatch.
What Anglo-Saxon Accounting Means in the Context of Odoo
In the context of Odoo, Anglo-Saxon accounting means that the cost of goods is not recognized as an expense at the moment it arrives in the warehouse. First, the goods enter inventory, and the expense in the form of cost of goods sold is recognized later, at the moment the goods are sold to a customer.
To do this, Odoo uses interim accounts, specifically stock input and stock output. When goods arrive from a supplier, the system first records them through the stock input interim account. When goods are shipped to a customer, stock output is used. These accounts are needed to link warehouse operations with accounting documents and to avoid recognizing the cost too early.
In simpler terms, the logic is this: the goods are already physically moving in the warehouse, but the accounting effect is only fully completed not at the moment of movement, but through the link with the vendor's account or the customer's invoice. That's why interim accounts play an important role in the Anglo-Saxon approach, and the cost of goods sold is recognized as part of the sales logic, not simply at the moment the goods arrive.
In simple terms, in the Anglo-Saxon approach:
- the goods physically move through the warehouse;
- Odoo creates interim entries on stock interim received / delivered;
- the cost of goods sold shouldn't "fire off" chaotically due to incorrectly chosen account types;
- the logic closes through correctly configured balance sheet interim accounts and expense/revenue logic at the moment of sale.
Why Account Type Is Critically Important Here
In account settings, what matters isn't just the name, but also the type. For Odoo, this isn't cosmetic. The account type affects accounting behavior, how it's displayed in reports, and whether the account is treated as a balance sheet account or as a P&L account.
For automatic inventory valuation, Odoo's documentation explicitly states that the stock valuation account holds the current value of inventory, meaning it follows asset logic. For the Anglo-Saxon approach, Odoo separately states that stock input and stock output should be configured as Current Assets. That's exactly why changing these accounts to expense, liability, "because it's more familiar," or to any other type that doesn't match the logic of interim stock accounts, breaks the accounting sense of the automatic entries.
Why Changing Account Types During Automatic Valuation Is a Bad Idea
1. You Break the Accounting Nature of Stock Interim Accounts
If stock input or stock output have the wrong type, Odoo will still keep creating automatic entries, but the meaning of those entries in the reports will already be distorted. What was meant to temporarily sit as an asset until closed through a vendor bill or customer invoice suddenly starts looking like an expense, a liability, or something else entirely. At that point, the interim account stops being interim in substance and starts corrupting the balance sheet and P&L. This directly contradicts the logic that Odoo describes for Anglo-Saxon accounting and automatic valuation.
2. Warehouse and Accounting Start to Diverge
Automatic valuation exists precisely so that warehouse movements and accounting entries stay aligned. If valuation/input/output are configured with accounts of the wrong type, you can end up with a situation where the goods are in stock, but the accounting reflection of their value sits somewhere it shouldn't. This later surfaces in inventory valuation reconciliations, the balance sheet, and cost analysis. Odoo separately warns that even changing the valuation mode itself requires caution due to the risk of discrepancies between stock valuation and accounting journals. When account types are also mixed up on top of that, the risk only grows.
3. You End Up with "Nice-Looking" Entries That Make No Accounting Sense
This is one of the worst problems. In the system, everything appears to be posted correctly: there's a debit, there's a credit, the move is posted. But the economic meaning is already damaged. For example, a temporary stock account suddenly starts appearing among expenses or liabilities, even though by the logic of automatic valuation it was supposed to be part of the balance sheet account scheme until final closing. Such errors are especially treacherous because the system doesn't always "scream" that something is broken. It just quietly corrupts the reports.
4. COGS and the Moment of Expense Recognition Get Distorted
In the Anglo-Saxon approach, the key idea is precisely that stock interim accounts work as a bridge between the physical movement of goods and the financial recognition of cost. If the account types are changed incorrectly, the moment of expense recognition starts behaving differently than intended. In the end, you can get either premature or incorrect expense reporting, or simply chaotic balances on interim accounts. Odoo directly ties the Anglo-Saxon logic to dedicated interim current asset accounts and to balancing these accounts through the bill/invoice flow.
An Especially Bad Idea: "Let's Change the Account Type So Odoo Posts Things the Way We Want"
This is a very typical trap. The company sees that it doesn't like an entry, and instead of understanding the business logic, tries to "fix" the result by changing the account type.
The problem is that account type isn't a tool for fine-tuning a custom scenario. It's a basic accounting property of the account. If you change it just to locally fix an entry, you're almost certainly breaking other scenarios:
- purchasing;
- sales;
- returns;
- inventory adjustment;
- dropship or special flows;
- valuation reporting;
- closing and reconciliation logic.
In other words, you're not treating the cause. You're shifting the foundation.
What to Do Instead
The right approach is:
First, you need to understand which accounting approach the company actually uses. Not "we heard something about Anglo-Saxon somewhere," but specifically what purchasing process, sales process, moment of cost recognition, and inventory valuation approach the business needs.
Then you need to check:
- whether automatic valuation is correctly enabled;
- whether the costing method is correctly selected;
- whether the product categories have the correct valuation/input/output accounts;
- whether the type of these accounts matches their accounting nature;
- whether someone previously tried to "tweak" the logic through account type instead of properly configuring the process.
Only after that should you decide whether the problem is in the configuration, in the business's accounting model, or in a customization.
What Typical Accounts Should Look Like in Automatic Valuation
In Odoo's general logic:
- The Stock Valuation Account should hold the value of inventory and function as an asset account;
- The Stock Input Account and Stock Output Account are used as interim accounts during automatic valuation;
- in the Anglo-Saxon approach, Odoo explicitly recommends making stock input and stock output accounts of type Current Assets.
If someone's hand reaches to set expense, current liabilities, or anything else there simply "because it looks nicer in the entry," that's almost always a sign that the process configuration needs to be reviewed, not the account types.
Conclusion
Anglo-Saxon accounting in Odoo is not just a checkbox and not just a set of account names. It's a specific logic for recognizing the value of goods, interim stock accounts, and cost of goods sold. Automatic inventory valuation works correctly only when the valuation, input, and output accounts not only exist, but also have the correct accounting nature.
That's exactly why changing account types during automatic valuation is a bad idea. It doesn't "customize Odoo for the business" — it distorts the accounting logic, risks breaking the link between the warehouse and accounting, corrupts the reports, and creates problems that are very expensive to diagnose.
If entries don't look the way you'd expect, you should almost never start with the question "why don't we just change the account type." You should start with the question "is the accounting approach configured correctly, and are we even trying to treat the symptom instead of the cause."
Anglo-Saxon Accounting in Odoo: Why Changing Account Types Is a Bad Idea