Purchasing, multi-warehouse stock, B2B sales, intra-EU VAT and Intrastat: the Odoo app stack that really runs a Luxembourg trading business, and the one you should not switch on too soon.
In short. Trading means buying to resell, often across borders. The Odoo apps that really matter for this business come down to five blocks: Purchase to control spending, Inventory for multi-warehouse stock and its valuation, Sales for B2B and per-customer pricing, Accounting configured for PCN 2020, and the fiscal positions that handle intra-EU VAT. The rest (CRM, dashboards, e-commerce) is added once the need is proven, not before. The classic mistake is not missing an app, it is switching ten on too soon.
A Luxembourg trading company lives on an equation that is both simple and fragile: the margin is thin, stock ties up cash, and goods cross borders constantly. A badly calibrated ERP turns those three constraints into three blind spots. Here are the Odoo apps that really run a wholesale and trading business in Luxembourg, what each one brings, and the order to deploy them without drowning.
What a trading company expects from an ERP
Before naming apps, name the need. A trading company must know, at any moment, what it holds in stock and what that stock is worth, what it has ordered but not yet received, what it has sold but not yet delivered, and what real margin it makes once landed costs are taken into account. All while staying compliant on a VAT that changes with the origin and destination of each flow. No spreadsheet holds that equation past a few dozen references. This is precisely an ERP's ground, provided you switch on only what serves.
The five apps that run the business
Purchase: control what goes out before it goes out
For a trading company, money leaves first at the suppliers'. The Purchase app structures the chain, from the request for quotation to the purchase order, then to receipt and the three-way match between order, receipt and bill. In practice, you pay only for what you ordered and received, and any price or quantity gap shows up at once instead of surfacing months later. Reordering rules trigger orders as soon as an item drops below a threshold, factoring in the supplier lead time. We detail this circuit in our article on purchase management in Odoo.
Inventory: stock, and above all its value
The Inventory app handles receipts, deliveries, transfers between warehouses, lot numbers and cycle counts. But for a trading company, the point is not only to have the right quantity on the shelf: it is to have the right stock value in the books. With automated valuation, every inbound and outbound move generates its entry, so stock appears in class 3 of the PCN 2020 at its real value on an ongoing basis, at average cost or FIFO, not once a year at the count. This is the subject of our guide to stock management in Odoo, where the warehouse and the books finally tell the same story.
Sales: B2B, its pricing and its terms
A trading company rarely sells at list price. The Sales app handles price lists by customer or by volume, negotiated discounts, recurring quotes and direct conversion to an invoice. Coupled with stock, a sales order reserves the goods, and delivery triggers invoicing without double entry. That is what avoids the classic trading pitfall: selling a quantity you don't have, or billing a price other than the one negotiated.
Accounting: the Luxembourg foundation
None of this is worth anything if the accounting behind it is wrong. The Accounting app must be configured for PCN 2020, Luxembourg VAT, the FAIA export and eCDF filing. Set up well, it receives the purchase, sales and stock entries automatically, so returns are prepared on already-clean data. Set up badly, it produces wrong drafts faster than any spreadsheet.
Fiscal positions: the VAT that follows the goods
This is the most sensitive point of a cross-border trading company, and it is not handled invoice by invoice but once, in the fiscal positions. A sale to a taxable customer in another member state goes out VAT-free under the reverse charge, provided the VAT number is validated on VIES and the correct wording is on the invoice; an intra-EU purchase triggers the reverse charge on arrival. These settings feed the eCDF return and the recapitulative statements directly. We detail this configuration in our article on intra-EU VAT in Luxembourg.
Setting up or taking over a trading business and want the right Odoo stack from day one, not in two years? Let's frame it with you.
Frame my Odoo projectThe stack at a glance
| Odoo app | What it brings a trading company | Deployment priority |
|---|---|---|
| Purchase | Request for quotation, purchase order, receipt, three-way match, reordering | Immediate |
| Inventory | Multi-warehouse stock, ongoing valuation, cycle counts, lots | Immediate |
| Sales | Per-customer pricing, discounts, stock reservation, invoicing tied to delivery | Immediate |
| Accounting | PCN 2020, VAT, intra-EU fiscal positions, FAIA, eCDF | Immediate |
| Supplier bill OCR | Automatic capture of non-ordered invoices | Soon after |
| CRM | Tracking B2B prospects and deals | When the sales team warrants it |
| Dashboards | Margin, stock turnover, cash in real time | Once the base is clean |
| e-commerce | B2B catalogue online, connected to stock | If an online channel exists |
Landed costs: the margin many forget
A trading company that imports rarely pays only the purchase price: transport, insurance and customs duties add to the real cost of the goods. Odoo lets you fold these landed costs into the stock value, rather than leaving them in undifferentiated expenses. The difference is not cosmetic: without them, the margin shown on each sale is overstated, and you think you earn more than you do. This setting is decided with the accountant, because it touches both stock valuation and the result.
Intrastat: the duty that arrives with volume
As soon as trade in goods with the European Union crosses certain thresholds, STATEC expects an Intrastat declaration every month, separate from VAT. A trading company buying in Belgium and reselling in France often crosses those thresholds without noticing. The good news: the data required (commodity codes, countries, values) already exists in the invoices, provided the nomenclature code and country of origin are filled in on the product records. A declaration produced from Odoo then becomes an end-of-month check rather than a manual rebuild. We detail thresholds and deadlines in our guide to the Intrastat declaration in Luxembourg.
What Odoo does not do on its own
Let's be clear. Odoo produces the Luxembourg VAT return very well, but the intra-EU recapitulative statement and Intrastat are prepared from filtered reports, then uploaded to the eCDF and IDEP.WEB portals: not a single button, something to plan for at configuration. Likewise, stock valuation and the folding-in of landed costs are not guessed: they are decided with the accountant to stay consistent with the annual accounts. A trading company that switches on the modules without setting this foundation gets a tool that runs and books that cannot be verified.
In what order to deploy
The right reflex is to start simple. Begin with the quartet Purchase, Inventory, Sales and Accounting, correctly wired to PCN 2020 and the fiscal positions, with a single warehouse and only the references actually tracked. Add OCR for non-ordered invoices, then dashboards once the base is clean. CRM and e-commerce come when the sales team or an online channel warrant it. A trading configuration is judged by what it simplifies, not by what it can do. This project sits within a broader Odoo decision, which we place in context in our Odoo in Luxembourg guide for SMEs.
A trading business to equip without over-configuring, from stock to intra-EU VAT? Let's take stock together.
Request a callFrequently asked questions
Which Odoo apps do you need for a trading company in Luxembourg?
The useful foundation is four modules: Purchase, Inventory, Sales and Accounting configured for PCN 2020 and Luxembourg VAT. Invoice OCR, dashboards, CRM and e-commerce are added later according to real need, not at launch.
Does Odoo handle a trading company's intra-EU VAT?
Yes, through fiscal positions. A sale to a taxable customer in another member state goes out VAT-free under the reverse charge, subject to a validated VAT number, and an intra-EU purchase triggers the reverse charge on arrival. These flows feed the eCDF return and the recapitulative statements.
Does Odoo account for landed costs on stock?
Yes. Additional costs such as transport, insurance and customs duties can be folded into the value of the goods in stock, which gives a true margin instead of an overstated one. This setting is decided with the accountant.
Do you need to run several warehouses from the start?
Rarely. Odoo handles several warehouses and locations, but a trading company most often starts with a single warehouse and adds locations only when the flow warrants it. Multiplying locations too early complicates tracking with no benefit.
Does Odoo generate the Intrastat declaration automatically?
Odoo structures and values the required data from invoices, provided commodity codes and countries of origin are filled in on the product records. The final filing is done on IDEP.WEB, the STATEC portal.
Further reading
- Purchase management in Odoo: from purchase order to vendor bill
- Odoo and stock management: inventory, valuation and compliance
- Intra-EU VAT in Luxembourg: reverse charge and recapitulative statements
- Intrastat declaration in Luxembourg: thresholds, deadlines and preparation in Odoo
- Odoo in Luxembourg: is it the right ERP for your SME?
Why Advena?
An integrator installs the modules; an accounting firm keeps the books. In a trading company, where intra-EU VAT, stock valuation and Intrastat hang together, splitting the two means wiring a tool that no one really connects to the accounting. We do both in the same Odoo: the stack is configured by people who also keep your books under PCN 2020, with a fee agreed in advance from 325 € per month and a named contact. We start simple and add the refinements when they earn their place.
Tell us what you buy, where and to whom you resell, and we'll tell you which Odoo stack really runs your business.
Talk about your trading business