Fleet, fuel and tolls, runs and CMR notes, cross-border VAT and Intrastat: a tour of the Odoo apps that matter to a haulier, and what each one really fixes, truck by truck.

In short. For a Luxembourg transport company, four Odoo building blocks do most of the work: Fleet to track each truck, its contracts and its costs, Purchasing for fuel, tolls and maintenance with no re-keying, Sales and Invoicing for runs and cross-border clients, and Accounting for transport VAT, the reverse charge, Intrastat and the PCN 2020. Tied to an analytic axis per vehicle, these apps finally give the real cost of each truck, as you go. The bookkeeping behind it fits into a fixed fee from €325 per month, everything included.

In transport, margin is not lost at the balance sheet, it is lost on the road: a tank badly posted, a truck running empty, a foreign toll never rebilled, a loss-making run no one saw pass. Many hauliers run all this on a spreadsheet of runs, fuel cards and a pile of receipts, then discover the real margin at the balance sheet, eight months too late. Here is which Odoo apps do what in a transport company, and what each one really changes, truck by truck.

Why an ERP changes things for a haulier

The sector's problem is not a lack of tools, it is their scattering. The runs live in a planner, the fuel on card statements, the maintenance at the garage, the CMR notes in the cab, and the accounts at a firm that sees nothing before the close. Between these silos, one piece of information is lost every time: the real cost of a vehicle. You know fuel cost a lot, but not which truck eats your margin. An ERP brings these flows into one place, so the same data serves vehicle tracking, the client invoice, the accounting entry and the VAT return. That is what lets you spot a truck or a run that is slipping this month, while you can still renegotiate a contract, not at the stocktake. It is the management-side counterpart of what we describe in our guide to transport company accounting.

Fleet: each truck becomes a cost unit

This is the core of the setup. The Fleet app holds each vehicle's record: registration, first-registration date, assigned driver, category, roadworthiness test. Lease or finance contracts are recorded with their term, monthly payment and contractual mileage, and Odoo alerts you as a contract or a deadline approaches. Above all, costs attach to the vehicle: maintenance, tyres, fuel, insurance, repairs. Coupled with analytic accounting, this produces a real cost per truck, not one blurred line of expense where everything blends together.

The good practice we put in place is to treat each vehicle as an analytic axis and, where the activity allows, each run or each client as a second axis. You then read margin per truck and per trip, not an unreadable overall margin. A truck on an operating lease stays an expense and does not appear on the balance sheet; a truck bought outright enters as an asset and depreciates under the PCN 2020, a mechanism detailed in our article on fixed assets in Odoo. For a mixed fleet, Odoo holds both logics in parallel without confusing them.

Purchasing: fuel, tolls and maintenance without re-keying

This is the item that makes or breaks a transport year, and the hardest to track cleanly. Fuel cards generate dozens of entries per vehicle each month, foreign tolls pile up, maintenance lands in fits and starts. Lumped into a single expense account, these amounts say nothing useful. The Purchase app handles the order, the receipt and the match between what is ordered, delivered and invoiced before any payment, then posts each invoice to the right vehicle. We describe this circuit in our article on purchase management in Odoo.

Costs advanced by drivers on the road, meals, overnight stays, small repairs, come up separately through expense reports, whose treatment we set out in our guide to expense reports in Luxembourg. Bringing all this into the same tool, as you go, avoids the double circuit and the month-end oversight, and ties every cost to the truck that generated it.

Your fuel and tolls fall into one expense line that never says which truck costs what? We wire it all up, vehicle by vehicle, in Odoo.

Talk about your Odoo project

Sales and billing: runs, CMR notes and cross-border clients

On the revenue side, Odoo turns the quote into an order, then an invoice, with no re-keying. For a haulier, the point is to tie each billed service to the run and the vehicle concerned, so that margin reads where it is actually made. The documents specific to the trade, the CMR consignment note, delivery notes, certified copies of the Community licence, file in Odoo Documents next to the client record, instead of living in the cab and vanishing at the first request for proof.

The sensitive point stays cross-border billing. A Luxembourg haulier rarely charges simple VAT, because its clients and its trips cross borders. Sorting between domestic transport, an intra-EU service and an export-related operation is not done invoice by invoice by hand: it is settled once, in the fiscal positions, as we explain below and in our guide to intra-EU VAT in Luxembourg.

Accounting and VAT: reverse charge, Intrastat and PCN 2020

This is where the coupling pays off. Once validated, sales and purchase invoices become entries on the PCN 2020 structure, with no double entry. The general rule for business-to-business services applies to transport: carriage of goods invoiced to a taxable client established in another Member State is in principle taxable in the client's country, which accounts for the VAT under the reverse charge. You then invoice without tax, with the Reverse charge mention, and file a recapitulative statement. Purely domestic transport within Luxembourg carries Luxembourg VAT at the standard rate of 17%. A wrongly set fiscal position produces invoices that look correct and a return that is false: it is the most common error we see when taking over a transport file.

On top of that comes an obligation many hauliers and traders discover through a letter from STATEC: Intrastat, the monthly statistical declaration of goods movements with the EU, once certain thresholds are crossed. The data it asks for, commodity codes, partner country, values, already exist in the invoices: kept in Odoo, they are edited rather than rebuilt by hand, as we detail in our article on the Intrastat declaration in Luxembourg. The initial set-up, PCN, fiscal positions and eCDF, conditions everything else; it is described in our guide to Odoo in Luxembourg.

Drivers: payroll to tie to the right truck

In a country where nearly one employee in two is a cross-border worker, a haulier almost always employs drivers living in Belgium, France or Germany. Odoo does not offer a native Luxembourg payroll localisation, a point we detail in our article on Odoo and payroll in Luxembourg. The point, for a haulier, is less to run payroll in Odoo than to tie its result in cleanly, so that a driver's loaded cost posts to the right vehicle or activity, and not into an undifferentiated wage mass. On complex cross-border situations, driving time, posting, trade-specific allowances, we inform you and point you to the right social-security contact rather than deciding for you.

What Odoo does not do, and we will tell you

Let us be straight, because it will save you a disappointment. Odoo is a management and accounting tool, not a transport operations package. It will not optimise your runs the way a dedicated TMS does, does not read tachograph data and does not manage your drivers' regulatory driving time. What it does is take your runs, your vehicles and your purchases and turn them into tracked management and correct accounts. For a firm that already runs a TMS or embedded telematics, the right approach is to keep that tool for operations and plug Odoo in behind, for management, billing and accounts. We tell you this at the scoping stage, not along the way.

A concrete case

Example given for illustration; it does not correspond to a real client. An eight-truck haulier based in Bettembourg tracked its runs on a spreadsheet and its fuel on card statements, margin known at the balance sheet. Two vehicles were running at a loss without anyone seeing it in time. By moving the fleet, purchasing and billing onto Odoo, with an analytic code per truck, management saw in the second month that one vehicle was piling up fuel and maintenance well beyond what it earned, reassigned that truck to more profitable trips, and started rebilling the foreign tolls it had been forgetting.

The cost, and the 70% grant

A first serious Odoo implementation for a transport SME falls within the scope of Luxembourg's digitalisation grants. The Ministry of the Economy's SME Packages - Digital programme reimburses up to 70% of the eligible costs of a project whose quote sits between €3,000 and €25,000 excluding VAT, provided the application is filed before signing. We detail the conditions and the order of steps in our article on digitalisation grants, and the ballpark of a project in the one on Odoo pricing in 2026.

Want to know at last which truck makes money and which loses it? Let's talk about your fleet.

Request a diagnostic

The Advena difference

An integrator installs Odoo and shows you how to create a vehicle record. An accounting firm asks for your invoices at month-end. We do both in the same tool: we set up the fleet tracking and the analytic axis per truck, and we keep the accounts behind it, on the PCN 2020, with cross-border VAT, the reverse charge and Intrastat set up right the first time. In practice, your cost per truck and your accounts live in the same place, in real time, with no double entry or year-end rework. The bookkeeping fits into a fixed fee from €325 per month, everything included, described in our article on what an accounting firm costs. For a haulier with heavy international structures, VAT registrations in several countries, systematic cabotage, customs issues, we point you to the right specialist rather than improvising.

Frequently asked questions

Is Odoo suitable for a transport company in Luxembourg?

Yes, for management and accounting. Odoo tracks the fleet, purchasing, the billing of runs, cross-border VAT, Intrastat and the PCN 2020, with an analytic axis per vehicle. It is not a transport operations package, though: it replaces neither a TMS for run optimisation nor tachograph reading. It plugs in behind those trade tools.

How do you track the real cost of each truck in Odoo?

By treating each vehicle as an analytic axis: fuel, tolls, maintenance, insurance and, ideally, the driver's payroll post to the truck concerned, and where relevant to the run. You get a margin per truck and per trip, instead of an overall margin that hides the loss-making vehicles.

Which VAT does Odoo apply to carriage of goods to another EU country?

The rate depends on the fiscal position set up. Carriage of goods invoiced to a taxable client established in another Member State is in principle taxable in the client's country, which accounts for the VAT under the reverse charge: invoicing without tax and a recapitulative statement. Domestic transport within Luxembourg carries Luxembourg VAT at 17%. The exact regime of each service is checked against your real activity.

Does Odoo handle a haulier's Intrastat declaration?

Odoo structures and values the data needed from your invoices, but Intrastat concerns goods movements, not the transport service itself. A haulier that also buys and resells goods, or whose activity includes trading, is subject to it once the STATEC thresholds are crossed. The final filing is done on IDEP.WEB.

Can an Odoo project for a transport company be funded?

Yes. The SME Packages - Digital programme reimburses up to 70% of the eligible costs of a project between €3,000 and €25,000 excluding VAT, if the application is filed before signing the quote. A haulier established in Luxembourg and meeting the SME criteria is eligible.

Going further

Why Advena?

We are the only Luxembourg accounting firm that deploys the ERP and keeps the books in the same tool. For a transport company, that means a tracked fleet and an analytic axis per truck set up by people who also know the PCN 2020, cross-border VAT and Intrastat, a bookkeeping fee announced in advance from €325 per month, a named account manager, and no surprise invoice. We inform you of the rule and apply it for you; on a complex international structure, we point you to the right specialist.

The behaviour described refers to Odoo 19, the latest stable version. VAT rules and Intrastat thresholds in force in September 2026, based on the indirect taxation portal and STATEC; conditions of access to the haulage profession on Guichet.lu; grant conditions on Guichet.lu. This article is for information and does not replace an analysis of your situation.

Tell us how your fleet runs, and we'll tell you what Odoo would change. No phantom quote.

Talk about your file