Your supplier's invoice is the smallest number your product will ever cost you. Everything between their dock and your shelf belongs in the unit cost too.
Your supplier's invoice says $3.00 a unit. You price the cast-iron trivet at $24.95, call it an 88% margin, and scale the ad spend, because at 88% you can afford almost any CPA the auction throws at you.
Then the freight invoice lands. Then the customs entry with the duty line. Then the drayage bill for getting the container from the port to your 3PL. None of them say "trivet" on them, so they get coded to some expense account called Freight or Shipping and forgotten. Months later — usually when a tariff changes or a CPA asks how you valued your inventory — you do the math properly for the first time and discover the trivet never cost $3.00. Its landed cost was $4.98. Your 88% margin was 80%, and on your heaviest SKU it was never close.
If you've had that moment — repricing everything after discovering your "cost" column was really your "supplier invoice" column — this post is the fix. It covers what belongs in landed cost, how to spread a shipment's costs across SKUs without distorting them, and the per-shipment spreadsheet method that actually works at small scale.
What Landed Cost Actually Is
Landed cost is everything it takes to get a sellable unit onto your warehouse shelf, expressed per unit. For an importing seller, that's five things:
- Product cost — the supplier invoice.
- Freight — ocean or air, plus the inland leg to your warehouse or 3PL.
- Duties and tariffs — what customs charged on the entry.
- Cargo insurance — coverage on the shipment in transit.
- Inbound handling — customs brokerage fees, drayage, container unloading, receiving fees at the 3PL.
Add those up for a shipment, divide sensibly across the units in it, and you have landed cost per unit — the number every margin calculation should run on.
The accounting rule that follows: all of it is capitalized into inventory, not expensed on arrival. The freight bill isn't an operating cost of March; it's part of what those units cost, and it sits on the balance sheet inside your Inventory asset until the units sell. When a unit sells, its full landed cost — not just the supplier portion — moves to cost of goods sold. If the buy-as-asset, expense-when-sold timing is new to you, start with our guide to COGS for Shopify sellers — this post assumes that model and goes deeper on the importing layer.
The Lie: "My Cost Is the Supplier Invoice"
The belief that produces the trivet problem is simple: the supplier invoice is the product cost, and freight, duty, and handling are just overhead — the cost of doing business.
It's an appealing belief because it matches how the bills arrive. Only the supplier invoice has SKUs and quantities on it — so only the supplier invoice gets treated as product cost.
But "overhead" is a claim that a cost doesn't belong to any particular unit — and every one of these costs does. The freight on a container of trivets exists because of the trivets. Expense it separately and two things break. Your P&L gets noisy: months when containers land look worse than they were, and the months after look better — the same purchase-timing distortion that expensing inventory on arrival causes, just applied to freight and duty instead of product. And your per-SKU costs go quietly wrong, because freight and duty don't hit every product equally. A heavy, cheap item carries far more freight per dollar of value than a light, expensive one. Treat freight as overhead and your heavy SKUs look more profitable than they are — permanently.
You didn't do the bookkeeping wrong. You coded the bills the way the bills presented themselves. The bills were just lying about what they were.
Allocating a Shipment: By Value or By Weight
Once you accept that a shipment's costs belong to its units, the practical question is how to split them when a container holds more than one SKU. There are two standard bases, and each one distorts if you use it for the wrong cost.
Allocation by value splits a cost in proportion to each SKU's share of the product total. It's the right basis for costs that scale with what the goods are worth — duty (which is mostly charged as a percentage of value), insurance, and brokerage. It distorts badly when applied to freight on a mixed container: freight is a weight-and-volume cost, and value-based allocation shifts freight off your heavy, cheap SKUs and onto your light, expensive ones. The heavy item — the one freight actually exists for — ends up under-costed.
Allocation by weight or volume splits a cost in proportion to kilograms or cubic meters — the right basis for freight and physical handling. Applied to duty, it distorts the other way: light, high-duty SKUs get under-charged.
The practical rule: freight and handling by weight (or volume, if your goods are bulky rather than heavy) · duty, insurance, and brokerage by value. If a container is genuinely homogeneous — one SKU, or several SKUs of similar density and value — a single value-based split is fine and simpler. The mixed container of heavy-cheap and light-expensive goods is where single-basis allocation quietly rewrites your margins.
One note on the duty line before we use it: duty rates change. They vary by tariff classification and country of origin, and in recent years they've moved more often and more sharply than any other cost on the entry. Don't hard-code a duty percentage into your cost model and forget it — take the actual duty from each customs entry, and confirm current duty treatment for your products with your customs broker. A rate that was right when you built the spreadsheet can be wrong by the next container.
The Spreadsheet-Per-Shipment Method
At small scale — a container every month or two, a manageable SKU count — landed cost doesn't need software. It needs one spreadsheet tab per shipment, built when the entry documents arrive. Here's a full worked example. Fictional store, round numbers.
One container lands with three SKUs of kitchen goods:
| SKU | Units | Supplier cost | Product value | Unit weight | Total weight |
|---|---|---|---|---|---|
| Cast-iron trivet | 2,000 | $3.00 | $6,000 | 1.8 kg | 3,600 kg |
| Linen apron | 1,500 | $8.00 | $12,000 | 0.3 kg | 450 kg |
| Oak serving board | 500 | $14.00 | $7,000 | 1.5 kg | 750 kg |
| Total | 4,000 | $25,000 | 4,800 kg |
The shipment's other costs: $4,320 freight (ocean plus inland), $1,850 duty (taken line by line from the customs entry: $540 on the trivets, $960 on the aprons, $350 on the boards — duty follows each product's own rate, so use the entry's actual per-line figures whenever you have them), and $750 in insurance, brokerage, and drayage.
Allocate freight by weight ($4,320 ÷ 4,800 kg = $0.90/kg), duty per the entry, and the $750 by value (3% of product cost):
| SKU | Product | Freight | Duty | Ins. + handling | Total | Landed cost/unit |
|---|---|---|---|---|---|---|
| Cast-iron trivet | $6,000 | $3,240 | $540 | $180 | $9,960 | $4.98 |
| Linen apron | $12,000 | $405 | $960 | $360 | $13,725 | $9.15 |
| Oak serving board | $7,000 | $675 | $350 | $210 | $8,235 | $16.47 |
| Total | $25,000 | $4,320 | $1,850 | $750 | $31,920 |
Look at what the allocation basis just did. The trivet's landed cost is 66% above its invoice price; the apron's only 14%. Allocate that freight by value instead and the trivet absorbs $0.52/unit of freight instead of $1.62 — understating its real cost by more than a dollar a unit, on the SKU where you can least afford it.
The journal entry when the shipment lands: debit Inventory $31,920, credit Accounts Payable (or cash) $31,920 — entered via the supplier, freight, and broker bills, all pointed at the Inventory asset account. The P&L doesn't move. Those per-unit figures become the landed costs in your monthly COGS calculation, and cost hits the P&L only as units sell.
One currency note for imported goods: if your supplier invoices you in another currency, the product cost in your spreadsheet is what you actually paid in the currency your books are kept in — the settled amount from your bank, not the invoice figure converted at whatever rate you found that day. Your bank already answered the conversion question; use its answer.
The whole method is one tab per shipment, four bills, and twenty minutes. Its only real failure mode is not doing it — letting a container land and coding the freight bill to an expense account "for now."
When a Spreadsheet Stops Being Enough
The per-shipment tab holds up surprisingly far. It starts to crack when the assumptions behind it do: multiple containers a month, partial shipments splitting one PO across entries, hundreds of SKUs, bundles and assemblies built from imported components, or stock spread across warehouses at different landed costs. At that point the spreadsheet isn't a method anymore — it's a part-time job with an error rate.
That's when dedicated inventory software with a landed-cost module earns its keep: it attaches freight and duty to receipts as they happen, maintains per-unit costs across locations, and pushes clean inventory and COGS values to QuickBooks. We've written an honest, no-affiliate breakdown of the options in our guide to inventory management software for Shopify and WooCommerce — including who genuinely doesn't need one yet.
What Wrong Landed Costs Break Downstream
It's worth being clear about the blast radius, because landed cost errors don't stay in the cost column.
Your margins lie, SKU by SKU. Every contribution-margin decision — which products to scale, which to kill, how much you can bid per order — runs on landed cost. Under-cost the heavy SKU and you'll scale ads into a product that's quietly breaking even. Our guide to contribution margin by SKU and channel shows the full calculation; landed cost is its foundation, and it inherits every error.
Your year-end inventory value is wrong. The stock on your balance sheet is valued at cost — landed cost. Carry units at supplier price and your inventory is understated, which overstates the COGS of everything you sold and misstates taxable income. When the year-end count and valuation comes around, the gap surfaces at exactly the moment it's most expensive to fix.
Your pricing runs on fiction. The trivet at "$3.00" gets a sale price the trivet at $4.98 can't survive.
The Version of You That Knows What a Unit Costs
The next container that lands takes twenty minutes instead of leaving a trail of orphaned freight bills. Every SKU has a landed cost you'd defend to a CPA, gross margin moves when costs move — not when containers land — and a tariff change shows up in your spreadsheet the week it shows up on the entry, not at tax time.
Landed cost is the cost side of your margin. The other side — revenue, fees, refunds, and payouts flowing from your store into QuickBooks accurately — is what LedgerPort automates, so the landed costs you just calculated have clean sales numbers to match against. LedgerPort doesn't compute landed cost for you; it makes sure the rest of the margin math isn't fiction. There's a free plan for stores up to 30 orders a month, and paid plans start at $25/month.
See how LedgerPort keeps the revenue side of your margin honest →
Landed cost is one piece of a clean import operation's books — for the whole map, from payouts to sales tax to inventory, start with our complete guide to ecommerce accounting.
