Shopify profit reports: why they're only as good as your cost per item
Short version: Shopify's profit reports use the Cost per item recorded when each order was placed. Products with no cost are left out, and stale costs make margins look better (or worse) than they are. You can't fix past orders by editing costs, so the fix is keeping costs current from now on, ideally every time a supplier invoice arrives.
Profit reports are one of the most useful things in Shopify analytics, and one of the most misread. They're only as accurate as the cost data behind them, and in most stores that data is patchy. Here's how the reports use cost per item and how to make them trustworthy.
Where to find profit reports
In your Shopify admin, go to Analytics › Reports and filter by the Profit margin category. The reports there break gross profit down, for example by product and variant, showing net sales, cost of goods sold (COGS) and gross profit. Which reports you see can depend on your plan.
How cost per item feeds the reports
Three rules from Shopify's help center explain almost every confusing number:
- Cost is recorded at the time of sale. When an order is created, Shopify stores each variant's cost per item at that moment. Profit reports use that stored cost.
- No cost, no profit. Products and variants that had no cost recorded when they were sold are left out of profit reports. That's why net sales in a profit report can be lower than in your sales reports.
- Changes aren't retroactive. Editing a cost today doesn't change orders that were already placed.
The three ways cost data goes wrong
1. Missing costs
Products created in a hurry, imported from a supplier feed or added years ago often have no cost. Their sales vanish from profit reports, which can make your overall margin look better than it is (if the missing products are low-margin) or worse.
Find them: export your products (Products › Export) and filter the Cost per item column for blanks. Or use the bulk editor with the cost column visible.
2. Stale costs
The cost was right when entered, but the supplier has raised prices since. Every sale since then is recorded with too low a cost, overstating profit.
Find them: compare recent supplier invoices with current costs. See spotting supplier price increases.
3. Wrong costs
Case prices entered as unit costs, VAT included when it shouldn't be, or a foreign-currency price entered unconverted. These produce margins that are wildly off, often negative.
Find them: sort a product export by margin. Anything negative, or above 90% for physical goods, deserves a look. See pack pricing and currency and VAT.
Fixing it going forward
- Fill in missing costs for everything you still sell, using the bulk editor or a product CSV (how to). Use the most recent invoice price.
- Decide what cost means for your business: latest supplier price, or landed cost including freight and duty. Write it down so everyone enters costs the same way.
- Update costs at receiving. The invoice is in your hands when the delivery arrives. Make updating cost part of receiving, not a quarterly clean-up.
- Check monthly. Run the profit by product report and look for outliers.
What about past orders?
Because cost is recorded at the time of sale, historical reports keep whatever cost was set then, including blanks. If you need corrected historical COGS for accounting, calculate it outside Shopify from your supplier invoices, or ask your accountant. Your bookkeeping system, not Shopify's analytics, is usually the source of truth for COGS in your accounts.
A quick health check
| Check | Healthy |
|---|---|
| Active variants with a cost per item | All of them |
| Net sales: profit report vs sales report | Close to equal |
| Products with negative margin | None, unless on purpose |
| Costs updated after last supplier invoice | Yes, for every changed line |
Where Box to Shelf helps
Box to Shelf makes cost updates part of receiving. When you process a supplier invoice, each matched line shows your current cost per item and the new cost from the invoice, converted to unit cost, with the margin change. Applying the document updates stock and cost together, so cost per item stays current with every delivery and your profit reports are recorded with the right cost from then on.
Questions
Why are some orders missing from my Shopify profit report?
Products and variants without a cost per item at the time of sale are left out of profit reports.
Can I fix the cost on past orders?
Changing cost per item doesn't change orders already placed. Keep costs current so future orders are recorded correctly.
Sources
- Shopify Help Center: Profit reports
- Shopify Help Center: Cost per item
- Shopify Help Center: Using CSV files to import and export products
Shopify changes its admin often. Steps were checked against the Shopify Help Center in November 2026; if a menu has moved, the help center links above have the current version.