How to allocate freight across purchase order lines
Freight on a purchase order can be split by unit, by value, by weight or by cubic volume, and on one pallet those four methods differ by 6.7 times per unit.
Last reviewed 6 min readSupplyForge LLC
Freight on a purchase order is allocated across lines by one of four drivers — units, value, weight or cubic volume — and the driver chosen changes per-unit freight several times over. Allocate on billable weight where the carrier priced the shipment on weight, and on cubic volume where you paid for space.
Freight allocation looks like a bookkeeping formality until you notice that the same $640 pallet can make a SKU look like a 6.7% buy or a 29.6% buy depending on nothing but which column you divided by.
What freight allocation on a purchase order decides
Freight allocation decides which SKU on a mixed purchase order carries which share of a single shipping charge, and therefore which SKUs clear your ROI floor. A carrier bills one number for the whole shipment. Cost of goods sold needs a number per unit. Allocation is the bridge, and every allocation is a claim about what caused the freight cost.
The claim matters because purchase orders in wholesale are almost never homogeneous. A typical replenishment order from a distributor mixes a dense, cheap, high-count SKU with a bulky, expensive, low-count one, and those two lines have opposite relationships to every possible driver. Getting the driver wrong does not add noise evenly — it systematically overcharges one end of the order and undercharges the other, which biases every future buy decision in the same direction.
The four freight allocation drivers
Four drivers are in common use, and each encodes a different theory of what the carrier charged for.
- By unit — total freight ÷ total units. Assumes every unit cost the same to move. Requires no data at all.
- By value — each line's share of invoice value. Assumes nothing physical; freight carriers do not price on invoice value. Its only merits are that it is always computable and that it loads cost onto expensive SKUs that can absorb it.
- By weight — each line's share of total shipment weight. Correct for LTL and parcel shipments priced on weight, which is most of them.
- By cubic volume — each line's share of total cube. Correct when you bought space rather than weight: a full container, a truckload, or a pallet position.
One pallet, four allocation methods
A single worked pallet shows the size of the disagreement. One LTL pallet, $640 of freight, three SKUs, 324 units, $4,368 of goods, 600 lb, 54.0 cubic feet.
| Line | By unit | By value | By weight | By cubic volume |
|---|---|---|---|---|
| SKU A — 240 units, $6.00, 0.5 lb, 0.04 ft³ | $1.98 | $0.88 | $0.53 | $0.47 |
| SKU B — 60 units, $28.00, 3.0 lb, 0.30 ft³ | $1.98 | $4.10 | $3.20 | $3.56 |
| SKU C — 24 units, $52.00, 12.5 lb, 1.10 ft³ | $1.98 | $7.62 | $13.33 | $13.04 |
Every column totals $640. SKU A ranges from $0.47 to $1.98 per unit, a factor of 4.2. SKU C ranges from $1.98 to $13.33, a factor of 6.7. On SKU A's $6.00 unit price, the spread between the cheapest and dearest method is 25% of the goods cost.
The identity that predicts every cell in that table
Every cell above follows from one identity, which is worth knowing because it lets you sanity-check an allocation without recomputing it: per-unit freight for a line = (total freight ÷ total units) × (that line's per-unit driver ÷ the shipment's average per-unit driver).
Check it against SKU C. Total freight ÷ total units is $640 ÷ 324 = $1.9753. The shipment's average unit weight is 600 lb ÷ 324 = 1.8519 lb, and SKU C weighs 12.5 lb per unit, a ratio of 6.75. Multiply: $1.9753 × 6.75 = $13.33, which is exactly the by-weight cell. The same identity with volume gives 1.10 ÷ 0.1667 = 6.60 and $13.04.
Two consequences fall straight out. The by-unit method is not a separate method at all — it is every other method with the ratio forced to 1. And the maximum error from choosing wrongly is bounded by how far your lines spread on the driver: if the heaviest line is within twice the shipment average, no line can be off by more than a factor of two.
How the allocation driver flips a buy decision
The allocation driver flips buy decisions in both directions on the same purchase order, which is why the error does not wash out across a catalog. Take SKU A: $6.00 unit price, $0.55 of prep and inbound shipping to Amazon, $9.10 of net proceeds after Amazon fees.
- Allocated by unit, landed cost is $8.53 and net ROI is 6.7% — below a 10% floor, rejected.
- Allocated by cubic volume, landed cost is $7.02 and net ROI is 29.6% — a strong buy.
Now SKU C, at $52.00 with $1.20 of prep and inbound shipping and $72.00 of net proceeds. Allocated by unit, landed cost is $55.18 and net ROI is 30.5%. Allocated by weight, landed cost is $66.53 and net ROI is 8.2%. One shipment, one freight bill, and the by-unit method simultaneously rejects a good SKU and approves a bad one. Both errors point at the same cause and neither is visible in the reported number. Freight is one component of landed cost for Amazon wholesale, and it is the component most often left out entirely.
Allocate on billable weight, and when by-unit is good enough
Allocate on billable weight — the greater of actual and dimensional weight, using the divisor the carrier publishes — because billable weight is the quantity the carrier actually priced. Allocating on the driver the invoice was calculated from is the only choice that is defensible rather than merely consistent. When you bought space instead of weight, which is the case for a full container or a bought-out truckload, cubic volume is the driver the invoice was calculated from and cubic volume is what you use.
By-unit allocation is the right choice in one situation: when the lines are close together on the driver. By the identity above, a shipment whose lines all sit within a factor of two of the average unit weight cannot produce more than a two-fold error, and on freight worth cents per unit that is not worth the data entry. Accessorials — liftgate, residential delivery, fuel surcharge, reconsignment — follow the base freight driver, with one exception: a per-carton or per-pallet charge is allocated per carton first, then spread within the carton. Freight that arrives on its own invoice weeks later still has to be re-spread across received units, which is covered in managing wholesale purchase orders for FBA. Forge Command performs freight allocation on the purchase order itself and feeds the result into the same landed cost and margin functions used everywhere else in the product, so a re-spread updates ROI on the Wholesale and Products tabs at the same time. It allocates by weight when every ordered line carries a unit weight and falls back to line-total pro-rata otherwise, never mixing the two on one order. Because that allocated cost becomes the cost basis, it flows through to FIFO COGS for Amazon sellers and the profit report built on it.
Frequently asked questions
Which freight allocation method is most accurate
Billable weight for weight-priced shipments and cubic volume for space-priced shipments, because those are the quantities the carrier used to calculate the invoice. Accuracy here means matching the carrier's own cost driver, not matching an accounting convention, and any other driver is an approximation of that one.
Can I just add freight as a flat percentage of the invoice
Only as a placeholder before the freight bill arrives. A flat percentage is by-value allocation with extra steps, and by-value systematically undercharges heavy cheap SKUs and overcharges light expensive ones. Replace the estimate with the real allocation at receipt and keep both so the variance is visible.
Does allocated freight change if the supplier short-ships
Yes, and this is the most commonly missed correction. Freight was billed for the whole shipment, so it must be re-spread across the units that actually arrived. Leaving it spread across ordered units understates per-unit freight and leaves part of the freight bill attached to no unit at all.
How does freight allocation affect the ROI floor
Directly. On a 10% net ROI floor, a SKU near the line can pass or fail purely on allocation method, as SKU A and SKU C both do in the worked example above. Fix the driver before tightening the floor, because a wrong driver produces false rejections and false approvals in the same order.