Technical Lab · 0041

Odoo Landed Costs — freight, duty, and true inventory value.

When importing raw materials to Bangladesh, the supplier's invoice is only part of the cost. Freight, insurance, CNF charges, and customs duties can add 30-50% to the product value. Odoo's Landed Costs feature ensures your inventory valuation and profit margins reflect reality.

A common mistake in ERP implementations is treating import duties and freight charges as generic expenses on the P&L. While this is mathematically correct for net profit, it completely destroys your gross margin analysis per product. If you import a specialized component for $10 and pay $4 in shipping and duties, the cost of that component in your warehouse should be $14, not $10.

Odoo's Landed Costs module automates this calculation. This guide works in tandem with the HS Code & Customs Management and Odoo Accounting Setup guides.

Without Landed Costs, your inventory is undervalued on the balance sheet, and your product margins are artificially inflated.

Why Landed Costs Matter

Consider importing a container of fabric. The supplier invoice is $50,000. When it arrives in Chittagong port, you pay $3,000 for ocean freight, $500 for insurance, $1,500 for CNF agent fees, and $15,000 in import duties. Your total cash outlay is $70,000.

If you don't use landed costs:

Configuration in Odoo

To use Landed Costs, you must be using Automated Inventory Valuation (AVCO or FIFO). Standard Price does not support dynamic landed costs.

Step 1: Receive Goods
Validate the receipt of the products from the supplier in your warehouse. The initial inventory value is booked based on the PO price.
Stock Valuation: PO Price
Step 2: Create Cost Service
Create service products for "Freight", "Customs Duty", etc. Ensure the "Is a Landed Cost" checkbox is ticked on the product.
Product Type: Service
Landed Cost: True
Step 3: Vendor Bills
When you receive the bill from the freight forwarder or customs, create a vendor bill for the service product.
Create Bill
Step 4: Apply Landed Cost
Create a Landed Cost record. Link it to the original warehouse receipt and add the cost lines. Odoo distributes the cost and recalculates inventory value.
Inventory → Landed Costs

Cost Splitting Methods

Odoo can distribute the extra costs across the items in the container using different methods:

Duty Drawback Tracking

For Bangladesh exporters, Duty Drawback is a critical financial incentive. When you export finished goods made from imported raw materials, you can claim back the import duties paid.

To track this accurately, you must use FIFO costing combined with Landed Costs. FIFO ensures that the specific cost of the imported batch (including its specific landed duties) is tracked as it moves through production and is finally exported. By running a valuation report on the exported lots, you can precisely document the duty value embedded in that shipment for your drawback claim.

Note · Importer-distributor, DhakaYear-end stock count
A distributor had the Landed Costs module switched on and used it correctly — for the first few months. Then the warehouse and finance teams drifted out of sync: goods were received and sold, but the CNF agent's freight-and-duty bill arrived five to six weeks later and quietly piled up unprocessed. By year-end, several large shipments had never had their landed cost applied at all — inventory sat undervalued on the balance sheet, and the gross margin on those products looked far healthier than it was. Nobody noticed until the auditors reconciled the stock value. We fixed it with a standing rule: a receipt is not considered closed until its landed-cost record is posted, and a weekly review flags any receipt older than four weeks with no linked cost. Landed costs do not fail because the feature is hard — they fail because the freight bill and the receipt live in two different inboxes.
Bottom line

Landed costs require discipline. The warehouse team receives the goods, but the finance team receives the freight and duty bills weeks later. You must establish a workflow where finance links these delayed bills back to the original receipts. Want to size the duty, freight, and implementation budget before you commit? Try the Odoo cost estimator. Need help designing your import accounting workflows? Get in touch →

Frequently asked questions

What are Landed Costs in Odoo?

Landed Costs refer to the total price of a product once it has arrived at the buyer's door. This includes the original price of the product, all transportation fees, customs, duties, taxes, insurance, currency conversion, and any other costs.

How does Odoo calculate Landed Costs?

Odoo takes the additional costs (like a freight invoice) and splits them across the products in an incoming shipment based on rules you define: by quantity, by volume, by weight, by cost, or equally.

Why must I use FIFO or AVCO for landed costs in Odoo?

Landed costs adjust the valuation of stock that is already in your inventory, so Odoo needs a costing method that tracks valuation dynamically. FIFO and AVCO (Average Cost) both do this — they recalculate inventory value as moves and adjustments occur. Standard Price holds a fixed cost per product and cannot absorb a per-shipment freight or duty adjustment, so the Landed Costs feature is unavailable on Standard Price products. For Bangladesh importers claiming duty drawback, FIFO is usually the better choice because it preserves the specific cost of each imported batch.

When should I apply a landed cost to a receipt in Odoo?

Apply it as soon as you have the actual freight, insurance, CNF, and duty figures — ideally when the vendor bill arrives. If you wait too long, the imported stock may already be consumed or sold, and while Odoo can still post the adjustment, the margin reports for the periods in between will have been wrong. The practical rule: do not treat a receipt as fully closed until its landed-cost record is posted.