Nexus Logic SystemsShopify apps

How to update Cost per item automatically in Shopify when stock arrives

Updated · By Senoussi, developer of True COGS at Nexus Logic Systems

Short answer

Shopify does not do it on its own. Each variant has one Cost per item, and Shopify's help says it stays fixed when you receive a purchase order or transfer. To keep it right you either edit it after each delivery (on the product, in the bulk editor or by CSV), or use a costing app that reads each delivery's price and writes the new cost for you. Write the weighted average of the stock you hold, not the last price paid: the last price misstates every unit already on the shelf.

What Shopify does with Cost per item

  • One number per variant. Shopify's migration guide: Each product variant has a single static Cost per item field. (Shopify Help)
  • Receiving does not change it. The same page says the cost stays fixed when you receive a purchase order or transfer.
  • Each order keeps its own copy. The cost is recorded on an order when the order is created. Changing Cost per item later does not change past orders (Shopify Help, cost per item).
  • Each variant needs its own cost. Profit reports count only variants that had a cost when they were sold (Shopify Help, profit reports).
  • Shopify's own advice: for weighted average costing or landed cost, use a third-party costing app (Shopify Help).

Three ways to keep Cost per item updated

Methods available on 31 October 2026.
MethodHowFitsLimit
By handProduct page, Cost per item fieldA few variantsSlow; you must do the average yourself
BulkBulk editor, or a product CSV with the Cost per item columnMany variants at onceStill a manual step after each delivery
Costing appReads each received purchase order, transfer or invoice and writes the costEvery delivery, no typingCheck what it writes: an average, FIFO, or just the last price

Why write the average, not the last price

The weighted average spreads the new delivery over all the stock you hold:

new average = (units on hand × current average + units received × price paid)
              ÷ (units on hand + units received)

Example. You hold 40 mugs at $10.00. A delivery of 60 arrives at $12.50.

Illustrative figures, checked to the cent.
Cost per item writtenValue of the 100 mugsCost of the next 30 sold
Last price$12.50$1,250.00$375.00
Weighted average$11.50$1,150.00$345.00
  • Average: (40 × $10.00 + 60 × $12.50) ÷ 100 = $1,150.00 ÷ 100 = $11.50.
  • The last price values the 40 older mugs at $12.50 instead of $10.00: $100.00 too high (40 × $2.50).
  • On the next 30 sold, cost of goods is $30.00 too high, and margin too low, until the stock turns over.

FIFO is the other common method: the oldest units leave first, at their own price. See FIFO vs weighted average.

Set it up step by step

  1. Give every variant a starting cost. Use the bulk editor or a product CSV. A variant without a cost is left out of profit reports.
  2. Bring each delivery in through Shopify: a purchase order received on its transfer, a transfer from a supplier, or a supplier invoice.
  3. Decide the method with your accountant: weighted average or FIFO.
  4. Automate the write. A costing app updates Cost per item when the delivery is received. By hand, recompute the average and edit the field the same day.
  5. Check monthly: compare ten best sellers with the latest supplier invoice.

How True COGS does it

  • When a purchase order or a supplier transfer is received, True COGS records the price paid with its date and writes your moving weighted average to Cost per item. FIFO is on paid plans.
  • Purchase order prices are read on every plan, the Free plan included, once you approve purchase-order access. Shopify asks for it when you open the app.
  • Freight and duty are split onto each unit on paid plans.
  • Free for up to 25 variants with a cost on record. Orders placed before keep their recorded cost; that is how Shopify works.

Questions merchants ask

Does Shopify update Cost per item when I receive a purchase order?

No. Shopify's help says each variant has a single static Cost per item that stays fixed when you receive a purchase order or transfer. You change it yourself, or an app changes it.

Can I update Cost per item in bulk?

Yes. Use the bulk editor, or export your products to CSV, change the Cost per item column and import the file again. It is still a manual step after each delivery.

Should Cost per item be the last price I paid?

Usually not. The last price values every unit you already hold at the new price. A weighted average values the stock at what it cost you in total; FIFO uses the oldest prices first. Ask your accountant which method your books use.

If I fix Cost per item today, does it fix last month's profit?

No. Shopify records the cost on each order when the order is created, so a later change does not reach past orders.

Is there a free app that updates Cost per item automatically?

True COGS is free for up to 25 variants with a cost on record. On the Free plan, received purchase orders update the moving weighted average once you approve purchase-order access in Shopify.

Try True COGS free. True COGS is an inventory costing app for Shopify by Nexus Logic Systems. It records the price you paid on every delivery (a received purchase order or a transfer), with its share of freight and duty on paid plans, keeps every price with its date, and writes your moving weighted average cost, or FIFO cost on a paid plan, to Shopify's Cost per item. It is free for up to 25 variants with a cost on record; paid plans start at $29 a month or $290 a year.

Install from the App Store

Sources