Skip to Content

How to Calculate Landed Cost in Odoo for UAE Imports: A Worked Example

November 11, 2026 by
How to Calculate Landed Cost in Odoo for UAE Imports: A Worked Example
Foxedg Ventures

To calculate landed cost in Odoo, record each import charge (freight, insurance, customs duty, clearing and transport) as a landed cost against the goods receipt, and split each one by what it's billed on: volume, weight or value. Getting the total right is the easy part; the split is where margins go wrong.

Get the split wrong and your cheapest, bulkiest product looks more profitable than it is. In the illustrative container below, splitting every charge by value understates the storage boxes' landed cost by AED 1.46 a unit — AED 16.69 instead of AED 18.15 — and overstates their gross margin by five points: 42.4% instead of 37.4%.

The shipment below is a constructed example with illustrative numbers — not a client project, and not tax advice. Every rule it relies on is linked to its source.

By Foxedg Ventures, the company behind OdooEdge · Checked against Odoo's current documentation and UAE rules on 10th November 2026.

In short
  • Landed cost is the supplier price plus everything you pay to get the goods onto your shelf.
  • For most UAE imports, customs duty is 5% of the CIF value — goods plus freight and insurance.
  • Import VAT isn't a landed cost if you're VAT-registered and recover it.
  • The split matters as much as the total: in our example the bulky product carries 23.6% on top of its supplier price, against a 13.6% shipment average.
  • Odoo handles this with standard landed costs — five split methods, applied from the vendor bill, no custom module.

What Is Landed Cost, and Why Does It Change Your Margin?

Landed cost is the full cost of getting a product onto your shelf: the supplier's price plus freight, insurance, customs duty, clearing and port charges, and transport to your warehouse. It's what Odoo books as cost of goods sold when you sell, so it, not the supplier invoice, is what your margin should be measured against.

Landed cost formula: supplier price + freight + insurance + customs duty + clearing and port charges + transport to warehouse

Price from the supplier invoice and every sale looks healthier than it is. Add a flat percentage for "shipping and customs" and the total can be right while every product is wrong. That second problem is what this post is really about.

What Goes Into Landed Cost for a UAE Import?

For most goods imported into the UAE mainland, landed cost is the supplier price, plus freight and insurance to the UAE, plus 5% customs duty on that combined CIF value, plus clearing, port and local transport charges. Import VAT usually isn't part of it.

Line by line:

  • Supplier price. The commercial invoice, converted to dirhams. In our example that's the FOB (free on board) price.
  • Freight and insurance. Together with the supplier price, these make the CIF value — the base customs works from.
  • Customs duty. The UAE Government portal sets it at 5% of the CIF value, with 50% on alcohol and 100% on cigarettes. Some goods carry a different rate under the GCC tariff, so check the HS code (the product's customs classification) before you assume 5%.
  • Clearing, delivery order and port charges. Usually on your clearing agent's invoice. A real cost, and an easy one to leave out of a spreadsheet.
  • Transport to your warehouse. The truck from the port to your store.
  • Excise tax, for excise goods. Tobacco products, e-cigarettes and their liquids, and energy drinks carry 100% excise tax on import, and sweetened drinks are taxed by sugar content, under Cabinet Resolution No. 197 of 2025, in force since 1 January 2026. Excise isn't reclaimed on your VAT return, so for goods you sell in the UAE it belongs in landed cost. It also raises your import VAT, because Article 35 of the VAT Decree-Law adds it to the value VAT is calculated on.

Is import VAT part of landed cost?

No — not if you're VAT-registered and recover it. Most imported goods are subject to 5% VAT, and a registered importer accounts for it under the reverse charge in Article 48 of the VAT Decree-Law, so it nets out on your VAT return instead of sitting in your stock value.

If you aren't VAT-registered, you pay import VAT at the border and can't recover it — so for you, it is part of landed cost.

Two practical checks. First, your Tax Registration Number has to be linked to your customs registration. If it isn't, the VAT is collected in cash at clearance (Tally Solutions explains the two ways to link them). Second, since 1 January 2026 you no longer issue yourself a tax invoice for reverse-charge imports, but you must keep the import documents that support the VAT you account for (Federal Decree-Law No. 16 of 2025).

How Do You Calculate Landed Cost Per Unit?

To calculate landed cost per unit, convert the supplier invoice to dirhams, give each product its share of every import charge based on what that charge is billed on, add those shares to its supplier value, and divide by units received. In the worked example, the storage boxes land at AED 18.15 a unit, not AED 14.69.

Landed cost per unit = (supplier value of the product line + its share of each import charge) ÷ units received

  1. Convert the supplier invoice to dirhams. We'll use the storage boxes from the worked example below: 1,500 sets at USD 4.00 come to USD 6,000, or AED 22,035.00 at 3.6725.
  2. List every import charge in AED. Freight, insurance, customs duty, clearing and port charges, and local transport, from the forwarder's, insurer's and clearing agent's bills.
  3. Choose each charge's driver. Volume for container freight and trucking; value for insurance, duty and clearing.
  4. Work out each product's share. The boxes fill 18 of the container's 29 m³, so they carry 18 ÷ 29 of the freight: AED 5,141.50 × 18 ÷ 29 = AED 3,191.28.
  5. Add and divide. Supplier value plus every allocated charge, divided by units: (AED 22,035.00 + AED 5,192.97) ÷ 1,500 = AED 18.15.

Steps 1 and 2 come from your purchase order and your bills. Odoo does steps 3 to 5 when you compute a landed cost.

What Is the Landed Cost of One Container? A Worked Example

In this illustrative example, a VAT-registered Dubai mainland trader imports one 20-foot container, packed close to full at 29 m³ and invoiced at USD 25,200 (AED 92,547). Freight, insurance, 5% customs duty, clearing and transport add AED 12,584.42, so the shipment lands at AED 105,131.42 — 13.6% above the supplier price.

The products differ on purpose: one heavy, one small and valuable, one light but bulky.

The shipment
ProductUnitsPrice (USD/unit)Value (USD)Value (AED)Weight (kg)Volume (m³)
Stainless steel cookware set40018.007,200.0026,442.001,8008.0
Bluetooth speaker1,00012.0012,000.0044,070.006003.0
Plastic storage box set1,5004.006,000.0022,035.001,80018.0
Shipment total2,900—25,200.0092,547.004,20029.0
The charges
ChargeHow it's worked outAEDOdoo split method
Sea freightUSD 1,400 at 3.67255,141.50By Volume
Marine insuranceUSD 80 at 3.6725293.80By Current Cost
Customs duty5% of CIF value of AED 97,982.304,899.12By Current Cost
Clearing, D.O. and port chargesClearing agent's invoice1,650.00By Current Cost
Transport to warehousePort to Dubai warehouse600.00By Volume
Added to stock value13.6% on top of the supplier price12,584.42—
Import VAT5% of CIF plus duty (AED 102,881.42)5,144.07Not a landed cost — recovered on the VAT return

Illustrative numbers. CIF value = supplier value AED 92,547.00 + freight AED 5,141.50 + insurance AED 293.80 = AED 97,982.30. Import VAT is shown for completeness; a VAT-registered importer recovers it.


The duty and VAT working, so you can check it: customs duty is 5% of the CIF value, AED 97,982.30 × 5% = AED 4,899.12. Import VAT is 5% of CIF plus duty, AED 102,881.42 × 5% = AED 5,144.07 — recovered on the VAT return, so it stays out of landed cost.

One thing to notice before anything is split: the storage boxes are 23.8% of the shipment's value but take up 62.1% of the cargo space. That gap is where product margins go wrong.

Which Odoo Split Method Should You Use for Each Cost?

Split each charge by what it's billed on. In Odoo, that means By Volume for container freight and local transport, because space is what you pay for, and By Current Cost for insurance and customs duty, which are calculated on the goods' value, and for clearing charges, which have no physical driver.

We call this splitting by driver: each charge follows the measure it's billed on — volume, weight or value.

Splitting freight by value is like splitting a shared taxi by each passenger's salary instead of the seats they take. The fare adds up, but the speakers end up paying for the boxes' seats.

Odoo gives every landed cost line five split methods, set out in Odoo's landed costs documentation. The first table shows what each one does and where it fits; the second applies them to the shipment.

Odoo's five split methods
Split methodHow Odoo divides the chargeUse it forIn this example
EqualThe same amount to every product lineRarely right — only for near-identical linesNot used
By QuantityBy number of unitsProducts similar in size and valueNot used
By Current CostBy each line's value on the receiptInsurance, customs duty, clearing and other value-based feesInsurance, duty, clearing
By WeightBy weight × quantityCharges billed by weightNot used
By VolumeBy volume × quantityContainer freight and local truckingFreight, transport
The split, product by product
Line (AED)Split byCookware set (400 units)Bluetooth speaker (1,000 units)Storage box set (1,500 units)Total
Supplier price—26,442.0044,070.0022,035.0092,547.00
Sea freightVolume1,418.34531.883,191.285,141.50
Marine insuranceCurrent cost83.94139.9069.96293.80
Customs dutyCurrent cost1,399.752,332.911,166.464,899.12
Clearing and port chargesCurrent cost471.43785.71392.861,650.00
Transport to warehouseVolume165.5262.07372.41600.00
Landed cost—29,980.9847,922.4727,227.97105,131.42
Landed cost per unit—74.9547.9218.15—
On top of supplier price—13.4%8.7%23.6%13.6%
The split, product by product
ProductSupplier priceSea freight (by volume)Marine insurance (by value)Customs duty (by value)Clearing and port (by value)Transport (by volume)Landed costLanded cost per unitOn top of supplier price
Stainless steel cookware set (400 units)26,442.001,418.3483.941,399.75471.43165.5229,980.9874.9513.4%
Bluetooth speaker (1,000 units)44,070.00531.88139.902,332.91785.7162.0747,922.4747.928.7%
Plastic storage box set (1,500 units)22,035.003,191.2869.961,166.46392.86372.4127,227.9718.1523.6%
Shipment total92,547.005,141.50293.804,899.121,650.00600.00105,131.42—13.6%

Illustrative numbers in AED. Freight and transport split by volume; insurance, duty and clearing split by value (Odoo's "By Current Cost"). Rounded to the fils, with rounding differences on the last product line.

The storage boxes carry 23.6% on top of their supplier price. The speakers carry 8.7%. The 13.6% average is right for the shipment — and wrong for two of the three products.

What Happens If You Split Everything by Value?

Split every charge by value and the total landed cost stays at AED 105,131.42, but AED 2,196.68 of cost moves off the bulky storage boxes, almost all of it onto the speakers. The boxes look five points more profitable than they are, and the speakers three points less.

Splitting everything by value gives exactly the same result as adding a flat 13.6% to every product, which is what a single "shipping and customs" percentage does.

Split by value vs split by driver
ProductSupplier price per unitLanded per unit — split by valueLanded per unit — split by driverSelling priceGross margin: by value → by driver
Stainless steel cookware set66.1175.0974.9599.0024.2% → 24.3%
Bluetooth speaker44.0750.0647.9269.0027.4% → 30.6%
Plastic storage box set14.6916.6918.1529.0042.4% → 37.4%

Illustrative numbers in AED, excluding VAT. Total landed cost is AED 105,131.42 under both methods — only where it lands changes.

At illustrative selling prices, the storage boxes show a 42.4% gross margin when everything is split by value — and 37.4% when freight and transport follow volume. The speakers move the other way, from 27.4% to 30.6%.

Price, promote or reorder on the split-by-value numbers and you overrate the boxes and underrate the speakers. The gap between them looks like 15 points when it's 7. Price from the supplier invoice alone and the boxes show 49.3%.

What selling price does that imply?

Price from the right landed cost and the target price changes. For a 40% gross margin, divide landed cost per unit by 0.6 (1 minus the margin you want): the storage boxes need AED 30.25 on the volume split, but only AED 27.82 on the value split. Price at AED 27.82 and each box earns 34.8%, not 40%.

Want to see your own split? Send us the invoices for one recent shipment on WhatsApp → We'll show you which products your current method over- or under-costs.

How Do You Set Up Landed Costs in Odoo?

Landed costs are a standard Odoo Inventory feature. You turn them on, set your product categories to FIFO (first in, first out) or Average Cost (AVCO), and create a service product for each import charge. Then you apply the charges from the vendor bill to the goods receipt. No custom module is needed.

If someone else configures your Odoo, hand them this list (menu labels shift slightly between Odoo versions):

  1. Turn on landed costs. Inventory → Configuration → Settings → Valuation → Landed Costs.
  2. Set the costing method. On each product category you import into, use FIFO or Average Cost (AVCO). Landed costs can't be applied to products on Standard Price (a fixed cost you set by hand).
  3. Fill in weight and volume. On every product you import. By Weight and By Volume have nothing to work with otherwise.
  4. Create one service product per charge. A service product is a non-stock product Odoo uses for charges: sea freight, marine insurance, customs duty, clearing and port charges, local transport. Tick Is a Landed Cost and set a default split method on each.
  5. Receive the goods. Confirm the purchase order in USD and validate the receipt.
  6. Enter the bills, then create the landed cost. When the forwarder's and clearing agent's bills arrive, enter them with those service products and create the landed cost from the bill, linked to the receipt. If you pay duty to customs yourself rather than through your clearing agent, enter it as a bill with the customs duty product too, or add it as a line on the landed cost record (Inventory → Operations → Landed Costs).
  7. Compute, check, validate. Odoo proposes the split. Review the valuation adjustments — you can change them before you validate, as Odoo's own forum confirms — then validate. Each product's cost now carries its share.
  8. Check the result. Open the landed cost's Valuation Adjustments tab: it shows each line's original value, the additional landed cost and the new value. The journal entry sits under Accounting → Accounting → Journal Entries.

If you'd rather have this built into a wider rollout than configure it yourself, it's part of how we scope Odoo ERP implementation for trading companies. For the bigger picture, see what an Odoo implementation costs in the UAE and the other inventory features a UAE trading company needs.

How Does Odoo Handle a Shipment Priced in US Dollars?

Odoo converts the purchase into dirhams at the exchange rate it holds for the transaction date, so your stock is valued in AED while the purchase order stays in USD. With the dirham pegged at AED 3.6725 to the dollar since November 1997, as The National notes, USD shipments barely move. Other currencies do.

If your supplier invoices in euros, yuan or rupees, the rate on your purchase order, your receipt and your customs declaration can all differ. Say a EUR 25,000 invoice moves 2% between your purchase order date and your customs date: that's EUR 500 of difference someone has to explain at month-end. Odoo can update exchange rates automatically. Set that up — and agree with your accountant which date your receipts are valued at — before your first shipment, not after it.

Where Do Odoo's Standard Landed Costs Fall Short?

Standard Odoo handles most container imports exactly as shown above. Three situations need extra care: a shipment mixing duty-free and 5%-duty goods, air freight billed on chargeable weight, and stock sold before the landed cost is validated. The first two need a manual adjustment or a small customisation; the third needs a change in when you post.

  • Mixed duty rates in one shipment. If one product is duty-free and the rest are at 5%, a by-value split spreads duty onto the duty-free line. Adjust that line before you validate, or — if it happens on every shipment — have duty split by HS code with a customisation.
  • Air freight on chargeable weight. Airlines bill the greater of actual and volumetric weight. That isn't one of the five methods; a new split method takes a custom module, according to the same Odoo forum thread.
  • Timing. A landed cost changes product cost from the moment you validate it. Anything sold from the shipment before then is costed at supplier price — so post landed costs when the bills arrive, not at month-end.

Either customisation is a custom module, and custom modules need Odoo's Custom plan, on Odoo.sh (Odoo's hosting for custom code) or your own server, rather than the Standard plan.

How Does Importing Into a Free Zone Change Landed Cost?

If you import into a UAE free zone, customs duty is generally suspended while the goods stay in the zone and becomes payable when they enter the mainland, as ATB Legal explains. You then build landed cost in two stages: once when goods enter the free zone, without duty, and again when they cross to the mainland.

That second stage is a design decision in Odoo — whether mainland stock sits in its own warehouse or its own company. A second company moves you onto Odoo's Custom plan, so it changes your licence cost as well as your setup. We settle it in the first scoping call with a free zone trader, because changing it later means moving stock between companies or warehouses and re-checking its value.

Three Signs Your Landed Costs Need a Second Look

  1. Your cheapest, bulkiest lines show your best margins.
  2. Every product carries the same landed-cost percentage.
  3. Your cost of sales jumps in the month the clearing agent's bill finally arrives.
Free · One shipment

Send us one shipment. We'll show you its landed cost in Odoo.

Send the supplier invoice, the freight bill and your clearing agent's invoice for one recent import. We'll split it the way Odoo would, show you the landed cost per unit for each product — and which products your current method over- or under-costs. You'll get back a one-page breakdown for each product within 7 working days.

  • Black out supplier names if you prefer.
  • Workings are illustrative, not tax advice.
  • We reply the same working day, Monday to Saturday.


Quick Answers on Landed Cost in Odoo


Landed cost in Odoo is a record that adds import charges (freight, insurance, customs duty, clearing and transport) to the value of the products on a goods receipt, using one of five split methods, so each product's cost reflects what it took to reach your warehouse.

Add the product's supplier value to its share of each import charge — freight, insurance, customs duty, clearing and transport — and divide by the units received. Split each charge by what it's billed on: volume for freight, value for duty and insurance. Odoo works out the split when you compute a landed cost and applies it when you validate.

FOB (free on board) is the supplier's price with the goods loaded at the origin port. CIF (cost, insurance and freight) adds freight and insurance to the UAE, and it's the value UAE customs duty is calculated on. Landed cost adds duty, clearing, port charges and local transport on top — the full cost of goods on your shelf.

Yes. For goods you sell in the UAE, customs duty is a cost you don't get back, so it belongs in landed cost. For most goods the UAE rate is 5% of the CIF value — the goods plus freight and insurance — with higher rates for alcohol and tobacco, and different rates for some goods under the GCC tariff.

Use By Volume for container and truck freight, because space is what you pay for, and By Weight when the carrier charges by weight. Use By Current Cost for insurance and customs duty, which follow the value of the goods.

No. Odoo applies landed costs only to products in a category costed by FIFO or Average Cost (AVCO). If your imported products sit on Standard Price, change the category's costing method before your first shipment, ideally with your accountant, because the change affects how the stock you already hold is valued.

Post landed costs as soon as the freight, customs and clearing bills arrive, before you sell from the shipment. Odoo only changes product cost when you validate, so sales made earlier carry the supplier price alone and their margin looks better than it really was.

No. Landed costs are a standard Odoo Inventory setting, so they work on the Standard plan with no extra module. Custom work is only needed for special cases, such as splitting duty by HS code or air freight by chargeable weight — and a custom module needs Odoo's Custom plan, on Odoo.sh or your own server.

Sources, Method and Changelog

Method. The shipment is constructed to show the method, not taken from a client. Dollar amounts are converted at AED 3.6725. Allocations are rounded to the nearest fils, with rounding differences placed on the last product line; per-unit figures are rounded to two decimals. Selling prices are illustrative and exclude VAT.

  1. UAE Government portal — Rate of customs duty (updated 13 June 2024)
  2. UAE Ministry of Finance — Federal Decree-Law No. 8 of 2017 on VAT, consolidated text (Article 35, value of imports; Article 48, reverse charge). Article 48 was amended by Federal Decree-Law No. 16 of 2025 from 1 January 2026.
  3. WAM — Ministry of Finance to implement VAT law amendments starting January 2026 (3 December 2025)
  4. UAE Cabinet — Cabinet Resolution No. 197 of 2025 on excise goods and tax rates (in force 1 January 2026; repeals Cabinet Resolution No. 52 of 2019)
  5. Grant Thornton — Indirect tax guide: UAE (published 1 January 2025) — plain-English summary of import VAT and the reverse charge
  6. Tally Solutions — How to link TRN with Dubai Customs (1 January 2026)
  7. The National — Why the UAE dirham is pegged to the US dollar (22 November 2024)
  8. Odoo — Landed costs documentation, current version (checked 10 November 2026)
  9. Odoo — Pricing: Standard and Custom plans (checked 10 November 2026)
  10. Odoo forum — Landed cost split methods and valuation adjustments
  11. ATB Legal — UAE customs and trade compliance

Changelog

  • 10th November 2026 — First published.

Related Reading