Logistics Solution

Odoo for Logistics & Freight Forwarding

One job file per shipment: quoted, tracked mode by mode, cleared through customs, and reconciled to the books from booking to delivery.

Short answer: Can Odoo manage FCL, LCL, air and trucking shipments in one system? Yes. In the system we build, every booking — FCL, LCL, air, FTL or LTL, import, export or cross-trade — becomes one job file carrying its commercial, operational and cost detail together, moving through a guarded state machine from draft to booked, in transit, arrived, delivered and closed.

The challenge

Freight forwarding doesn't fit generic ERP. In the same shipment I'm looking at a quote, a booking, a set of milestones, a customs declaration and a costed job, all at once, moving through a different workflow depending on the mode — FCL, LCL, air or a trucking leg. Off-the-shelf sales and purchasing apps were never built to model buy/sell margin per shipment, duty and VAT as pass-through disbursements, or demurrage and detention free-time windows.

So the real job ends up running in a spreadsheet beside the system, with totals re-keyed in for invoicing — exactly where margin leaks and missed free-time deadlines hide. My fix: a data model built around the shipment itself, so commercial, operational, regulatory and financial detail all live on one record instead of three disconnected apps.

What we build in Odoo for this industry

Six pieces that work together as one system, not six separate apps stitched together after the fact:

Mode-Aware Shipment Job Files

Every booking — FCL, LCL, air, FTL or LTL, import, export or cross-trade — becomes one job file carrying its commercial, operational and cost context together. A guarded state machine (draft, booked, in transit, arrived, delivered, closed) enforces prerequisites like a carrier and ETD before booking, or an invoice before closure, no matter how the change is made. LCL and air jobs can consolidate into a master shipment rolling up container count, weight and volume across every house shipment on it.

Milestone & Risk Control Tower

A milestone template per transport mode plans each event — departure, arrival, customs, delivery — as an offset from ETD/ETA, then tracks planned against actual as the job moves. Demurrage and detention free-time windows count down automatically from arrival, with an alert before time runs out. A colour-coded risk flag — on track, watch, at risk — rolls lateness, expiring free time and any exception into one kanban control tower.

Customs Clearance With Automatic Duty/VAT

Each shipment can carry one or more customs declarations, gated through draft, submitted, under inspection, cleared and released — submission blocked until documents are received and the Bayan (declaration) number is on file. Duty is calculated per HS-code line from a tariff-rate master, and import VAT on value plus duty; both post as paired revenue and cost so pass-through tax nets to zero margin instead of inflating profit. Clearing the declaration ticks the customs milestone, and a proforma invoice for duty, VAT and the clearance fee follows in one click — the same duty and VAT that becomes landed cost on the importing customer's side, a problem I cover in Odoo for trading and distribution companies in the UAE.

Rate-Card Quoting With Margin Guardrails

Freight quotations extend the standard sales order with lane, mode, incoterm and cargo detail, priced automatically from contract, spot or tariff rate cards — surcharges and minimum-charge floors included — through a wizard showing live buy/sell margin per line and per quote. A quotation priced below a configurable minimum margin is blocked from confirmation until a manager approves it; re-pricing an approved quote to a worse margin revokes that approval automatically.

Shipment-Level Job Costing

Every job auto-creates its own analytic account the moment it opens, so every revenue and cost line booked against it feeds one live, reconciled margin from day one. Customer invoices are raised from those charge lines in one click; vendor bills are matched against the expected cost, with variance flags when a supplier bills more or less than budgeted. A finance dashboard rolls profitability up by shipment, lane, customer and mode, alongside jobs at risk and demurrage exposure.

Last-Mile Trip Execution & Automated Billing

A job can split into delivery trips, each pulling its route, client price and driver or diesel allowances from a standing rate card, and checking truck availability against open maintenance orders before dispatch. Marking a trip delivered — gated on proof of delivery — posts its revenue and allowance costs to the parent job automatically, and a monthly billing wizard rolls every customer's delivered trips into one invoice, one line per waybill. Shipments can also be grouped into projects that roll up volume, revenue, cost and margin across an engagement.

Odoo apps involved

This runs on standard Odoo, extended rather than replaced: Sales and CRM carry the opportunity to quotation, Purchase and Accounting handle vendor bills, customs duty/VAT and analytic costing, Inventory tracks container and consolidation detail, and Fleet and HR check truck availability and driver allowances. In total, this build spans 7 Odoo modules.

SalesCRMPurchaseInventoryAccountingFleetHR

Why freight forwarding is my core industry

Freight forwarding and transport is the industry I have gone deepest in. We designed and built a complete freight forwarding solution on Odoo 19 Enterprise, hosted on Odoo.sh, that Knova Digital now delivers as Knova Freight. It is live at a UAE freight forwarder and being rolled out at a UAE road freight and heavy-lift operator with branches in Abu Dhabi and Dubai.

Beyond the six pieces above, it reaches the parts of a transport business that usually stay in spreadsheets:

  • House and master shipments: one house job per shipment; LCL and air consolidate onto a master, with HB/L and HAWB on the house and MB/L and MAWB on the master.
  • Quotation control: a pricing-team step before sending, numbered revisions (R1, R2…), T&Cs per quote type and branded layouts.
  • GPS on every trip: iGeoTrack shows each truck's live position, odometer and driver, and stores actual distance, fuel, idle time and overspeeding against the planned trip.
  • Fleet and workshop: maintenance takes a truck out of service, parts come from the store or suppliers, external workshop repair orders, approved stock counts, job cards, and expiry reminders for registration, insurance, port gate passes, inspections and permits.
  • UAE HR and WPS payroll: document expiry reminders (passport, Emirates ID, visa, labour card, licence), multi-level recruitment approvals, fines, loans and advances recovered from salary, an Excel payroll register and the WPS SIF file.
  • Commercial controls: trucks for advance-payment customers cannot leave until paid; operations don't see amounts and sales don't see costs; disbursements stay separate from VAT-able services on the invoice; profit by job, lane, customer, branch and mode.

What it replaces is simple to describe: the Excel sheets quotes and trips lived in, manually prepared WPS files, and repair costs that were never tracked per truck. To have it implemented for your company, see Knova Digital's Odoo freight forwarding software and the Knova Freight product page.

Knova Freight in Odoo: screenshots

These are screens from the solution itself, on a demo database with made-up data (Knova Demo Freight LLC): the operations dashboard, the control tower, job charges with live margin, and the UAE customs board. The full quote-to-profit walkthrough is on Knova Digital's Odoo freight forwarding page.

Knova Freight Odoo 19 operations dashboard showing revenue, cost and margin per job, unbilled revenue, active jobs and the customs pipeline
Operations dashboard: revenue, cost, margin and unbilled revenue at the top, then active jobs, arrivals, demurrage risk, the customs pipeline and top customers by margin.
Knova Freight control tower board in Odoo with colour-coded sea, air and land freight jobs by status, ETAs and demurrage free-time warnings
Control tower: every active job by status (draft, booked, in transit, arrived), colour-coded, with ETA progress and free-time warnings.
Odoo freight job costing in Knova Freight: cost and revenue charge lines on a shipment job with revenue, cost, margin and margin percentage
Job charges: cost and revenue lines on the same job, so revenue, cost, margin and margin % are live on the shipment.
Knova Freight UAE customs clearance board in Odoo with declarations by stage and payable duty on each card
Customs board: declarations moving through draft, submitted, under inspection and cleared, with the payable amount on each card.

Why work with me

I'm Muhammad Salman Ali Khan, an Odoo Techno-Functional Consultant in Dubai and Head of Projects at Techbot Information Technology LLC, a UAE Odoo partner. Freight and logistics is one of several industries I implement in, backed by 10+ years, 100+ implementations, and certification across seven Odoo versions. I also run Knova Digital and Knova Cloud; to have this delivered through Knova Digital, see Odoo freight forwarding ERP.

10+ years, 100+ implementations Odoo v13 Certified Odoo v14 Certified Odoo v15 Certified Odoo v16 Certified Odoo v18 Certified Odoo v19 Certified Odoo v20 Certified

Frequently asked questions

Can Odoo manage FCL, LCL, air and trucking shipments in one system?
Yes. In the system we build, every booking — FCL, LCL, air, FTL or LTL, import, export or cross-trade — becomes one job file carrying its commercial, operational and cost detail together, moving through a guarded state machine from draft to booked, in transit, arrived, delivered and closed. LCL and air jobs can also consolidate into a master shipment that rolls up container count, weight and volume across every house shipment on it.
Does Odoo track demurrage and detention deadlines automatically?
Yes. I set up a milestone template per transport mode that plans each event — departure, arrival, customs, delivery — as an offset from ETD/ETA and tracks planned against actual as the job moves. Demurrage and detention free-time windows count down automatically from arrival, with an alert before time runs out, and a colour-coded risk flag rolls lateness, expiring free time and any exception into one kanban control tower.
Can Odoo calculate customs duty and VAT automatically on freight shipments?
Yes. Each shipment can carry one or more customs declarations, gated through draft, submitted, under inspection, cleared and released, with submission blocked until documents are received and the Bayan (declaration) number is on file. Duty is calculated per HS-code line from a tariff-rate master, and import VAT on value plus duty, with both posted as paired revenue and cost so the pass-through tax nets to zero margin instead of inflating profit.
Can Odoo stop staff from quoting a freight job below minimum margin?
Yes. Freight quotations we build extend the standard sales order with lane, mode, incoterm and cargo detail, priced automatically from contract, spot or tariff rate cards — surcharges and minimum-charge floors included — through a wizard showing live buy/sell margin per line and per quote. A quotation priced below a configurable minimum margin is blocked from confirmation until a manager approves it, and re-pricing an approved quote to a worse margin revokes that approval automatically.
Which Odoo modules does a freight forwarding company need?
In the build I run for freight forwarders, this runs on standard Odoo, extended rather than replaced: Sales and CRM carry the opportunity to quotation, Purchase and Accounting handle vendor bills, customs duty/VAT and analytic costing, Inventory tracks container and consolidation detail, and Fleet and HR check truck availability and driver allowances. In total, this build spans 7 Odoo modules.
Is international freight forwarding zero-rated for UAE VAT?
Generally yes. UAE VAT zero-rates the international transport of goods and related services, such as arranging the transport and customs clearance as part of that journey. A domestic leg qualifies only when it is supplied by the same supplier responsible for the international transport; a subcontracted domestic leg is normally standard-rated at 5%. Odoo's UAE localisation provides the zero-rated and 5% tax codes; your adviser should confirm the treatment of your contracts.
Can Odoo handle multi-currency freight jobs?
Yes. Odoo Accounting is multi-currency natively: a job can be quoted and invoiced in USD while carrier or agent bills arrive in EUR or another currency, with exchange rates applied per document and realised gains or losses posted automatically, so the job margin still reads correctly in AED.
Does Odoo work for a Jebel Ali Free Zone forwarder that also has a mainland company?
Yes. Odoo supports several companies in one database, each with its own chart of accounts, TRN and journals, sharing customers and services if you choose. A free zone entity and a mainland entity should be separate company records, not branches, because they are separate legal persons. I explain the setup in my guide to Odoo multi-company for UAE free zone and mainland groups.
Does your Odoo freight solution produce HB/L, MB/L, HAWB and MAWB?
Yes. Every shipment is one house job for sea, air or land, import or export. LCL and air shipments consolidate onto a master shipment, with the HB/L or HAWB on the house job and the MB/L or MAWB on the master, together with container and cargo details.
Can it track containers live from the shipping lines?
No, and I don't claim it does. Container tracking works through milestones planned against actual, with demurrage and detention countdown timers and alerts before free time runs out. Trucks are different: the iGeoTrack GPS integration shows their live position, odometer and driver.

Related guides

Two guides that sit next to this:

Want this mapped to your own freight operation?

Tell me how your shipments, customs clearance and last-mile delivery work today, and I'll give you a scoped, honest view of what building this into Odoo would take — at no cost.

Get a free business evaluation