BambooForge Labs

Landed Cost by Value

Split a freight or duty bill across receipts by purchase value, get the right receipts suggested, and read the landed cost on each line.

Buy on the Odoo Apps StoreOpen the live demoPurchases€129Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0, Odoo 20.0. Technical name bambooforge_landed_cost.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0Odoo 20.0
Screens and walkthrough for
Transcript of the walkthrough (Odoo 20)

Landed Cost by Value. Split a freight or duty bill across receipts by purchase value, get the right receipts suggested, and read the landed cost on each line. Odoo's landed costs split a bill five ways — equally, by quantity, by weight, by volume, and by the stock value already on the goods. The one an importer actually asks for is missing, and the one manual step that eats the afternoon is finding which receipts a freight bill even belongs to.

In the next few minutes: landed cost by value, then split by purchase value, then suggest the receipts, then read it back per receipt line, then how we make sure it works. Then what this app deliberately does not do, so you can tell before you buy whether it fits. Everything lives under Landed Cost by Move. 1.

Copy bambooforge_landed_cost into your addons path and update the app list, or install the ZIP from the Odoo Apps Store. 2. Install Landed Cost by Value. 3.

Open Landed Cost by Move. Landed Cost by Value. Odoo's landed costs split a bill five ways — equally, by quantity, by weight, by volume, and by the stock value already on the goods. The one an importer actually asks for is missing, and the one manual step that eats the afternoon is finding which receipts a freight bill even belongs to.

Split by purchase value. A €2,000 freight bill on a container holding one cheap pallet and one expensive one should fall mostly on the expensive pallet — by what was paid for the goods, not by a stock valuation that on a standard-costed product may be a round number set months ago. This adds a sixth split method, By Purchase Value, next to the five built in. The weight of each receipt line is its purchase value — the purchase-order unit price times the quantity received, converted to the company currency — so €100 of goods and €900 of goods carry the freight in a 1:9 ratio, not 1:1.

Suggest the receipts. A forwarder's bill names no purchase order, so the receipts it belongs to have to be found — and scrolling the transfer list for the three that match is the step nobody enjoys. Suggest receipts from the bill proposes them: the done incoming transfers from that vendor, within a month and a half of the bill's date, that no other landed cost has already claimed. You untick the wrong ones; nothing is applied until you compute and validate as usual.

Read it back per receipt line. Inventory › Operations › Landed Costs › Landed Cost by Move is every landed cost that has been applied, line by line: the move, the product, the quantity, what it was worth before, the cost added, and the final cost. Group by product to answer "what did this pallet actually cost us to land", filter to one landed cost to see where a single bill went. How we make sure it works.

Before every release, 13 automated checks run against this app on Odoo 16, 17, 18, 19 and 20. Among them: A move with no purchase line does not crash. Suggest is refused once the cost is settled. Quantity counts not just unit price.

Freight and duty can land on the same receipt. Suggest adds new receipts and keeps the held one. The complete list is in the source you receive. Questions people ask.

Which Odoo versions does it run on? Odoo 16.0, 17.0, 18.0, 19.0, 20.0, on the series you buy it for; each series is its own listing. Community or Enterprise? Both.

It needs no Enterprise app. The complete manual is at docs dot bambooforge dot dev, the demo database is linked from the store page, and support answers within twenty-four hours. Links are in the description.

Bylot - bambooforge_landed_cost
Bylot
Split - bambooforge_landed_cost
Split
Suggest - bambooforge_landed_cost
Suggest

Key facts

What it is
Split a freight or duty bill across receipts by purchase value, get the right receipts suggested, and read the landed cost on each line.
For
Purchases
Odoo versions
16.0, 17.0, 18.0, 19.0, 20.0 - Community and Enterprise
Runs on
Odoo.sh or Odoo you host yourself - not Odoo Online, which accepts no third-party apps
Price
129 EUR, one-time, on the Odoo Apps Store
Technical name
bambooforge_landed_cost
Not for
It does not change how landed costs are applied. The apply is Odoo's own — the journal entry, the valuation layers and the traceability are core's, untouched, so nothing about your period close changes.; It does not touch the five built-in split methods.; It splits by the purchase price on the order line; a receipt with no purchase line behind it (a manual inventory move) weighs nothing and is skipped, rather than stopping the computation.
Manual
https://docs.bambooforge.dev/bambooforge_landed_cost/
Live demo
https://demo20.bambooforge.dev/odoo/action-bambooforge_landed_cost.action_bf_landed_by_lot
Store page
https://apps.odoo.com/apps/modules/20.0/bambooforge_landed_cost
Manual last updated
2026-10-15

Landed Cost by Value

Odoo's landed costs split a bill five ways — equally, by quantity, by weight, by volume, and by the stock value already on the goods. The one an importer actually asks for is missing, and the one manual step that eats the afternoon is finding which receipts a freight bill even belongs to.

Split by purchase value

A €2,000 freight bill on a container holding one cheap pallet and one expensive one should fall mostly on the expensive pallet — by what was paid for the goods, not by a stock valuation that on a standard-costed product may be a round number set months ago.

This adds a sixth split method, By Purchase Value, next to the five built in. The weight of each receipt line is its purchase value — the purchase-order unit price times the quantity received, converted to the company currency — so €100 of goods and €900 of goods carry the freight in a 1:9 ratio, not 1:1.

The other five methods are untouched: the new split is computed after Odoo's own, and only for the lines that use it. A landed cost that splits by weight splits by weight, to the cent, exactly as before.

Suggest the receipts

A forwarder's bill names no purchase order, so the receipts it belongs to have to be found — and scrolling the transfer list for the three that match is the step nobody enjoys.

Suggest receipts from the bill proposes them: the done incoming transfers from that vendor, within a month and a half of the bill's date, that no other landed cost has already claimed. You untick the wrong ones; nothing is applied until you compute and validate as usual.

Read it back per receipt line

Inventory › Operations › Landed Costs › Landed Cost by Move is every landed cost that has been applied, line by line: the move, the product, the quantity, what it was worth before, the cost added, and the final cost. Group by product to answer "what did this pallet actually cost us to land", filter to one landed cost to see where a single bill went.

What it does not do

  • It does not change how landed costs are applied. The apply is Odoo's own — the journal entry, the valuation layers and the traceability are core's, untouched, so nothing about your period close changes.

  • It does not touch the five built-in split methods.

  • It splits by the purchase price on the order line; a receipt with no purchase line behind it (a manual inventory move) weighs nothing and is skipped, rather than stopping the computation.

How we make sure it works

Before every release, 13 automated checks run against this app on Odoo 16, 17, 18, 19 and 20. Among them:

  • A move with no purchase line does not crash.

  • Suggest is refused once the cost is settled.

  • Quantity counts not just unit price.

  • Freight and duty can land on the same receipt.

  • Suggest adds new receipts and keeps the held one.

The complete list is in the source you receive.

Install

  1. Copy bambooforge_landed_cost into your addons path and update the app list, or install the ZIP from the Odoo Apps Store.

  2. Install Landed Cost by Value.

  3. Open Landed Cost by Move.

Questions people ask

Which Odoo versions does it run on?

Odoo 16.0, 17.0, 18.0, 19.0, 20.0, on the series you buy it for; each series is its own listing.

Community or Enterprise?

Both. It needs no Enterprise app.

What does it need?

The standard purchase_stock, stock_landed_costs apps. No extra Python package.

Where does it show up?

Under the Landed Cost by Move menu.

Does anything leave my server?

No. It makes no call outside your Odoo server: no telemetry, no licence check, no third-party service.

What happens if I uninstall it?

Odoo drops the app's own tables and fields; the standard records it worked on (contacts, orders, products) stay as they are.