Bills of materials, manufacturing orders, subcontracting: Odoo covers what a small workshop needs. What decides the outcome is how your stock lands in the PCN 2020 accounts.

In short. Odoo Manufacturing rests on three objects: the bill of materials (the component list), manufacturing orders, and work orders attached to work centres. Subcontracting and kits are handled natively. For a Luxembourg workshop, the hard part is not technical: it is landing your stock in the right class 3 accounts of the PCN 2020. Get that wrong and the balance sheet tells a story no one can defend, while the gap in your product costing stays invisible.

A ten-person workshop in Ehlerange that assembles components bought in Germany, subcontracts painting in Belgium and delivers in Luxembourg does not have a production software problem. It has a cost traceability and stock valuation problem. Odoo handles both, but only if the accounting is wired in from the start.

How does Odoo Manufacturing work?

Odoo Manufacturing (the mrp module) builds production around the bill of materials of a finished product. The BoM lists components and quantities, and can carry the production operations. When a manufacturing order is launched, Odoo reserves the components, tracks their consumption, and creates the finished product in stock with its value.

The most structural field is the BoM type. The Odoo 19 documentation lists three, and the choice is not cosmetic:

BoM typeWhat Odoo doesTypical case
Manufacture this productCreates a manufacturing order, consumes components, produces a valued finished itemYou assemble, and the finished product exists in stock
KitNo manufacturing order: the product breaks down into components at deliveryA commercial bundle, sold but never stocked as such
SubcontractingProduction is done by a third party, with components sent and finished goods received trackedSurface treatment, machining, finishing entrusted to a partner

The classic mistake is declaring as "manufacture" what is really a kit. You then end up validating phantom manufacturing orders every week for a product nobody ever makes.

Work orders: switch them on, or not

Work orders are off by default. You enable them under Manufacturing > Configuration > Settings, in the Operations section. Once active, each operation on the BoM (cutting, assembly, inspection) becomes a step tied to a work centre, with its time and hourly cost.

Should you enable them? It comes down to one question: do you want to know the labour cost per product? If yes, work orders are essential, because it is the hourly cost of work centres that feeds the product cost. If you make three simple references and treat labour as a fixed cost you have accepted, enabling them adds daily data entry for little in return. Plenty of workshops switch them on by reflex, tire of them within three weeks, and are left with permanently open work orders that distort every reported time.

Not sure which of your products actually make money?

Review your product costing

Subcontracting, the most common flow in Luxembourg

Few Luxembourg workshops do everything in-house. Subcontracting is enabled in the same settings, and the Odoo documentation describes three flows that differ on a single question: who supplies the components?

  • Basic subcontracting: the subcontractor sources the components. You buy a finished product, with BoM traceability on top.
  • Dropship subcontractor on order: you buy the components from your supplier, who ships them straight to the subcontractor. They never pass through your warehouse.
  • Resupply subcontractor on order: you send your own components from your stock.

One point the tutorials skip, and it matters when your subcontractor sits in Belgium or Germany: moving goods to another Member State without transferring ownership is not a sale, but it is not neutral for your reporting obligations either. The VAT treatment and how those movements land in your Intrastat declaration should be validated before you scale the flow, not after your first audit. This remains general information and does not replace an analysis of your situation.

Stock valuation: where it is won or lost

This is the subject pure-play integrators handle worst, because it does not live in Odoo. It lives in your balance sheet.

Luxembourg's standard chart of accounts distinguishes, in its class 3, raw materials and consumables, work in progress, finished goods and merchandise, and payments on account. Those headings appear as such in the balance sheet. A manufacturer must therefore be able to state, at closing date, what it holds in each category.

In Odoo, that split does not depend on the Manufacturing module: it depends on product categories, which carry the stock valuation accounts. If your raw materials, work in progress and finished goods share one category, they share one account, and the PCN 2020 distinction simply disappears. The correct setup is one category per nature of stock, each mapped to the right account, consistent with the Luxembourg accounting configuration of your database.

Two further settings complete the picture, and both belong in a conversation with your accountant rather than a random tick box:

  • Automated or manual valuation: automated means every stock move generates a journal entry. It is the only way to keep the balance sheet current, but it assumes the accounts are right, otherwise you produce wrong entries continuously.
  • Costing method: standard price, FIFO or average cost. Standard price is comfortable for running a workshop, provided the standards are actually revised. Otherwise the gap between standard and real cost builds up quietly, and no one sees it before the stock count.

The mechanics of counting and valuation are covered in our article on inventory management in Odoo.

Where a workshop's margin actually goes

When a manufacturing SME finally sees its real product cost, the surprise rarely comes from material prices. It comes from undeclared scrap, unbilled rework and underestimated machine time.

Odoo can make all three visible, on one condition: disciplined use. Declare scrap instead of "adjusting" the stock count at month end, record rework as separate manufacturing orders, and set a realistic hourly cost on work centres rather than leaving it at zero. Then link production to analytic accounts: that is where profitability per product line becomes readable, not in the profit and loss statement.

Illustrative case (given as an example, it does not correspond to a real client). An eight-person joinery values all its stock on a single account, with a standard cost frozen two years ago. Timber went up 20%, the standard did not. On paper, every order shows a 30% margin. In reality, two references have been sold at a loss for eighteen months. The fix is unspectacular: three product categories, a clean account mapping, standards revised twice a year. The following month, the two loss-making references left the catalogue.

FAQ

Can Odoo replace a proper MRP for a manufacturing SME?

For an SME workshop, yes: multi-level bills of materials, manufacturing orders, work centres, subcontracting and planning are covered as standard. Limits appear on very specific needs such as fine finite-capacity scheduling or regulated industry constraints, which call for an add-on.

Should work orders be enabled?

Only if you want to measure labour time and cost per product. They are enabled under Manufacturing, Configuration, Settings, in the Operations section. Without that need, they add data entry without adding information.

How does Odoo handle a subcontractor based abroad?

Odoo tracks components sent and finished goods received, across three subcontracting flows. The tax and reporting treatment of those cross-border movements depends on your situation and must be validated with your accountant, particularly for VAT and Intrastat.

Where are the PCN 2020 stock accounts configured?

On product categories, not on the Manufacturing module. Each category carries its own valuation accounts, so you need separate categories for raw materials, work in progress and finished goods to reproduce the PCN 2020 split in the balance sheet.

Standard cost or FIFO for a workshop?

Standard cost makes daily steering easier but requires the standards to be revised, or gaps accumulate. FIFO tracks reality more closely and needs less upkeep. Decide with your accountant, based on how volatile your purchase prices are.

Why Advena?

  • Odoo and Luxembourg accounting under one roof: mapping stock accounts to the PCN 2020 is not subcontracted to a third party.
  • Product costing that means something: work centres, scrap and analytic accounting configured together, not separately.
  • Clear fixed packages, no hourly billing: scope and price are set before we start.
  • Direct access to the founders: the partners handle your file.

Going further: Odoo in Luxembourg: is it the right ERP for your SME? · Odoo inventory management in Luxembourg · Odoo analytic accounting · Setting up Luxembourg accounting in Odoo · Intrastat declaration in Luxembourg

A workshop that knows its product cost makes better decisions than one that buys yet another piece of software.

Book a free diagnostic