Getting freight and duty into what a product actually cost

You can put the freight and the duty into Shopify — they go on the shipment, and the transfer totals them so you can see what the delivery really cost. What does not happen is the part that matters to your margin: none of it reaches the cost on the product. Here is how to work out the per-unit number yourself, using the method Shopify's own retired tool used.

You can record the freight. It just does not reach the product.

Shopify is clear about where it goes: "Shipping costs, customs duties, and other fees often aren't known when you create a purchase order. You can add these as cost adjustments to individual shipments on the linked inventory transfer." And it puts them somewhere useful — "The Cost summary on the inventory transfer aggregates all shipment adjustments, so you can compare the agreed cost on the purchase order with the actual cost to receive the goods."

So you get a comparison: what you agreed to pay, against what the goods actually cost to get here. What you do not get is a new cost per unit. Shopify says that too, in the same breath as its advice: "Each product variant has a single static Cost per item field. This cost stays fixed when you receive a purchase order or transfer." — and for spreading freight across units, "use a third-party inventory app that integrates with Shopify's product cost data."

If you already know the freight when you place the order, it can go on the purchase order itself as an adjustment; if it turns up later on the carrier's invoice, it goes on the shipment. Neither reaches the product.

The consequence is arithmetic, not opinion. Until someone edits the cost on the variant, every sale is recorded against a freight-free cost. Your profit report overstates margin by precisely the freight share, and your inventory value understates by the same amount.

Working out the per-unit number

Two methods, and the choice matters more than people expect. (Which costing method you keep at all — last price, weighted average, landed — is its own decision.)

Spread it evenly per unit. Four hundred euros of freight across two hundred units is two euros each. Right when everything in the delivery is roughly the same size and value.

Spread it by value. This is what Stocky did, and the method it used is written down in Shopify's own documentation for it: a landed margin of (subtotal + adjustments + shipping) ÷ subtotal, applied to each item's base cost.

Shopify's worked example: a subtotal of 1,000, adjustments of 200 and shipping of 300 — before tax — gives a landed margin of 1.5, so a 25.00 item lands at 37.50. A 5.00 item in the same delivery lands at 7.50. The expensive thing carries more of the freight, which is usually what a mixed pallet deserves.

Use per-unit when the box is uniform, by value when it is not. A pallet of identical cartons splits evenly. A pallet carrying one heavy machine and four hundred sachets does not, and splitting that evenly makes the sachets look unsellable.

Freight sitting on the transfer instead of the margin? Describe how it should land →

The part that makes this annoying to automate

The freight figure you carefully typed into Shopify cannot be read by any app.

The shipment object in Shopify's API carries quantities, tracking, dates and received counts — and no cost of any kind. Purchase orders themselves became readable in Shopify's October 2026 API version — that part is no longer a preview — but what a purchase order's lines carry is the unit cost of the goods, not your freight invoice. So the four hundred euros exists in your admin as something a person can see and export, and nothing an app can call will reach it.

That means every route to a landed cost — a spreadsheet, an app, us — needs the freight number supplied again, from the invoice, rather than fetched from the delivery it belongs to. It is worth knowing before you go looking for a tool that "just syncs it".

What this does to the numbers you read

Margin looks better than it is, by exactly the freight you did not include. On thin-margin goods with heavy freight, that difference is frequently the whole of the profit.

Inventory is worth less on paper than it cost you. Shopify's month-end inventory value is cost per item multiplied by quantity, so an unallocated delivery understates the asset.

And the correction does not reach the sales already recorded — Shopify records cost at the time of sale, nothing in its help says what a later change does to them, and a test in a real store on 15 October 2026 settled it: an order kept its original cost and gross profit after the cost was edited and the report refreshed. So expect the months before you allocated to keep their freight-free answer. (That was one store and an order from the same day, not a closed month, so it is still worth two minutes of your own testing: change a cost, then look in the profit report at an order from the period you care about, and see. The page on cost going wrong carries the numbers and walks through it.)

Which route is yours

Your situation What to do
Record what the delivery cost, for comparison Native — cost adjustments on the shipment
One product, freight spread evenly Work out per unit, edit the cost
Mixed delivery, freight by value Stocky's formula above, then edit the costs
Every delivery, automatically Not native — an inventory app, or built for you
Read the freight figure back out with an app Not possible — the shipment carries no cost in the API

What Shopivibe does

You describe the outcome: "when I give the store the landed cost of each product in a delivery, put it on that product and keep it there."

The division of labour is the same one every honest answer here has:

We write the numbers and keep them written. Once the landed cost of a delivery is known, it goes onto each variant in it and stays there — no opening twenty products in a row.

The landed figures have to reach the store from you. Partly because Shopify does not expose the freight to any app, and partly because a rule writes a number it is given rather than working one out. They arrive as rows you keep — one line per product in the delivery, carrying its landed unit cost — the same place the supplier's price already lives if you are keeping cost current at all.

The division itself stays outside the store. Per unit or by value is your decision, and the arithmetic happens where your invoice is: a spreadsheet line per product. What disappears is the second half — opening each variant to type the result in, and remembering to. A person sets that shape up with you once.

Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. If the app cannot complete your request on the spot, somebody at Shopivibe takes it on straight away and has it working in your store within 24 hours, included in the plan at no extra charge. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.

Know what the delivery really cost? Describe where that number should land →

Checked against Shopify's documentation and the App Store on 20 September 2026.