Guide

How to Manage Costs in Shopify When Stock Arrives at Several Prices

L

Landara Team

Import Operations Experts

||9 min read
ONE FIELD, FOUR DEFENSIBLE ANSWERSWHAT ARRIVEDMARCH300 units @ $10.40JUNE500 units @ $12.90Same barcode. Same bin.Two genuinely different costs.400 sold in JulySHOPIFYCost per itemone valueChanges only whensomebody changes it.COGS ON THOSE 400 UNITSMarch cost, $10.40$4,160June cost, $12.90$5,160Weighted average, $11.96$4,785Oldest first, per receipt$4,410A $1,000 spread, on one product, in one month.Only the last one ties back to the $9,570 you spent.Accuracy was never the missing ingredient. Room was.

Shopify gives every variant a Cost per item field, and it works the way the price field works: it holds one number, and that number changes when somebody changes it. That is a sensible design, and a merchant who fills it in is doing something sensible. It is a field, like RRP. It is not a history.

Which is exactly the right answer until your stock stops arriving at one price.

The field shows the current cost on the product page and feeds Shopify's own profit reports, and it does that job well. What it is not built to do is remember that the same SKU came in at $10.40 in March and $12.90 in June, because there was one field and there were two receipts. So the fix people reach for first, going back and making the number accurate, does not work. Accuracy was never the missing ingredient. Room was.

The distinction matters, because "our costs are out of date" and "our costs cannot be represented" have completely different fixes. The first one you solve with an afternoon and a bit of discipline. The second one you cannot solve in that field at all, no matter how carefully you type.

Why an Accurate Cost Still Gives You the Wrong Margin

Say you sell one SKU. You received 300 units in March at $10.40 each landed, and 500 units in June at $12.90 each landed, because the supplier moved and so did the freight rate. Both lots sit in the same bin. Nobody can tell them apart on the shelf.

In July you sell 400 units.

Now go and make Cost per item accurate. Which number is the accurate one?

This is an example, not a customer. The arithmetic is the point, and you can check every line of it.

One Field, Four Defensible Answers

What you put in Cost per itemCOGS on those 400 units
The March cost, $10.40$4,160
The June cost, $12.90$5,160
A weighted average of the two, $11.96$4,785
What oldest-first costing gives (300 at $10.40, then 100 at $12.90)$4,410

Four answers. A $1,000 spread, on one SKU, in one month. Three of them are defensible if you are looking only at the field, and someone in your business could argue for any of them in good faith.

None of that is carelessness. The field is doing exactly what it says it does. You asked one number to describe two receipts, and it answered with one number.

If you want the structural version of this, we wrote it up separately: can Shopify track two costs for the same product?

The Part That Does Not Tie Out

Here is the test that turns this from a reporting preference into an accounting problem.

You spent $9,570 on that stock. 300 at $10.40 is $3,120, plus 500 at $12.90 is $6,450. After selling 400 units you have 400 left. Whatever you book as cost of goods sold, plus whatever is sitting in inventory, has to add back up to $9,570, because that is the money that left your bank account.

Cost them oldest first and it does. COGS of $4,410, closing stock of $5,160, total $9,570.

Cost them from one field holding $12.90 and it does not. COGS of $5,160, closing stock of 400 units at $12.90 which is another $5,160, total $10,320. You have $750 of inventory value that never existed. Put $10.40 in the field instead and the total is $8,320, which is $1,250 of stock you paid for and cannot find on the balance sheet.

That is the difference between a number and a record. A number can be right about today. A record has to add up to what you actually spent, and it has to keep adding up next month, which is the thing your accountant signs.

What Shopify Says the Field Is

Shopify does not hide any of this. As of August 2026, their own documentation says it plainly.

  • Cost per item is the cost to you of the product or variant, and the example given is "the price that you paid the manufacturer, excluding taxes, shipping, or other costs" (Shopify Help Center). Shipping is excluded by design.
  • Shopify describes a "single static Cost per item field" that "stays fixed when you receive a purchase order or transfer", and adds: "For weighted-average costing or automatic landed cost allocation, such as duty, freight, or tax, you can use ... a third-party costing app" (Shopify Help Center).
  • Profit reports run off it: "Profit is reported only for products and variants that had cost recorded at the time they were sold", and "the Cost per item field contains static data, which means that the data in your profit reports is only relevant to a specific point in time" (Shopify Help Center).

Static, fixed on receipt, excludes freight, and only meaningful at a point in time. Every one of those is a reasonable design decision, and the vendor names the limit itself rather than leaving you to find it. They are only a problem if you are asking the field to be your cost record.

Where the Rest of Your Costs Live

If your costs are also written down somewhere outside Shopify, you already know the shape of the second half of this. A sheet of supplier prices. A freight invoice or two. A tab where somebody works out what a unit really cost, updated when there is time.

That file is usually right about the arithmetic. Its flaw is somewhere else: it cannot see a sale. Your store shipped forty units this morning and the file has no idea, so every number in it was true when it was typed and has been drifting since. We compared the two honestly here: managing COGS in a spreadsheet.

Which makes the real question something other than which of the two to trust. Neither one is a record of what your stock cost, and something has to be.

The Cost You Type Is Not the Cost You Paid

There is a second problem underneath the first one, and it only bites if you import.

Whatever you type into the field on the day the container lands, you are typing the supplier invoice, because that is the only document you have. The forwarder bills after the goods arrive. The customs broker bills after that. If those invoices turn up three weeks later and you have already sold 400 units, the cost you sold at was never the cost you paid, and nothing goes back and restates it.

So "make the field accurate" has a hidden precondition: accurate as of when, and including what? We walk through the four ways this goes wrong, with the numbers, in why your Shopify COGS is wrong.

What a Cost Record Needs Instead

Three things, and none of them fit in a field.

A cost per receipt, not a cost per SKU. Every delivery of stock arrives at its own price. The record has to keep each one, because those units are genuinely different costs wearing the same barcode.

A drawdown order. When you sell 400 units, something has to decide which receipt they came out of. Oldest first (FIFO) is the usual answer, and it costs stock in the same order expiry-dated products already ship in. Weighted average is a legitimate alternative, compared honestly in FIFO vs weighted average cost. What is not an alternative is having no answer, because then the cost of a sale is whatever was in the field that day.

Freight and duty folded in before the number forms. Not added to a report afterwards. Allocated across the units in the shipment while the cost of those units is being decided, so what gets drawn down later is what the goods actually cost to land.

That is the whole of it. Landara sits beside Shopify and keeps that record: a costed quantity for every receipt of stock, drawn down oldest first as orders ship, freight and duty allocated in before the cost is set, ending in a ready-to-post Dr COGS / Cr Inventory journal for Xero or QuickBooks Online. You decide when it posts. Shopify stays the system of record for quantity, and nothing gets ripped out.

So Should You Fill In Cost per Item?

Yes. It is not a useless field. It is a field with one job.

It drives the margin display on the product page and Shopify's own profit reports, so it should hold your best current landed cost rather than the supplier price you typed in 2024. Landara writes the cost back to it, which is the part that keeps it true without anyone maintaining it (how the Shopify connection works).

Just do not ask it to be the record. It is a display of a cost. It is not a history of your costs, and it was never built to be one.

That distinction has a consequence people meet the first time they correct the field after a freight invoice lands: updating Cost per item does not fix the orders you have already shipped, because Shopify recorded the cost at the moment of each sale.

Frequently Asked Questions

How do I manage cost of goods in Shopify?

Use Cost per item for what it is good at, which is showing your best current landed cost on the product page and in Shopify's profit reports, and keep the actual cost record somewhere that can hold one cost per receipt of stock rather than one cost per variant. Shopify owns the quantity side. The cost side needs a different shape, because a variant has one cost field and your stock arrived in several deliveries at several prices.

Does updating Cost per item fix my past orders?

No. Shopify's documentation (as of August 2026) says profit is reported only for products that had a cost recorded at the time they were sold, and that the field contains static data, so a profit report is only relevant to a specific point in time. Editing the field today is a fix going forward, not a way to restate a month you have already sold.

What number should I actually put in it?

Your best current landed cost per unit: the supplier price plus the freight, duty and clearance attributable to that unit. It will be right for the stock you most recently received and approximately right for everything else, which is the most a single field can do.

Would weighted average cost be simpler?

It is one defensible answer instead of four, and for some stores it is the right call. It also blends away the cost movement you were trying to see. Our guide to FIFO vs weighted average cost works the same SKU both ways.

Do I need this if I do not import?

If your supplier has ever changed price, yes. Freight and duty are what make the gap large for importers, but two receipts at two prices is enough to make one field wrong, and that happens to domestic buyers on every price rise.

One Cost per Receipt, Not One per Product

Connect your store and Landara costs every order against real FIFO layers, then hands your bookkeeper a ready-to-post journal.

Start Free
L

Written by Landara Team

Import Operations Experts

The Landara team is dedicated to helping Shopify merchants and importers get finance-grade cost of goods sold without running an inventory system.

Related Articles

THE FORMULA DOES NOT COMPUTE COGS. IT BACK-SOLVES IT.TWO VERY DIFFERENT QUARTERSQuarter A750 units sold to customersnothing lostQuarter B700 units sold to customers50 units gone, nobody knows howTHE SAME THREE INPUTSBeginning inventory$4,800+ Purchases$9,600- Ending inventory$4,000COUNTED, NOT CALCULATED250 units on the shelf, either waybecause the 50 are not there to countONE ANSWERCost of goods sold$10,400Quarter A revenue $24,000Quarter B revenue $22,400$800 of loss, filed as cost of salesWhatever is missing from the count becomes cost of goods sold, by definition.And every receipt of stock arrives at a different price, so all three inputs are valuations.
Guide

COGS Formula: What It Calculates, and What It Hides

11 min read

THE ENTRY TAKES TEN SECONDS. THE AMOUNT TAKES A LEDGER.RECEIPTS OF STOCK12 March600 units, goods $6,000freight, duty, clearance $1,200$12.0028 April400 units, goods $4,800freight, duty, clearance $1,400$15.50MAY SALES, OLDEST LAYER FIRST450 units shipped150 x $12.00 = $1,800300 x $15.50 = $4,650$6,450the cost of the units that leftTHE JOURNALDr Cost of Goods Sold$6,450Cr Inventory$6,450A COST PER SKU WOULD HAVE SAID450 x $10.00 = $4,500$1,950 of margin you never hadEvery receipt of stock arrives at a different price, and your store keeps one.Cost of sales plus closing stock has to add back to what came in. A report never has to.
Guide

COGS Journal Entry: How to Prepare One You Can Defend

8 min read