How to calculate landed cost per SKU for Shopify (2026)

Updated · 5 min read

Landed cost per SKU = (supplier price of the line, converted to your store currency + the line's share of freight, insurance, duties, broker and bank fees) ÷ units received. Each cost is shared across the lines of the receipt with a key that fits it (weight or volume for freight, value for insurance and duties), then the unit result goes into the variant's Cost per item in Shopify. Shopify does not do the allocation for you: its help center describes Cost per item as a single, static value per product or variant.

What goes into the landed cost

IAS 2 (paragraph 11) defines the cost of purchase of inventory as the purchase price, import duties and other non-recoverable taxes, transport, handling and other costs directly attributable to the acquisition, minus trade discounts (IFRS Foundation, IAS 2). For US sole proprietors, IRS Publication 334 lists freight-in on merchandise you purchase as part of cost of goods sold (IRS Pub. 334).

Cost on the receiptUsually includedTypical allocation key
Supplier price (invoice lines)YesIt is the line itself
Inbound freight to your warehouseYesWeight (air, courier) or volume (sea)
Cargo insuranceYesValue
Import dutiesYesValue, or value × duty rate when lines have different HS codes
Customs broker / clearance feesYes, if directly attributableValue or equal per line
Bank wire and FX fees on the supplier paymentDepends on your accountant's policyValue
Recoverable VAT / GST paid at importNo (you get it back)—
Outbound shipping to customersNo (it is a selling cost)—

Shopify's own product page help says you can enter the price paid to the manufacturer "excluding taxes, shipping, or other costs" (Shopify Help Center, product details). That is a simplification: if you want margins in Shopify's profit reports to reflect what the goods really cost, use the landed figure.

Step by step

  1. List the receipt lines: SKU, quantity received, unit price, currency, and weight or volume if freight will be spread that way.
  2. Convert to the store currency with the rate you actually paid (bank statement or payment confirmation). Convert the invoice total once, then spread it over the lines, so the converted lines add up to the converted total.
  3. Collect the additional bills of the shipment: freight invoice, insurance certificate, customs entry, broker invoice, bank fees. Convert each to the store currency.
  4. Choose a key per cost (table above) and compute each line's share: cost × line key ÷ total key.
  5. Round to the cent without losing cents: round every share down, then give the leftover cents to the lines with the largest fractional parts (largest remainder method). The shares of each cost then add up exactly to the bill.
  6. Add up per line and divide by quantity: landed line total ÷ units = landed cost per unit.
  7. Update Shopify: bulk editor, or a product CSV import (see below).

Worked example

Example receipt, store currency USD, freight 100.00 spread by weight, duties 20.00 by value, broker 35.00 by quantity:

SKUQtyGoodsWeightFreightDutiesBrokerLanded totalPer unit
A1050.0010 kg25.005.0010.0090.009.00
B2050.0010 kg25.005.0020.00100.005.00
C5100.0020 kg50.0010.005.00165.0033.00
Total35200.0040 kg100.0020.0035.00355.00

Check before you import anything: goods 200.00 + costs 155.00 = 355.00. If the allocated column totals do not equal the bills, a line was skipped or a rounding was lost.

Getting the numbers into Shopify

Shopify's product CSV has a Cost per item column; the required columns to update products are URL handle and Title, and with "Overwrite products with matching handles" ticked, "existing values will be replaced for all columns included in the CSV" (Shopify: using CSV files, Shopify: importing products). Two cautions from the same pages:

  • A non-required column that is blank in your file overwrites the store value with blank; a column that is absent keeps the store value. So import a file with only the columns you need.
  • If the SKU column is present without the Option1 name / Option1 value columns, Shopify deletes the variant options. Keep the option columns next to SKU.

A safe update file therefore contains Title, URL handle, the option name/value columns, SKU and Cost per item, built from your own products export. The landed cost calculator builds that file from a Shopify export and the allocated receipt, and shows the full allocation before any download.

FAQ

Should I include the bank's FX fee in landed cost?

It is directly linked to paying the supplier, so many sellers include it, spread by value. Some accountants book it as a financial expense instead. Pick one rule and keep it for every receipt.

What if the freight bill arrives after I received the goods?

Recalculate the receipt when the bill arrives and update Cost per item. Shopify's profit report only uses the cost recorded at the time of each sale (Shopify profit reports), so sales made before the update keep the old cost.

How do I handle a SKU that already has stock at another cost?

Use a weighted average: (units in stock × current cost + landed total of the new units) ÷ (units in stock + new units). Use the stock count from before the receipt.

Is the CSV import limited in size?

Shopify states that a product CSV can't exceed 15 MB; split larger files (Shopify: importing products).

Landed cost per SKU

  • CSV
  • Excel
  • CSV
  • Excel
  • PDF

Preview first · $4.99 for 24 h

Calculate landed cost