Short answer: standard Odoo books stock moves and cost of goods neatly, but a genuine manufacturing accounting setup - where material, machine costs and surcharges are posted to work in progress (WIP) per production step and settled cleanly on completion - takes a deliberate posting flow on top of the standard. The video below (10 minutes, spoken in Dutch, but the screens and postings speak for themselves) shows how we approach it: from cost elements and journals, through the postings per work order, to a trial balance that nets to zero and a variance posting against standard cost.
Why post work in progress at all?
Any manufacturer has money “in transit” at all times: paper that has left the roll but is not yet a brochure, material consumed in step one while step two has not started. Without WIP postings, your balance sheet is only correct at moments when nothing happens to be in production - and your result lands at arbitrary moments instead of at completion.
Manufacturing accounting solves that with one fixed principle: consumption is debited to a work-in-progress account during production, and credited to the matching settlement account on completion. Between those two accounts the balance should be zero - unless something is genuinely in production. That open balance is your work in progress. It is the same control logic as a suspense account: a balance that does not clear points to work still running (or to an error).
The building blocks: cost elements, journals and links
In the setup shown in the video, everything revolves around cost elements: per type of cost (paper, machine hours, surcharges) you define which accounts get debited and credited, in which journal. Those cost elements then attach to the operation in two places:
- Product categories (Inventory): all paper types fall into the category “paper”, and that category points to the WIP posting flow for paper.
- Work centers (Manufacturing): the printing press and the enveloping machine each carry their own cost element, so machine costs land on the right account per operation.
The surcharge cost element is the special one: it defines an uplift percentage on a base - in the demo 10% on paper consumption, as absorption for indirect costs. The surcharge is calculated and posted automatically the moment the relevant step is marked done. No manual journal entries, no forgotten overheads.
One detail decides when postings happen: the bill of materials records per component in which operation it is consumed (the “consumed in operation” column). The paper is consumed in the printing step - so that is where the WIP posting arises, not at the end.
The posting flow, step by step
The video follows a manufacturing order of 1,000 units through two operations (printing and enveloping) - a print-shop example, but the principle is the same for any production floor:
- Work order “printing” done - three postings arise immediately: WIP paper against paper (the material value), the automatic 10% surcharge against absorption, and WIP production against production absorption (the machine costs). All of it is visible in the trial balance straight away.
- Work order “enveloping” done - same principle for the second step: material, semi-finished goods and production costs added.
- Complete the manufacturing order (“produce all”) - the finished product is booked into stock at standard cost, and the difference against actual production costs goes to a variance account. In the demo the variance is negative: production was more expensive than calculated - exactly the signal a manufacturer wants to see, per order.
- Deliver and invoice - the delivery is validated, the invoice confirmed, and revenue appears in the books.
The proof sits in the trial balance at the end: every WIP account nets out against its settlement account (debit 50, credit 50), and what remains is the result - built from revenue, cost at standard price and the efficiency variance. If an order is still running, you see exactly for what amount.
Analysis: per manufacturing order, even per customer
The same figures can be viewed from the production side: Manufacturing → Reporting → Cost analysis shows what sits in the books, with drill-down to the underlying manufacturing orders. That supports reporting per manufacturing order, and even per customer - useful when you want to know which orders or customers you actually earn on.
Honest about the status
What the video shows is a first version of this setup, built to demonstrate the principle. Labour costs and subcontracted work are not in the demo yet (both can be configured with standard Odoo means - for subcontracting see also subcontracting with full traceability), and edge cases such as cancelling or interrupting a manufacturing order still need finishing. The definitive setup - which cost elements, which surcharges, which chart of accounts - is decided per company during implementation, fit-gap first. That is how customisation on top of accounting should come about: prove the principle first, build for production second.
Frequently asked questions
What is manufacturing accounting? The administrative side of producing: material, machine costs and surcharges are posted to work in progress during production and settled to finished-goods stock on completion. Your balance sheet shows what is in production at any moment.
Does Odoo post work in progress per production step out of the box? Standard Odoo posts stock moves and cost of goods on completion, but no fine-grained WIP per operation with surcharges and absorption accounts. That takes an additional module, as shown in the video.
How does a standard cost price work in Odoo manufacturing? Finished goods are booked into stock at standard cost; the difference against actual production costs lands on a variance account. Per period you see whether your costing holds up.
Can surcharges be posted automatically? Yes - per cost element you define a percentage on a base (for example 10% on material consumption as overhead absorption). Posting happens automatically when the step is marked done.
Can I analyse the production result per order or per customer? Yes, via manufacturing cost analysis, with drill-down to the underlying manufacturing orders.
Why do the WIP accounts net to zero? Every debit during production is credited to the settlement account on completion. Zero balance means: nothing left in production. An open balance is your work in progress - the built-in control of this posting flow.
Want to know what manufacturing accounting would look like for your production? Book a free Odoo scan - we walk through your production steps and cost structure, and we are honest about what works standard and where configuration or customisation is needed.
Read more: Odoo for manufacturing companies · Can Odoo run your production floor? · Subcontracting with full traceability · What does an Odoo implementation cost? · The TARGET method