Shopify's profit report says your best seller makes a healthy margin. Then the month closes, the money in the bank is a lot less than that margin suggests, and nobody can say which products or orders ate the difference. The answer is usually not one big leak but five small ones, each kept in a different corner of Shopify.
Shopify's gross profit is net sales (after discounts and sales reversals) minus the cost per item you entered on each product. It leaves out payment fees, shipping labels, packaging, return postage, app subscriptions and advertising. To see your real margin, pull the fees from your payouts and the labels from your bills, then add them to each order.
What is the gap costing you?
Work it out for one month with your own numbers.
| Line | Where it lives | Example (dollars) |
|---|---|---|
| Net sales | Analytics, Gross profit by product | 100,000 |
| Product cost | Cost per item on each variant | 38,000 |
| Shopify's gross profit | 62,000 (62%) | |
| Payment processing fees | Finance > Payouts export | 3,000 |
| Shipping labels, after adjustments | Settings > Billing | 9,000 |
| Packaging and pick-and-pack | Supplier or 3PL invoices | 5,000 |
| Return postage and unsellable returns | Bills and your returns log | 2,000 |
| Margin after order costs | 43,000 (43%) |
Advertising and app subscriptions come off after this, and they decide whether a product is worth selling at all.
Why doesn't Shopify show the real margin?
Because each cost lands in a different place, and the profit reports only read one of them.
- Profit reports only see the cost per item. Shopify defines gross profit as net sales minus cost of goods sold, and net sales as gross sales minus discounts and sales reversals. The fields it lists for the calculation don't include fees or label costs.
- Cost per item is a snapshot. Shopify's help says the field "contains static data": the report uses the cost recorded when the item sold. If your supplier raised prices and nobody updated the field, last month's margin is overstated.
- Variants without a cost drop out. Shopify reports profit only for products and variants that had a cost recorded at the time of sale, and says orders with missing cost data may be left out of the report.
- Shopify's cost per item excludes freight and duty. For goods you resell, Shopify's product details page gives the example of entering what you paid the manufacturer, excluding taxes, shipping or other costs. If you pay to bring stock in, that cost has to be added somewhere. Ask your accountant how they want it handled.
- Fees live in payouts. With Shopify Payments, every charge and refund shows its fee in the payout records, not in Analytics.
- Labels live in your bill, and they change. Shipping label charges sit in your Shopify bill. Shopify says a carrier's price correction shows as a charge or credit on your next bill, and taxes aren't included in the label price at purchase.
- Refunds cost more than the refund. The refund lowers net sales, but the postage both ways and any item you can't resell don't appear next to it.
How do you work out your real margin yourself?
- Fill in cost per item on every variant. Open each product and enter Cost per item on its product details page; Shopify says you can also add costs to many products at once with the bulk editor or a CSV import. Then make updating it part of receiving a new supplier price.
- Run the Gross profit by product report for last month: Analytics > Reports, filtered to the Profit Margin category. If its net sales are well below your sales report, some variants are missing costs.
- Export your payment fees. Go to Finance, select View payouts, then View transactions and Export, choosing items by date. Shopify emails a CSV that includes Type, Order, Amount, Fee and Net for each transaction. Add up the fees by order number. If you use a payment provider other than Shopify Payments, pull its fee report instead.
- Export your label costs. Go to Settings > Billing, open each bill for the month, and click the number of shipping fees in the Shipping section to see the charges by order. Check the next month's bill for adjustments to these orders.
- Add the costs that live outside Shopify: packaging, pick-and-pack fees on 3PL invoices, and return labels.
- Put everything in one sheet keyed by order number. Each row is one order: net sales, product cost, fee, label, packaging, returns. Margin per order is what's left. Group by product, by channel or by discount code to see where it's thin.
- Tie the total to your books. The month's total should be close to what your bookkeeper's profit and loss statement shows for the same lines. Big differences usually mean a missing cost or a timing issue.
When does doing it yourself stop working?
- You need this every week, not once a quarter.
- Orders also come from Amazon, wholesale or retail, and the costs differ by channel.
- Your 3PL bills by order, by unit and by storage, and matching invoice lines to orders takes longer than the rest combined.
- Costs change often enough that a static cost per item is never right for long.
What are your options?
| Option | What you get | What to watch |
|---|---|---|
| Do it yourself | The monthly sheet above | A few hours a month, more when orders grow |
| Buy a tool | A profit-tracking app that reads Shopify and your ad accounts | Which costs it can't see, such as 3PL invoices, and how it treats refunds |
| Hire a freelancer | An ecommerce bookkeeper who reports margin each month | Whether you get margin per order and per product, or only a monthly P&L |
| An outside team that learns how you work and builds on your data | Your costs mapped from every source first, then a margin report built on your orders that updates itself | Ownership of what's built, and a written note on how each cost is assigned |
The Reports & answers page covers the last row. If you'd rather show us last month's numbers than describe them, a walk-through is 30 minutes on screen.
What can you hand off, and what should stay with your team?
| Hand off | Keep |
|---|---|
| Pulling payouts, bills and invoices each month | Setting prices and discounts |
| Matching every cost to its order | Deciding which products to cut or push |
| Keeping cost per item current from supplier price lists | Agreeing with your accountant how freight and duty are treated |
| Flagging products whose margin fell | Choosing what to spend on ads |
Questions to ask anyone you hire, us included
- Which costs will the report include, and which will it leave out?
- How will refunds, return postage and unsellable returns be handled?
- Will the total tie to my bookkeeper's profit and loss each month?
- What happens when a supplier changes a price?
- Who owns the report and the data connections when you're done?
FAQ
Does Shopify show profit after fees? Its profit reports show gross profit, which is net sales minus the cost per item you recorded. Payment fees are in your payout records and shipping labels are on your bill, so you add them yourself.
Why are some orders missing from the gross profit by product report? Often because those variants had no cost per item when they sold. Shopify reports profit only for items that had a cost recorded at the time.
Should I put shipping and duty into cost per item? Shopify's definition excludes them. Some brands add them to get a landed cost; others book them separately. That's a choice to make with your accountant, so your reports and your books agree.
Does a refund show up as a cost? The refund lowers net sales. The postage both ways and any stock you can't resell don't show up next to it, so track them separately.
How often should I check margin per order? Monthly is the minimum. Weekly is worth it when you're running promotions or a carrier changes its rates.