# 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.

- **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.
