Accounting & Finance

How do I track landed costs when freight and duty invoices arrive after I already started selling?

Handling landed cost when freight and duty bills show up after the goods have sold.

Last updated September 16, 2026

Estimate on the receipt. Sell. True-up when the forwarder invoice lands. That is the whole method.

How landed cost moves WAC

Opening a PO does nothing to unit cost. Cost moves when goods receive, when a supplier invoice disagrees with the PO, and when freight, brokerage, duties, and tariffs post. Sales tax does not capitalize. 3PL storage and pick-pack are fulfillment, not inbound landed cost. The blend is (qty on hand times old average, plus qty received times receipt cost) divided by total qty. It pools the whole SKU, not the container. One expensive DDP shipment re-prices every unit you still hold, and the next sale of an old unit expenses the new blend.

Additive landed cost and pool allocation

Landed cost is additive. Either put the fully loaded price on the receipt, or keep FOB and let landed cost add freight, brokerage, duty, and tariff. Doing both double-counts. A "$2.94 freight" line on a container is a pool allocated by value share, not $2.94 per unit. Enter the container total and let the system spread it. If you type the pool figure into each SKU as a per-unit rate, every later sale is wrong on purpose.

Estimating and truing up late invoices

Freight and duty invoices arrive weeks late, so the first sales expense a too-low cost. That is why you estimate. Put a defensible freight and duty estimate on the receipt so early sales are close. Build it from the last like container or the forwarder's quote, allocated the same way you will allocate the actual (value share, not a round number per SKU). A made-up $1 per unit is not an estimate. It is a plug the true-up will dump into this period's COGS. When the actuals post, the correction splits: on-hand units get revalued, units already sold hit this period's COGS. Last quarter's margin is not restated. Expect a lumpy close. Do not explain January with March's duty bill. If you skip the estimate and wait for actuals, every early sale is wrong on purpose. If you never true-up, every later sale is wrong forever. Run both.

Fields to avoid and FX residuals

Do not confuse fields. Last received price is a receipt, not valuation. A factory-direct FOB channel should show lower COGS than a DDP warehouse. That is not a bug. Sweep the duties clearing account at month end. A CAD bill and a USD allocation will leave an FX residual. That is timing, not a costing error. Reconcile valuation to the GL by SKU before you argue about ads. A $1 leftover cost on a kit will poison the Shopify cost feed and the contribution-margin dashboard even when the P&L used live component averages.

This is timing, not location. Missing 3PL or FBA nodes invent phantom COGS. Late invoices invent a lag, then a catch-up. Keep the estimate honest, post the true-up in the period the invoice arrives, and leave history alone.

Run this with AI

Connect Claude or ChatGPT to your Fulfil data with the Fulfil MCP, then run this prompt on your own numbers.

You are the finance lead for a DTC brand.
Here is: sku, on_hand, wac, last_received_fob, freight_pool_estimate, duty_pool_estimate, units_already_sold_from_this_receipt, sell_price.
[paste the actual freight/duty invoices]

Produce:
1. Estimated landed WAC at receipt vs true-up WAC after invoices.
2. What hits on-hand vs this period's COGS (do not restate history).
3. Double-count risk (FOB plus landed vs replace).
4. Per-unit vs pool allocation errors.
Flag any SKU selling below the new blend.

See it run on
your data.

Fulfil runs inventory, fulfillment, purchasing, and accounting for scaling DTC brands in one system.