You quote from gut feel, win the job — and find out at month-end whether it actually made money.
Somewhere in the office there is a costing sheet that was accurate on the day it was built. Since then material prices have moved, specs have changed, and quoting has quietly become experience plus a safety margin. Most months it works — but you cannot see which jobs are leaking until the accounts say so, weeks after the price was set.
—— Sound familiar?
You know this problem by these symptoms.
Quotes start from last year's cost sheet plus a percentage that feels safe, and nobody can say whether the safety is still there.
Material prices have moved three times since the costing file was last updated, but quotations still go out on the old numbers.
Two jobs that looked identical at quotation came back from the floor with very different profits, and nobody can explain the gap.
Scrap, rework and overtime all disappear into one overhead line, so no product is ever the one losing money.
One senior person prices every job from memory, and quotations queue up whenever they are busy or on leave.
The true cost of a product is assembled from pieces that live in different places: supplier prices in accounting, hours on the shop floor, freight on a forwarder's bill, scrap in nobody's records. No spreadsheet joins those pieces per product, so the costing file is a snapshot that starts drifting the day it is saved. Quoting from gut feel is not carelessness — it is the only method the data leaves available.
—— The way out
How Odoo closes this gap.
A BOM that knows today's component prices
Odoo costs components with real methods — FIFO or average cost — so every receipt updates what a part actually costs, including when a supplier raises a price. Multi-level bills of materials roll those figures up to the finished product, and computing the price from the BOM refreshes product cost from live data instead of last year's sheet. When an input price moves, your cost moves with it.
Actual cost per manufacturing order
Work orders in Odoo Manufacturing record the real time spent at each work centre, and each work centre carries an hourly rate covering labour and machine. The manufacturing order's cost analysis then shows planned versus actual for that specific job — including scrap declared on the order. Two "identical" jobs stop being a mystery, because each one carries its own numbers.
Imported materials carry their full landed cost
Odoo's landed costs spread freight, customs duty and insurance across the items on a receipt — by value, weight or quantity — so an imported component is valued at what it really cost to get onto your shelf. That figure flows on into the BOM roll-up and the margin reports. The supplier invoice stops masquerading as the whole cost.
Margin on the quotation, before you send it
Sales orders in Odoo show margin per line and per order, calculated from the current product cost rather than the salesperson's memory. For made-to-order work, quotation templates and the product configurator price variants consistently, so a custom spec is costed the same way every time. Margin analysis by product and customer then shows exactly where the leak was.
—— How we run it
The transition, managed properly.
Pilot on the products that pay the bills
We start with one product family — usually the one carrying most of your revenue — and build its BOMs, routings and cost rules first. The scope and price of that phase are fixed in writing before it starts.
Costing proven against your accounts
For the first cycles, Odoo's cost figures run alongside your current sheet, and we walk through every variance with your finance team until each one has an explanation. The old costing file retires only after the system has out-argued it.
Trained on live orders, same consultant throughout
Production and finance learn on their own BOMs and open manufacturing orders, in Thai or English. The consultant who scoped the work stays with you from the first call through go-live.
—— FAQ
Questions teams ask about this problem.
Our BOMs are incomplete or live in Excel. Is that a blocker?
It is the normal starting point. Building accurate BOMs for your top products is the first task of phase one, not a precondition for it — we import what exists and fill the gaps with your production team on the floor. Products you rarely make can wait for a later phase.
Standard, average or FIFO — which costing method should we use?
Odoo supports all three, set per product category, so the honest answer is: it depends on how volatile your input prices are and how your accountant wants inventory valued. We work through the choice with your finance team during scoping, before anything is configured — changing method later is possible but has accounting consequences, so it is worth deciding properly once.
Can sales see the margin before sending a quote — without seeing everything else?
Yes. Margin shows on each quotation line, calculated from the current product cost, so a bad price is visible before it reaches the customer. Access rights control who sees cost and margin figures — you decide whether that is every salesperson or only the people who approve pricing.
Do we need Odoo Enterprise for real costing?
Not for all of it. BOM cost roll-ups, FIFO and average costing, landed costs and quotation margins work on the Community edition, whose licence is $0. Capturing actual shop-floor time through work orders and work centres is part of Enterprise's manufacturing features — if your case needs it, Odoo bills you directly and we never mark the licence up.
Let's find out whether Odoo actually fits your business.
A short call, an honest answer. If it isn't the right system for you, we'll say so.