Freight and duty in your unit cost, when Shopify gives you one cost field

The supplier’s unit price may leave out delivery, duty, and other inbound charges. Learn how to allocate those costs across a shipment and see exactly which method Replenio supports.

Identify the costs that belong in inventory

Updated September 6, 2026. By Veltrio Labs, the team behind Replenio. Platform details: Shopify’s Stocky migration guide.

Landed cost combines a product’s purchase price with eligible costs of getting it to its destination and ready for sale. Depending on the transaction, these can include inbound transport, handling, import duties, and nonrecoverable taxes.

Recoverable taxes, selling expenses, and the treatment of storage or other charges need separate consideration. Use the accounting rules that apply to your business; the IAS 2 inventory guidance explains the IFRS framework.

Shopify provides one Cost per item field per variant. Native purchase-order receiving does not calculate and write a landed unit cost to that field. You need to calculate it separately or use a costing app.

Three allocation methods and when to consider them

By weight or volume

This can be useful when a transport charge is driven by weight or space. Use the carrier’s billing basis, such as chargeable weight, rather than assuming the heaviest product always accounts for the largest charge.

By value

Distribute a shared charge in proportion to each line’s goods value. This is a practical basis for some shared shipment costs. For duty charged as a percentage of value, apply the actual rates and customs values to the relevant goods; mixed tariff rates cannot be represented by one blanket percentage.

By quantity

An equal charge per unit can be useful for similar items or genuinely per-unit fees. It can distort costs when the shipment contains products with very different sizes, values, or handling requirements.

Where a charge belongs to one product, assign it directly if your system supports that. For shared charges, document your allocation basis and use it consistently. These are general approaches; Replenio currently distributes order-level extras by line value.

A worked example with two products

Assume one shipment contains the following goods, with a $1,000 freight charge, duty of 6% of goods value for both products, and a $150 brokerage fee:

  • Mugs: 500 units at $3.00 = $1,500; weight 400 kg.
  • Tea towels: 500 units at $6.00 = $3,000; weight 100 kg.

For this spreadsheet example, allocate freight by weight, duty by goods value, and brokerage by value. These are explicit assumptions for the example, not a universal customs calculation.

Cost per unitMugsTea towels
Goods$3.00$6.00
Freight$1.60$0.40
Duty$0.18$0.36
Brokerage$0.10$0.20
Landed unit cost$4.88$6.96

The mugs cost about 63% more than their purchase price, and the towels 16% more. A markup based only on purchase price would overstate your margin; whether a sale makes a loss depends on its selling price and other expenses.

Using Replenio’s value-based allocation instead: the $1,420 in extras is split one-third to mugs and two-thirds to towels. That produces approximately $3.95 and $7.89 per unit. Choose a costing workflow whose allocation basis suits your shipments.

When the freight invoice arrives after the goods

Keep the estimate and final invoice linked to the shipment. If you use estimated costs at receipt, reconcile them when the actual charges arrive, including any effect on units already sold.

The adjustment process depends on your accounting system and policy. Replenio records the costs used at receipt; changing an order setting later does not automatically restate earlier receipts. Do not assume a late freight invoice will retroactively update every sale.

For foreign-currency purchases, retain the original currency and the conversion used. The date and rate required for accounting can differ from the payment date; confirm the approach with your bookkeeper.

What Replenio calculates automatically

Add freight, duty, and other charges to a purchase order. When you receive stock, Replenio allocates those order-level costs across inventory lines in proportion to their value and records the resulting landed unit costs.

Weight-based, volume-based, and separate per-charge allocation methods are not available in this workflow. The spreadsheet example above illustrates alternatives, rather than a choice of methods in the app.

You can choose whether order-level extra costs are included in inventory value, per order or by default. They remain in the order total either way. Configure this to match your accounting policy.

Weighted-average and landed costing are included on Free. Pro adds FIFO and dated cost history. Learn more in the landed-cost guide.

Frequently asked questions

Does Shopify automatically allocate freight and duty to product costs?
Native purchase-order receiving does not update Cost per item with allocated landed costs. Calculate the amount separately or use a costing app.
Which allocation methods does Replenio support?
Replenio allocates order-level extra costs by inventory line value. It does not offer weight, volume, or a different basis for each charge.
What if my final freight bill arrives after receiving?
Reconcile it against the estimate under your accounting policy. Replenio does not automatically restate earlier receipts when an order setting changes.
Will a cost update fix all my historical Shopify margins?
No. Standard Shopify gross-profit reports use cost at the time of sale. A current cost update does not automatically correct historical sales.