Landed costs in Odoo add charges such as freight, insurance, customs duty and clearing fees to the value of a received shipment, so the cost of each product, and every margin after it, reflects what the goods really cost you. In Odoo 20 you post them against the receipt from the vendor bill that carries them. Odoo spreads each charge over the products by quantity, weight, volume, value or in equal parts, can restrict a charge to some products only, and corrects the cost of goods already sold. The products must use average cost (AVCO) or FIFO.
What an import costs on top of the supplier’s invoice
| Charge | Who bills it | Split method that usually fits |
|---|---|---|
| Sea or air freight | The forwarder | By Volume or By Weight |
| Insurance | The insurer or the forwarder | By Current Cost |
| Customs duty | Kuwait customs, often paid through the clearing agent | By Current Cost |
| Clearing agent’s fee | The clearing agent | By Quantity or Equal |
| Port handling and the trip to your warehouse | The port, the clearing agent or the transporter | By Volume or By Weight |
Kuwait applies the GCC common customs tariff: 5% on the CIF value for most goods, which means the goods plus freight and insurance to the port. Listed basic foodstuffs and some agricultural, medical and pharmaceutical items are exceptions, and tobacco carries 100%, according to the US International Trade Administration’s Kuwait guide (April 2026). Check the rate for each HS code with your clearing agent before you rely on it. Odoo does not work out the duty for you; you enter the amount on the customs declaration. Kuwait has no VAT, so there is no import VAT to track.
Set up landed costs in Odoo 20
- In Inventory → Configuration → Settings, Valuation section, tick Landed Costs and choose the Default Journal for the entries.
- Check the product categories of imported goods. Their costing method must be Average Cost (AVCO) or First In First Out (FIFO); products at Standard Price keep their cost, whatever the landed costs.
- Create a service product for each kind of charge, for example Customs Duty, Sea Freight and Clearing Fees. On its Purchase tab tick Is a Landed Cost and choose a Default Split Method.
- New in Odoo 20: on the same tab, Apply Landed Cost On limits a charge to the products you list, whenever they are in the shipment.
- Fill in weight and volume on imported products if you will split by them: Odoo multiplies them by the quantity received.
From the vendor bill to the product cost
- Receive the purchase order and validate the receipt. Landed costs only apply to validated transfers.
- Record the forwarder’s or clearing agent’s bill with your landed cost products as lines. The Landed Costs column is ticked on those lines.
- Click Create Landed Costs at the top of the bill. Odoo opens a landed cost with each charge as a line.
- Choose the receipt in Transfers. On each line, check the split method and, in Odoo 20, the products it applies to.
- Click Compute, then open Valuation Adjustments: each product shows its original value, its share of the charges and its new value.
- Click Validate. Odoo posts the journal entry and updates the products’ cost.
You can also start from Inventory → Operations → Landed Costs, for example when charges arrive before the bill is recorded.
A worked example in Kuwaiti dinars
A container brings two products. Product A: 400 units at KD 2.500, so KD 1,000.000, taking 6 cubic metres. Product B: 200 units at KD 10.000, so KD 2,000.000, taking 4 cubic metres. The charges, for illustration:
| Charge | Amount (KD) | Split | Product A | Product B |
|---|---|---|---|---|
| Sea freight | 570.000 | By Volume | 342.000 | 228.000 |
| Insurance | 30.000 | By Current Cost | 10.000 | 20.000 |
| Customs duty, 5% of CIF 3,600.000 | 180.000 | By Current Cost | 60.000 | 120.000 |
| Clearing agent’s fee | 60.000 | By Quantity | 40.000 | 20.000 |
| New value of the receipt | 1,452.000 | 2,388.000 | ||
| New unit cost | 3.630 | 11.940 |
Product A cost KD 2.500 on the supplier’s invoice and KD 3.630 on your shelf, 45% more. Priced on the invoice cost, it would look far more profitable than it is. Product B rises by 19%, because freight weighs more on bulky, cheap goods.
By Current Cost shares the duty in proportion to value, which is right when every item carries the same rate. When a shipment mixes dutiable goods with exempt ones, such as some medical items, put the duty only on the dutiable products with Apply On, or enter one duty line per rate.
When goods are sold before the charges arrive
Clearing bills often come weeks after the goods are on sale. When a product’s cost changes after it was delivered, through a landed cost or a bill at a different price, Odoo 20 updates the value of those deliveries retroactively, and the cost of goods sold too under perpetual valuation. A validated landed cost cannot be cancelled; to correct one, create a negative landed cost for the difference.
Kuwait details worth getting right
- Foreign currency. Supplier and forwarder bills in US dollars or euros are converted to dinars at the rate of the bill date, and the landed cost is in dinars.
- Three decimals. The dinar has three decimals; check that your costs and reports show fils.
- One line per charge. Clearing agents often put the duty they paid for you and their own fee on one invoice. Keep them as separate lines with their own landed cost products, so duty and fees can be split differently and reported apart.
- Keep the declaration. Attach the customs declaration to the landed cost or the bill, so the duty amount can be traced.
We set up import costing for traders and distributors in Kuwait and the Gulf: see Odoo Purchase, Odoo Inventory and Odoo for trading and distribution.
What to do next
- Check the costing method of the categories you import, and switch to AVCO or FIFO with your accountant if needed.
- Create the landed cost products for your usual charges and run the next container through them.
- Book a consultation to set up import costing for your company.
