Skip to content

Your best-seller might be your biggest loss

6 min readProTechBridge

Here is a shipment. Two products, one freight invoice of $4,200.

Units Unit cost Unit weight Sells for
Product A — cheap, heavy 1,000 $3.00 1.00 kg $6.00
Product B — pricey, light 1,000 $30.00 0.05 kg $45.00

The freight bill covers the whole container. To know what each product cost you, you have to split that $4,200 between them. Almost every spreadsheet we have ever been shown splits it by order value, because that is the number sitting right there in the purchase order.

Product A is 9% of the shipment's value, so it absorbs 9% of the freight:

  • $382 total, or $0.38 per unit. Landed cost $3.38, sells for $6.00.
  • Margin: +$2.62 a unit. A healthy product. Order more.

Now split the same invoice by weight, which is what the freight forwarder actually charged you for. Product A is 95% of the container's weight:

  • $4,000 total, or $4.00 per unit. Landed cost $7.00, sells for $6.00.
  • Margin: −$1.00 a unit.

Same shipment, same invoice, same products. One method reports $2,620 of profit on Product A; the other reports a $1,000 loss. A $3,620 swing on one line of one shipment, decided entirely by a choice nobody remembers making.

The weight-based number is the true one. A pallet of cheap, heavy goods causes almost all of the freight cost, and value-based allocation hands that cost to whichever product happens to be expensive. The expensive product looks worse than it is; the cheap one looks profitable while quietly losing money on every sale. And because it is cheap, it sells well — so you scale it.

Why this is so easy to get wrong

The costs that decide profitability arrive from six directions, in six formats, on six schedules: freight forwarders, customs brokers, the platform's own fee statements, affiliate commission, ad spend, and 3PL handling.

None of them reconcile to an order. Freight bills a shipment. The platform bills a transaction. The 3PL bills a month. Ad spend attaches to a campaign that touched hundreds of orders. There is no shared key, so every attempt to combine them involves a modelling decision — and modelling decisions made inside a spreadsheet at 11pm are rarely revisited.

Allocation is the biggest of those decisions, and it is not one rule. Different costs are caused by different things:

  • Freight and duty track weight and volume
  • Insurance and some customs charges genuinely track value
  • Prep, pick and pack track unit count, not weight or value

A single "split everything by value" rule gets two of those three wrong.

Then time makes it worse

Even with allocation right, a second problem waits.

You buy inventory at one landed cost. Freight rates move, your supplier adjusts, the exchange rate drifts, and the next shipment of the same SKU lands at a different cost. You now hold two batches of an identical product with materially different economics.

Average them together and margin erosion becomes invisible at exactly the moment it matters. The blended number drifts down slowly and looks like noise. Cost each batch on a FIFO basis and you see the truth: the units you are selling today came from the expensive shipment, and that product stopped being viable six weeks ago.

Worth being straight about the limit here. The platform never tells you which physical batch shipped against a given order — that information does not exist in any report. So oldest-first is an assumption, not a measurement. It is a far better assumption than blending everything into one average, and it is the same convention accountants have used for a century, but it is still a stated rule rather than a fact. Anyone selling you batch-level costing without saying so is glossing over something.

What we built

CogsIQ is our answer to this, and we built it because we kept meeting the problem and finding nothing that solved it properly.

It ingests the messy source documents as they actually arrive — not as a tidy import template — and reconciles them into a per-unit, per-SKU, per-batch cost. Allocation is chosen per cost type rather than applied globally: weight for freight, value where value genuinely drives the charge, unit count for handling. Costing is FIFO by batch, so each shipment carries its own real economics through to the units that came from it.

One rule governs the whole cost model: every dollar has exactly one home. A cost is inventoriable if it made units sellable — freight, customs, prep — and belongs in landed cost. It is fulfilment if the platform or your 3PL charges it per order, in which case it already arrives in their reports and must never be added to a purchase order as well. Otherwise it is overhead. Getting this wrong is how businesses end up double-counting their own costs and quietly under-reporting profit, and it is a far more common error than under-counting.

On top sit two views that answer different questions. Accrual tells you what you made. Cash tells you what you can spend, including the portion of every settlement the platform holds in reserve for around thirty days against future returns. Those two numbers will not match, and they are not supposed to — the gap is a timing difference, not an error. Presenting it as an expected, explained difference rather than a discrepancy to be reconciled away is most of the value.

Agencies running several shops get scoped access per client and management-fee reconciliation on top, because the operator running ten stores has a profitability problem one level up from the sellers.

There is a fuller write-up of how it was designed and built on our CogsIQ case study, and the product itself lives at cogsiq.io.

What we would tell you anyway

Even if you never touch our software, three things are worth doing this week:

  1. Find out how your freight is currently allocated. If the answer is "by order value" or "nobody knows", you have the problem in this article. Re-run your last shipment by weight and compare.
  2. Stop averaging batches. At minimum, track landed cost per shipment rather than a single rolling figure per SKU.
  3. Check your worst offenders first — cheap, heavy, high-volume products. That is where value-based allocation does the most damage, and where the correction is largest.

None of this requires new software. It requires knowing which number you are looking at, which is the part most sellers have never been shown.

  • E-commerce
  • Unit economics
  • CogsIQ

Need a hand with this in practice?

Reading about it is one thing. If you want someone to actually do it, that is what we are for.