Allocating Freight-In When A Container Cost Spikes Mid-Quarter

Metricuno
August 5, 2026
7 min read
Allocating Freight-In When A Container Cost Spikes Mid-Quarter — How to reallocate freight-in when a container lands materially more expensive: weighted-average landed cost vs per-shipment cohorts, without misreporting margin.
Quick answer

When a container lands 40% more expensive than the last one, the wrong freight-in method quietly overstates your margin. Here's how to choose between weighted-average landed cost and per-shipment cohorts — and which SKUs need which.

Quick answer

If the SKUs from the cheap and expensive containers are physically interchangeable on your shelf, roll them into a weighted-average landed cost from the moment the new container is received — do not backdate. If the containers stay physically separated (different POs, different launch drops, or you can identify units by lot), keep per-shipment cohorts and let the old cost run out before the new cost hits COGS.

Definition
COGS Allocation

Freight-in allocation on a container cost spike

Re-costing inventory when a new shipment lands materially more expensive than the previous one, so COGS reflects the true cost of the units you're actually selling.

Freight-in is the inbound shipping, duties, and handling cost you capitalise into inventory rather than expensing as freight. When rates are stable, it's a rounding exercise. When a container lands 30–60% more expensive than the last one — a peak-season surcharge, a re-routed vessel, a tariff change — the allocation method you pick decides whether this quarter's margin report reflects reality or last quarter's cheaper units.

The two defensible choices are weighted-average landed cost (pool old and new units, recompute a blended unit cost) and per-shipment cohorts (keep each container's cost identifiable and burn it down FIFO). Neither is universally right; the choice is driven by whether the units are physically interchangeable on your shelf.

Also known as
landed cost re-allocation
freight-in absorption
container cost variance allocation

The failure mode is silent: you sell through the cheap container in April, receive an expensive one on May 3, and keep reporting April's unit cost against May and June sales. Reported gross margin looks fine. Then Q2 books close, the accountant trues up landed cost, and 8 points of margin disappear in one journal entry.

Why the spike breaks your margin report

Most Shopify and WooCommerce stores carry a single "cost per item" field per SKU. That field is a snapshot — it doesn't automatically move when a new container is received at a different landed cost. Every downstream margin report (Shopify Analytics, your BI tool, your Contribution Margin Calculator) reads that stale number until someone edits it.

So a 40% freight increase on a $12 apparel SKU — say $2.10 of freight-in becoming $2.95 — doesn't appear in your P&L when the container is received. It appears when someone finally updates the SKU record, which is often weeks late and rarely retroactively applied to the sales that happened in between.

The bookkeeping trap

Do not backdate a freight-in change to sales that already shipped. GAAP and IFRS both treat landed cost as attaching to units on receipt — units sold before the new container arrived were correctly costed at the old rate. Backdating inflates the true-up and pollutes your period-over-period trend.

How to detect it before close

Run three signals weekly during any quarter where freight rates are moving. First, freight-in per unit by container: take the invoice total (ocean, drayage, duty, brokerage) and divide by the receipt quantity. If the newest container is more than 15% off the trailing 90-day average, flag it.

Second, watch the gap between "reported unit cost" in Shopify and "actual landed cost" in your inventory system or spreadsheet. A widening gap on your top 20 SKUs is the single best leading indicator that this quarter's contribution margin is a fiction. Third, monitor days-of-cover on the old cohort — once it's below 20 days, you need the new cost live in the system.

How to fix it: pick the right method per SKU

Weighted-average landed cost works when the containers commingle. A basic tee restocked every 8 weeks, a hero moisturiser SKU, a phone case — the buyer picking one off the shelf can't tell which container it came from, so neither can your accounting. Recompute the blend at each receipt: (remaining_units × old_cost + new_units × new_cost) ÷ total_units. Push that number into Shopify's cost per item on the receipt date.

Per-shipment cohorts work when the units are separable. Seasonal drops, limited-edition colourways, a new formulation that supersedes the old one, or anything with a lot code you actually track. Here you burn down the cheap cohort first, then flip cost per item to the new landed cost on the day the old cohort hits zero. Your Contribution Margin Calculator now reports true margin for both cohorts independently.

Rule of thumb

If more than 20% of your active SKUs are affected by the spike, weighted-average is faster to operationalise. If fewer than 20% are affected but the spike is severe (>30% landed cost delta), cohort tracking pays for itself in margin visibility — you'll see exactly which SKUs need a price move.

Pricing and experiment ideas once the new cost is live

Once the true landed cost is in the system, sort your SKUs by contribution margin change. Any SKU that dropped below 25% contribution margin is a pricing candidate — but don't blanket-raise. Test a 4–6% price lift on the top three affected SKUs against a hold-out, and read the elasticity over two weeks before rolling wider.

For SKUs where you can't move price (competitive comparables, marketplace parity), the lever is bundle mix. Pair the freight-inflated SKU with a high-margin accessory in a landing-page bundle test — you defend blended margin without touching the sticker. This is where COGS allocation stops being an accounting exercise and starts driving merchandising decisions.

Frequently asked

Freight-in allocation FAQ

Capitalise it. Inbound freight, duty, and brokerage attach to the units and become part of COGS when those units sell. Expensing freight-in as a period cost overstates gross margin on units still in inventory and understates it when they eventually sell.

Allocate by cubic volume (CBM) if the container is space-limited, or by declared value if it's a mixed high/low-value load and duty is the dominant cost. Weight-based allocation is a distant third — only use it when the shipment is genuinely weight-constrained, like heavy homeware.

Weighted-average blends old and new unit costs into a single number from the receipt date forward. FIFO (which is what per-shipment cohorts implement) keeps each container's cost distinct and consumes the oldest first. FIFO gives cleaner margin attribution per drop; weighted-average is easier to maintain when SKUs restock continuously.

Update both. Your accounting system produces the audited P&L, but every operational report — Shopify Analytics, Triple Whale, your Contribution Margin Calculator, ad-platform ROAS calculations that use gross profit — reads the Shopify cost field. If those disagree with accounting, your team makes decisions on the wrong number for weeks.

On every receipt, not on a calendar. If you receive a container on May 3, the blended cost is live from May 3. Recomputing monthly or quarterly is a common shortcut but it means every sale between the receipt and the recompute is booked at the wrong cost.

Book an estimated landed cost on receipt using the vendor invoice plus a freight accrual, then true up when the actual freight and duty invoices land. The true-up hits the units still in inventory; units already sold at the estimate stay costed at the estimate. This is standard practice and keeps period cutoffs clean.

Yes — anything required to get the goods to your warehouse and into sellable condition is landed cost. Ocean freight, drayage, duty, brokerage, customs bond, and inbound insurance all capitalise. Warehouse receiving labour is a grey area; most DTC teams expense it to keep the model simple.

Only if you feed contribution margin (not revenue) into your ad decisions. Teams optimising on revenue ROAS won't see the impact. Teams optimising on contribution-margin ROAS or profit MER will suddenly see channels look less profitable — that's correct, not a data issue. Rebase your ad target thresholds after the new landed cost is live.

You can, but you'll be pricing, running promos, and buying media on wrong margin numbers for up to three months. The true-up itself is a large negative surprise the finance team has to explain. Weekly recompute on affected SKUs is a few minutes of work and avoids the surprise entirely.

The 3PL fee is part of landed cost, so yes. A flat per-unit fee is easier because there's no allocation step — but if the 3PL's fee schedule changes (peak surcharge, fuel surcharge), the same spike problem appears. Treat the fee change exactly like a freight-rate change: recompute landed cost on the next receipt.

See Metricuno on your data

Bring your stack — Google Analytics, Stripe, a CRM, anything — and we'll walk through the metric tree that turns your funnel into one number.