Set up stock accounting for manufacturing and wholesale
Quick summary: For materials used in production and merchandise held for resale, the valuation mode, accounts and closing schedule must agree. Production also needs a production-location account. The examples show why a bill, receipt and consumption or sale do not necessarily create journal entries at the same time.
Periodic and perpetual are not costing methods
Section titled “Periodic and perpetual are not costing methods”Inventory Valuation controls when value reaches the general ledger. The Inventory Cost Method (standard price, average cost or FIFO) controls how much the stock is worth. The Inventory Period controls whether reconciliation entries are prepared manually, daily or monthly.
| Valuation mode | Vendor bill for a stocked product | Stock outflow | Stock closing |
|---|---|---|---|
| Periodic (at closing) | Posts to the configured purchase or expense account. | The move changes stock value. Production consumption can be reclassified to the location account; delivery of sold merchandise reduces stock value. | Reconciles the stock account to valued stock. The difference goes to the variation account or, if missing, the company’s general expense account. |
| Perpetual (at invoicing) | The stocked product line is directed to the stock account. | A move into a production location with an account creates an entry on the move. For wholesale, cost of goods sold is posted on the customer invoice. | The regular closing remains a control and can create further adjustments; it is not the same path as the periodic examples below. |
This is Odoo 19 behavior: “perpetual” does not mean an ordinary receipt itself creates a transfer from purchase to stock account. With periodic valuation, Daily means scheduled stock closing, not posting when production or delivery is completed.
Key settings
Section titled “Key settings”| Where to check | Effect on posting |
|---|---|
| Accounting > Configuration > Settings > Inventory Valuation | Select Inventory Valuation, Periodic Valuation (manual, daily or monthly), cost method, Valuation Account and Journal. Check the active company. |
| Inventory > Configuration > Products > Categories | Valuation, costing method, stock account and journal can override company settings. If not explicitly set on the category, company defaults apply. Changing the company setting does not overwrite categories with explicit values. |
| Product Category > Expense Account | Under periodic valuation, this normally provides the vendor-bill account: 300000 for material or 650000 for merchandise in the examples below. A product or fiscal position can change it. Under perpetual wholesale, the same account also determines the cost on the customer invoice. |
| Stock account > Variation Account | Sets the counterpart for global reconciliation at closing: 310000 → 300000 for material or 660000 → 650000 for merchandise. Without it, the company’s general expense account is used, which may change the intended flow. |
| Inventory > Configuration > Warehouse Management > Locations > Cost of Production | Manufacturing only: on a production location, this sets the account for material consumption. In the example below it is 400000; leaving it empty does not automatically use 400000. Ordinary wholesale deliveries do not use this account. |
The account numbers are only an illustration based on a Slovenian chart of accounts. Choose accounts according to your accounting policy and verify all relevant categories, locations and companies. Material and merchandise categories can use different stock and expense accounts.
The Expense Account field on the stock account itself is an additional option for special adjustments under continental perpetual valuation. It does not set the production location’s consumption account and need not be filled for the periodic flow described here. Production WIP and overhead accounts are separate settings; they do not replace the material consumption account.
Check the setup and run a test
Section titled “Check the setup and run a test”- In Accounting > Configuration > Settings > Inventory Valuation, choose the valuation mode, inventory period, default stock account and journal. On an active database, test a change separately or in an agreed accounting period first.
- Check the actual values on the test product’s category, especially whether it overrides the company. The product must have Track Inventory enabled; services and direct-expense purchases without a receipt do not follow this path.
- Check the vendor-bill line’s account before posting: 300000 for material or 650000 for merchandise in the periodic examples. Validate the receipt. For manufacturing, check Cost of Production = 400000 and consume the material; for wholesale, deliver the goods and separately review the customer invoice.
- For periodic valuation, wait for scheduled closing or, in manual mode, generate the reconciliation entry as described in inventory valuation. Check the date, journal, debits, credits and final balances of the relevant accounts. To test the wholesale path over two periods, review each closing separately.
Example posting paths
Section titled “Example posting paths”Manufacturing: 300000 → 310000 → 400000
Section titled “Manufacturing: 300000 → 310000 → 400000”Assume stocked material worth €100.00 excluding tax: its bill is posted, it is received and fully consumed in production in the same period. With periodic valuation, the bill is debit 300000 / credit trade payables. At closing, debit 400000 / credit 310000 records consumption and debit 310000 / credit 300000 reconciles stock. For this example, 300000 and 310000 end with no balance while 400000 holds the €100.00 cost. If the material is received but not consumed, its value remains on 310000. The actual aggregate entry may combine several moves.
Under periodic valuation, closing can also value a receipt without a vendor bill: if the material remains in stock, an equal-value example would post debit 310000 / credit 300000. A later bill on 300000 then needs reconciliation; also check any difference between the bill price and receipt value.
With perpetual valuation, the bill in the same simplified example is debit 310000 / credit trade payables, and consumption into a location with an account is debit 400000 / credit 310000 on the move. If the bill has not arrived, timing differences and reconciliation must be reviewed separately; do not assume that the absence of a bill means stock has no value.
Wholesale: 650000 → 660000 → 650000
Section titled “Wholesale: 650000 → 660000 → 650000”Assume merchandise with a €100.00 cost excluding tax. The vendor bill and receipt are in the first period, and the goods remain in stock at closing. Under periodic valuation, the bill is debit 650000 / credit trade payables and the first closing is debit 660000 / credit 650000. The goods are sold and delivered only in the next period; the second closing is debit 650000 / credit 660000. The customer invoice also posts receivables and revenue, which are outside this cost example.
Under perpetual valuation, the vendor bill for the stocked product is debit 660000 / credit trade payables and the cost is debit 650000 / credit 660000 when the customer invoice is posted, provided the category’s expense account is 650000. The ordinary delivery does not create that entry by itself.
Explore how the settings change the entries
Section titled “Explore how the settings change the entries”Switch between Manufacturing and Wholesale, then choose the valuation mode and settings relevant to that example. Each table shows the account and its debit or credit amount. Both examples use €100.00 excluding tax; wholesale assumes closings in two different periods. Tax, price differences, returns, WIP and further adjustments are excluded. Your choices stay in the browser and are not stored or sent elsewhere.
One bill, one receipt and full production consumption in the same period; an ordinary receipt has no separate journal entry.
Illustrative journal entries
The variation account and periodic closing do not change the perpetual path in this illustration; additional adjustments are not shown.
| Account | Debit | Credit |
|---|---|---|
| 300000 | €100.00 | — |
| 220000 | — | €100.00 |
| Account | Debit | Credit |
|---|---|---|
| 400000 | €100.00 | — |
| 310000 | — | €100.00 |
| Account | Debit | Credit |
|---|---|---|
| 310000 | €100.00 | — |
| 300000 | — | €100.00 |
Before using this in production
Section titled “Before using this in production”Reconcile the current stock value with the general ledger, review open receipts without bills and separate direct expenses that have no stock receipt. Changing valuation mode does not repair historical postings automatically. Review the first closing with your accountant; if it contains unexpected amounts, first check categories, locations, accounts and opening balances.
For a basic review, see Inventory valuation. See also the official Odoo 19 inventory valuation documentation.