Skip to content

Insights

How to run a trading and distribution business on Odoo.

Landed costs, multi-currency purchasing, and credit control — so the margin you quoted is the margin you actually bank.

Container terminal at a trading port

19 July 2026 · By Muhammad Salman Ali Khan · Knova Digital Solutions

Here is how a trading business loses money while feeling profitable: you quote a customer off your purchase price, add your margin, and send the invoice already picturing the number landing in the bank. Then freight lands. Then duty. Then clearance charges, and a week or two of storage because the shipment sat at the port longer than planned. By the time the true landed cost is known, the margin you quoted was fiction — you priced against a number that was never the whole story, and nobody caught it until the container was already gone.

That is not the only leak. Stock sits across two or three warehouses, tracked in spreadsheets that are accurate on the day someone last updated them and wrong every day after. You buy in dollars or euros and sell in dirhams, and the exchange-rate movement between purchase and payment quietly eats a point of margin nobody notices until the accountant asks why gross profit does not match what everyone expected. Credit limits live in someone's memory, not in the system, so the customer who still owes you from March gets approved for another order in June. And replenishment happens on gut feel — reorder when someone remembers, not when the numbers say to. None of it looks like one dramatic failure. It looks like a business working hard and still unable to explain why the bank balance and the reported profit disagree.

What standard Odoo gives you — and where it needs shaping

Odoo's inventory, purchasing, and sales modules are genuinely strong ground for a trading business. Multi-warehouse stock, purchase and sales workflows, pricelists, and multi-currency accounting all come standard, and they work well. What standard Odoo will not do on its own is enforce discipline. It will not fold freight, duty, and clearance into cost of goods unless landed costs are configured and applied on every receipt, not just when someone remembers to. It will not build the tiered pricelist and discount structure that matches how you actually sell. It will not stop an over-limit sales order unless credit control is switched on and wired into the order flow itself. And it will not reorder stock intelligently unless minimums, maximums, and lead times are set per product and per warehouse, not left as one blanket setting for everything. That configuration is exactly the layer we build around the trading and distribution businesses we work with across the UAE and GCC.

The workflow: from purchase order to banked margin

  • 1. Purchase order, in the supplier's currency. You buy from Shanghai in dollars or Hamburg in euros — the PO is raised and tracked in that currency from day one, so the real cost is visible immediately, not converted later at whatever rate someone happens to remember.
  • 2. Landed costs allocated the moment goods are received. Freight, duty, customs clearance, and storage are captured against the shipment and allocated across the goods received — by value, weight, or quantity — so the stock valuation in the system is the true cost, not just the number on the supplier's invoice.
  • 3. Putaway and transfers across every warehouse. Stock lands in the right warehouse and the right location, and moves between sites as tracked internal transfers, so "how much do we actually have" has one answer, not three spreadsheets that quietly disagree.
  • 4. Pricelists and credit-checked sales orders. Customers price off structured pricelists — by tier, by volume, by category — and a sales order for a customer already over their credit limit stops at the order screen, not after the goods have left the warehouse.
  • 5. Replenishment on rules, not memory. Minimum and maximum stock levels, supplier lead times, and reorder points per product and per warehouse drive purchasing automatically, so nobody is deciding what to reorder from a gut feeling on a Tuesday afternoon.
  • 6. Batch and expiry tracking where it matters. Foodstuff traders and anyone moving perishable or date-sensitive lines get batch numbers and expiry dates tracked through receipt, storage, and sale, so a recall or a "what's expiring this month" question is a report, not a warehouse walk-through.
  • 7. Margin visible per order, per product, per customer. Because landed cost sits on the stock and the sale sits on the invoice, the margin the system shows at invoicing is the margin actually made — not the number hoped for at the quoting stage.
  • 8. Receivables and collections that chase themselves. Invoices, ageing, and follow-ups run off the same record that set the credit limit in the first place, so collections becomes a report you glance at, not a mystery you investigate every month-end.

What management finally sees

Because every purchase, shipment, and sale sits on one system, true margin is visible by product, by customer, and by shipment — not estimated, not debated in the Monday meeting. Stock-cover days show what runs out and when. Slow movers surface on their own, instead of quietly tying up capital in a warehouse corner nobody checks. And with our AI Connector, someone can just ask: "what is our true margin on imported foodstuff this quarter?" — and get the answer from live data, not a spreadsheet built specially to answer it.

How we implement it

We start with your supplier list, your current stock, and however costs are tracked today — usually a spreadsheet, sometimes just a filing cabinet, and that is fine, it is exactly what we are here to fix. We configure landed costs, pricelists, credit control, and replenishment rules around how you actually buy and sell, not a generic template. Most trading and distribution businesses go live in six to ten weeks. And it comes with our guarantee: you see the system running on your own stock and your own customers before you pay, and if we miss the date we agreed, you walk away.

Frequently asked questions

Can standard Odoo handle landed costs without customisation?

Odoo has native landed cost functionality, so the mechanism exists out of the box. What is usually missing is the discipline around it — freight, duty, and clearance have to be entered against every shipment, every time, allocated consistently, or the stock valuation quietly drifts from reality. We configure the process and the rules so it happens automatically, not when someone remembers.

How does the system handle buying in foreign currency and selling in dirhams?

Purchase orders and vendor bills are raised and tracked in the supplier's actual currency — dollars, euros, whatever you buy in — while sales run in dirhams, and Odoo's multi-currency accounting keeps both sides reconciled at the real exchange rate on each transaction date. That stops FX movement from disappearing quietly into cost of goods where nobody notices it until year-end.

Can Odoo enforce customer credit limits automatically?

Yes. Credit limits are set per customer, and once switched on, a sales order that would push a customer over their limit is blocked or flagged for approval before goods leave the warehouse — not discovered on the ageing report a month later. It has to be configured and enforced deliberately; standard Odoo will not do this without that setup.

How long does it take a trading or distribution business to go live on Odoo?

Most go live in six to ten weeks, depending on how many warehouses, suppliers, and product lines are involved, and how clean the existing stock and pricing data is. We phase it so purchasing, receiving, and landed costs go live first, with pricelists, credit control, and reporting close behind — backed by our on-time-or-free guarantee.

Ready to build Odoo around your business?

Book a discovery call and talk to someone who has done this before.

See it working first Pay when satisfied On time, or it's free
Book a discovery call