Guide for procurement · Freight tenders

How to evaluate a freight RFP: 6 criteria a per-kilometer price doesn't show

The most expensive mistake in a transport RFP is ranking bids by price per kilometer and picking the second-lowest. Two rates for the same lane can describe very different trips — with or without a return load, with or without dwell included, above or below the legal floor. These are the six criteria that separate a real comparison from a sorted list of numbers.

Audit my lanes before the RFP → Up to 10 lanes · should-cost per lane · no cost
44%
Gap from the backhaul assumption
Same lane, US$985 or US$550, depending on whether the carrier has a return load.
100
Lanes per batch
The engine compares every bid in an RFP against the same floor, from a file.
#1
Most volatile line
Port dwell and border: what a flat price reflects worst.
+38%
One over-summed toll example
Panama → Colón, every gantry billed separately: US$19.16 vs US$13.90.

1. Demand a breakdown that reconciles

The first filter is simple and removes half the problems: require every bid to come broken into its lines — fuel, driver, tolls, maintenance, insurance, dwell and return — and require that the lines sum exactly to the total. When we found US$113 of empty-return tolls inside a total without appearing on any line, it wasn't bad faith: it was that nobody had required it to reconcile. A breakdown that doesn't reconcile isn't a breakdown. And every line should say where the figure comes from: which diesel price, which plaza, which wage.

2. Compare against the lane's should-cost, not the second bid

The second-lowest bid isn't a reference: it's another market price, with its own margin and its own assumptions. The right reference is the lane's should-cost — the rebuilt cost of operating it, with no margin. Against that floor, every bid reads as % above cost, and that percentage is comparable across carriers in a way raw prices are not. A bid 18% over cost with a secured backhaul and another 12% over cost with no backhaul are not 6 points apart: they describe different trips.

3. Make bidders declare the return assumption

It's the variable that moves a full-truckload rate the most, and the one almost no tender asks for. On Bogotá → Medellín the same trip costs US$985 with no return load and US$550 with a secured backhaul: 44% of the rate. If your RFP doesn't force every bidder to state whether their price assumes an empty, partial or secured return, you're comparing apples to trucks. Make it a mandatory field. Here's the empty-return detail.

4. Separate dwell and border from the linehaul

On a corridor that starts at a port or crosses a border, waiting hours are the most volatile item in the whole operation: they run from a few hours to more than a day depending on processing, congestion and season. A flat price that includes them "on average" is transferring that risk to someone — and you don't know to whom or for how much. Require the linehaul, dwell and border cost as separate lines, with free time and detention rate explicit. Then the comparison between bids measures transport, not luck in the yard.

5. Check the country's legal floor

In Honduras the minimum freight rate is regulated (IHTT): a base tariff plus a temporary fuel surcharge of US$0.22/km, both inside the legal minimum. A bid below the floor isn't a bargain: it's a bid that can't be legally fulfilled, and the risk of that operation ends up on your cargo. A should-cost that shows the legal floor next to operating cost turns this into a one-second check. Disqualify before you compare.

6. Normalize to a unit your business understands

Price per truck hides real efficiency when the load cubes out before it weighs out. Normalize every bid to the unit you budget in — cost per loaded kilometer, per pallet or per case — and to one exchange rate and date. Only then are two bids from different countries, with diesel more than 2× apart, actually comparable.

What it looks like in practice

A well-evaluated RFP ends in a table, not a price list: for each lane, the corridor's should-cost, and for each bid, the % above that cost, the declared return assumption, dwell and border separated, the legal-floor check and the normalized unit cost. With 10 lanes you do it by hand; with 100 or 500, the engine processes them in batch from a file and returns the same table. The result is a decision you can defend to finance and to the carrier with the same numbers.

Mandatory fields for your next tender

A bid 18% over cost with a secured backhaul and another 12% with no backhaul are not 6 points apart. They describe different trips.

Frequently asked questions

Isn't it enough to pick the lowest compliant bid?
Only if every bid describes the same trip, and they rarely do. Without a declared return assumption, separated dwell and a legal-floor check, the lowest price is usually the one transferring the most risk. The right reference is the lane's should-cost, not the next bid.
How do I compare bids from different countries?
By normalizing to the same unit (cost per loaded km, per pallet or per case), the same exchange rate and date, and reading each as a percentage above its own corridor's should-cost. Diesel varies more than 2× between countries, so a raw price says nothing on its own.
Can I do this for an RFP with hundreds of lanes?
Yes. The engine processes up to 100 lanes per batch from a file and returns, for each one, the should-cost, cost per kilometer, per-country split and legal floor. It's how you compare every bid against the same floor without doing it lane by lane.

Keep reading

Walk into the RFP with every lane's floor

Upload up to 10 lanes and get each one's should-cost before the bids open — so every price reads as % above cost from day one.

We audited a global ocean carrier's 10 Central American corridors and found ~12% average overpayment.