The logistics & freight forwarding value tree
Freight is bought and sold as capacity on a lane. Margin is made per shipment, in a spread that is small, and lost in the accessorials, demurrage and empty legs that no single system totals up.
01 The same tree, this industry
Where the money is made and lost here
The structure does not change: value is profit plus how well that profit becomes cash, profit is revenue minus cost, and revenue is price times quantity. What changes is which drivers sit underneath each branch, and which system holds them. If you have not read the general version, start with the Enterprise Value Tree and come back.
The defining problem is that one shipment touches a dozen parties — shipper, carrier, terminal, customs broker, agent, consignee — and each holds one fragment of its cost. The shipment is the unit of margin, and almost no forwarder can produce its true profit without a manual exercise.
Every driver below names the metric it lands on. Follow one and you get its formula, the system the number lives in, and the ways it is commonly misread.
02 Price
What decides the price you actually get
Sell rate against buy rate
The spread on the lane, which is the whole business. Quoted from a rate sheet that is stale the week it is published.
Price realisation net_revenue ÷ list_revenuePriceSurcharges and pass-through
BAF, CAF, peak season, congestion. Whether these reach the invoice decides whether cost inflation is yours or the customer's.
Average net price net_revenue ÷ unitsPriceContract against spot
Contracted volume protects the lane and caps the upside; spot does the reverse. The mix is a position, taken deliberately or by drift.
Contribution margin (net_revenue − variable_cost) ÷ net_revenuePriceAccessorials
Waiting time, re-delivery, special handling, customs lines. Earned constantly and billed inconsistently.
Price realisation net_revenue ÷ list_revenuePriceDetention and demurrage recovery
Charged by the carrier within days; recovered from the customer within weeks, if the evidence was captured at all.
Days sales outstanding (accounts_receivable ÷ net_revenue) × days_in_periodPriceCurrency
Buy in one currency, sell in another, settle in a third. The spread can be smaller than the move.
Gross margin % (net_revenue − cogs) ÷ net_revenue03 Quantity
What decides how much you sell
Volume by lane
TEU, CBM or tonnes on a specific origin-destination pair. Aggregate volume hides which lanes are actually working.
Market share your_units (or value) ÷ total_market_unitsVolumeConsolidation ratio
How full the box or the console is. In LCL this single number carries most of the margin.
Capacity utilisation actual_output ÷ practical_capacityVolumeNetwork coverage
Which port pairs you can actually serve, directly or through agents. Coverage wins the tender before price does.
Fill rate units_shipped ÷ units_orderedVolumeTransit time against the market
Reliability and speed on the lane, which is what a shipper switches for.
Order cycle time delivery_date − order_date, in calendar daysVolumeCustomer and commodity mix
Who ships what: the mix decides both margin and how exposed a lane is to one account.
Active customers count(distinct customers with at least one purchase in the window)VolumeAgent and partner network
The destination side of every shipment, and a commercial relationship with its own economics.
Share of wallet your_revenue_from_the_account ÷ the_account_total_category_spend04 Cost
What it takes to operate
Buy rate and procurement
What you pay the carrier, against allocation commitments made months earlier.
Supplier lead time mean and variability of (goods_receipt_date − purchase_order_date)CostEmpty repositioning
Equipment moved with nothing in it — pure cost, created by an imbalance nobody owns.
Freight cost per unit total_freight_cost ÷ units_shippedCostTerminal handling and drayage
The first and last mile, priced locally and rarely visible in the lane P&L.
Freight cost per unit total_freight_cost ÷ units_shippedCostDemurrage and detention paid
Incurred at the terminal, charged days later, and usually discovered on an invoice rather than in an operation.
Cost to serve (delivery + service + returns + order_handling) ÷ customers or ordersCostClaims and damage
Paid twice: the claim and the relationship. Concentrated in specific lanes and handlers.
Returns rate units_returned ÷ units_soldCostOperations cost per shipment
Documentation, customs entries and exception handling — the cost of complexity rather than of distance.
Cost to serve (delivery + service + returns + order_handling) ÷ customers or orders05 Cash
Where the cash actually sits
Customer payment terms
Freight is often paid after delivery while the carrier is paid before it. The gap is funded by you.
Days sales outstanding (accounts_receivable ÷ net_revenue) × days_in_periodCashCarrier prepayment and deposits
Cash out at booking, on lanes where allocation has to be secured in advance.
Days payables outstanding (accounts_payable ÷ cogs) × days_in_periodCashUnbilled shipments
Work completed and not yet invoiced, usually because a cost document has not arrived.
Cash conversion cycle dso + dio − dpoCashAgent net position
Money owed between you and your partners in both directions, reconciled slowly.
Days sales outstanding (accounts_receivable ÷ net_revenue) × days_in_periodCashEquipment and container capex
Owned or leased boxes, which turn a service business into an asset one.
Capex intensity capital_expenditure ÷ net_revenueCashCurrency and settlement timing
Cash converted between the buy and the sell, at a rate that moved in between.
Free cash flow operating_cash_flow − capital_expenditure06 Where the numbers live
The systems behind the branches
A value tree is only usable once each box maps to a system and a record. These are the six that matter most in logistics & freight forwarding: what each one is actually for, the records inside it the tree depends on, and which branch it feeds.
| System | What it holds | Key records | Feeds |
|---|---|---|---|
| Freight forwarding / TMS | The shipment of record: booking, routing, documents, milestones and the charges attached to each leg. | Shipment, Consol, Leg, Charge code, Milestone | Price, quantity, cost |
| Rate and contract management | Buy rates, sell tariffs, allocations and surcharge formulas, by lane and validity period. | Rate, Lane, Contract, Surcharge, Validity | Price, cost |
| Customs and compliance | Declarations, classifications and the screening that gates a shipment moving at all. | Declaration, HS code, Party, Screening result | Cost, quantity |
| Warehouse / CFS | What is physically in the facility: consolidation, deconsolidation and the handling that gets billed. | Stock item, Handling event, Location, Consol | Cost, price |
| Finance / ERP | Invoices, cost accruals and the shipment-level profitability the rest of the business argues about. | Invoice line, Accrual, Cost centre, Job | Price, cost, cash |
| Track and trace / EDI | Carrier and terminal messages: the events that prove service and start the demurrage clock. | EDI message, Event, Container, ETA/ATA | Quantity, cost |
Almost every hard question in logistics & freight forwarding needs two of these joined. That join — not the calculation — is the work.
07 Where it leaks
Value lost between two systems
These are the losses that no single system can see, because the evidence is split across two of them. Each one is a real number that stays invisible until the join exists — which is why the tree is an integration exercise before it is an analysis one.
| Where value leaks | Why it happens | The join that finds it |
|---|---|---|
| Shipment profit at standard cost, not actual | The job is costed on accruals at booking and the real carrier and terminal invoices arrive weeks later. Lane decisions are made on the estimate. | Join the actual cost document to the shipment job, and re-close it |
| Demurrage paid, never recovered | The charge arrives from the carrier while the evidence of who caused the delay sits in milestone events nobody joined to it. | Join EDI milestone events to the demurrage charge and the responsible party |
| Accessorials earned and not billed | Waiting time and special handling happen in operations and are billed from a document that never records them. | Join the handling event in the warehouse system to the charge code on the job |
| Lane profitability only in aggregate | Reporting rolls up to trade or region, so a loss-making lane hides inside a profitable trade for years. | Cost and report at shipment level, then aggregate — not the other way round |
| The same customer under many codes | A global shipper is a different account in every origin office, so tender pricing is set without knowing the total relationship. | Resolve customer to a global parent across every office and system |
08 Worked example
A record volume year at a thinner spread
Volume grew 14% and gross profit per shipment fell. The tree separates it: buy rates rose faster than the sell tariff was repriced, consolidation ratio slipped on two trades, and demurrage paid but not recovered absorbed most of what was left. All three are visible only once actual cost documents are joined to the job.
| Component | Effect | What sits behind it |
|---|---|---|
| Volume | +€4.1m | 14% more shipments at the prior spread |
| Buy rate inflation | −€2.7m | Repriced late on contracted lanes |
| Consolidation slip | −€1.3m | Console fill down on two trades |
| Demurrage not recovered | −€0.9m | Charged by carriers, not passed on |
| Unbilled accessorials | −€0.4m | Performed in operations, never invoiced |
| Net | −€1.2m | More freight moved, less profit made |
Illustrative figures, shown to demonstrate the split. The point is the shape of the walk, not the numbers — on your own data the same bridge is built from your ledger.
09 Diagnostics
Six questions to ask in logistics & freight forwarding
Ask them of your own team before anyone asks them of you. In most organisations at least two of these cannot be answered without a manual exercise, and those two are the plan.
- Can you produce true profit for one shipment, including every actual cost document?
- How much demurrage did you pay last quarter, and how much of it was recoverable?
- Which lanes lost money last month — and would two of your offices agree on the answer?
- Is the same global shipper one customer in your systems, or one per office?
- What proportion of accessorial work performed was actually invoiced?
- How long after delivery does a job close financially, and what is waiting for?
10 The metrics behind it
Definitions for every box
11 Questions
Frequently asked
Why is shipment-level profitability so hard?
Because the costs arrive after the job is done, from different parties, in different currencies, against a reference that is not always the shipment number. The arithmetic is trivial; matching the cost document to the job is the work.
What does entity resolution change for a forwarder?
It turns twelve local accounts into one global customer, which is the only way to price a tender knowing the total relationship and the total cost to serve it.
Is consolidation ratio really a margin metric?
In LCL it is the margin metric. The box costs what it costs; every additional cubic metre in it is close to pure contribution, which is why a point of fill outperforms a point of rate.
Where should a forwarder start?
One trade lane, with actual cost documents joined to the job. It produces a defensible shipment P&L in weeks and usually finds recoverable demurrage that pays for the work.
See this tree on your own data
Connect the systems above, define each box once, and the tree stops being a slide.