Why does Shopify only show revenue and not net margin?
Shopify reports revenue and at best gross profit, never Shopify net margin, because it cannot see payment fees, shipping, returns, or ad spend. Here is the gap, costed on a $30 candle.
Last updated: June 27, 2026
Shopify only shows revenue, and gross profit if you enter cost per item, because Shopify net margin depends on costs that live outside Shopify: payment processing fees, shipping and fulfillment, returns, and ad spend. Shopify never sees those numbers per order, so it cannot subtract them. Revenue is what it can measure cleanly.
That gap is not a rounding error. On a single $30 order it can turn an implied $21 of profit into roughly $6 of real money left. Below is exactly which lines Shopify omits, why, and how to compute your own figure.
What does Shopify actually report, gross versus net?
Shopify reports three things: revenue, cost of goods sold if you typed it into the cost-per-item field, and gross profit, which is revenue minus that COGS. Shopify net margin is none of these. Gross profit stops at the product cost. Net margin keeps subtracting every other cost an order incurs, and most of those costs are recorded in other systems Shopify cannot read.
Revenue versus profit is the core confusion. Revenue is the top line, the $30 a customer pays. Profit is what survives after every cost. Shopify analytics is built to report the top line accurately and the rest partially, because the rest is genuinely outside its data model.
| What you see in Shopify | What it includes | What it leaves out |
|---|---|---|
| Total sales / revenue | Gross order value, discounts, tax, shipping charged | Every cost of fulfilling the order |
| Gross profit (if COGS entered) | Revenue minus cost per item | Fees, shipping cost, returns, ads, overhead |
| Net margin | Not reported | The entire gap below |
Which exact cost lines does Shopify leave out of net margin?
Shopify leaves four cost lines out of any net-margin view, and naming them is the whole point. Payment processing fees sit with your processor, not the order. Shipping and fulfillment cost lives with your carrier or 3PL invoice. Returns are a future event Shopify does not provision for at sale time. Variable ad cost belongs to Meta, Google, or TikTok, not to Shopify.
Here is each omitted line and where the real number lives:
- Payment processing fees. Shopify charges the order value, then your processor skims a percentage plus a flat fee. The order screen shows neither.
- Blended shipping and fulfillment. The shipping you charge the customer is revenue. The shipping you actually pay, plus pick, pack, and packaging, is a cost on a separate invoice.
- Returns provision. A sold order is not a kept order. Shopify books the sale today and the refund later, in different reports, so neither view nets them.
- Variable ad cost. The single biggest hidden cost for most stores. It is the spend that acquired the customer, and it never touches a Shopify order record.
These are the hidden costs that separate gross versus net. A dashboard that omits all four cannot show net margin, by construction.
Worked example: a $30 candle, gross versus net
Take one scented candle that sells for $30, with a fully loaded product cost of $9. Shopify, with cost per item entered, will show $21 of gross profit, a clean-looking 70 percent margin. That $21 is the number it implies you made. Now subtract the four lines Shopify never nets out.
| Line | Amount | Where Shopify sees it |
|---|---|---|
| Selling price | $30.00 | Revenue |
| Cost of goods (wax, jar, wick, fragrance, label, box) | -$9.00 | COGS, if entered |
| Gross profit Shopify implies | $21.00 | Shown |
| Payment fee (2.9% + $0.30) | -$1.17 | Not netted |
| Blended shipping and fulfillment | -$6.50 | Not netted |
| Returns provision (6% of price) | -$1.80 | Not netted |
| Variable ad cost (18% of price) | -$5.40 | Not netted |
| True net dollars left | $6.13 | Never shown |
The four omitted lines total $14.87. So the true net margin on this candle is $30.00 minus $9.00 minus $14.87, which equals $6.13, a real margin of 20.4 percent rather than the 70 percent the gross figure implies.
The proprietary figure worth keeping: on this order Shopify implies $21.00 of profit while $6.13 actually survives. That is a profit overstatement of $14.87, or 243 percent of true net. Put another way, the gross-profit number Shopify shows is 3.4 times the real dollars left. The overstatement is not a quirk of the candle. It scales with whatever payment, shipping, returns, and ad rates your store carries.
Why does this matter for margin?
The overstatement matters because every decision downstream of Shopify analytics inherits it. A founder reading 70 percent gross profit greenlights a 25 percent-off promo and assumes a fat cushion. On the candle, a $7.50 discount wipes out more than the entire $6.13 of real margin and tips the order into a loss. The dashboard said there was room. The math said the opposite.
Contribution margin is the figure that actually drives those calls, and it is the figure Shopify cannot give you. Contribution margin is revenue minus all variable costs of the order, which is essentially the $6.13 line above. Scale that misread across thousands of orders and a discount code, a free-shipping threshold, or a single rising-CAC product can quietly drain the P&L while the storefront reports growth. Detecting it after the fact, in a month-end report, is the expensive way to find out. Catching margin erosion early is the cheaper one.
The common misread
The most common misread is treating gross profit as take-home profit. Gross profit answers one narrow question: does the product sell for more than it costs to make? Useful, but it says nothing about whether the order made money after you paid to acquire, process, ship, and occasionally refund it. Stores that confuse the two often discover their best-selling SKU is their biggest cash drain, because high volume multiplied by a thin or negative true margin is just a faster way to lose money. Knowing your margin by SKU, channel, and customer is what separates the products worth scaling from the ones quietly bleeding.
How to find your own number
You do not need new software to get a rough net-margin figure today. Run the candle exercise on your own top SKU.
- Start with the selling price for one order.
- Subtract your fully loaded product cost. Use the cost-per-item field if you trust it.
- Subtract your payment processor's real rate, usually around 2.9 percent plus a flat fee per transaction.
- Subtract your true blended shipping and fulfillment cost per order, from your carrier or 3PL invoice, not the shipping you charge the customer.
- Subtract a returns provision, your refund rate times the price.
- Subtract variable ad cost, your blended ad spend divided by orders, applied per order.
What is left is your contribution margin per order. Do it for your three highest-volume SKUs and you will usually find at least one where the real number is half of what Shopify implied, or worse. For a fuller method, see how to calculate true net margin. For the underlying processor and carrier rates, pull your last payment processor statement and carrier invoice rather than estimating.
Where Agentis fits
Doing this by hand once is clarifying. Doing it on every order, every day, by hand, is not realistic, which is the gap a profit-governance tool closes.
Profit governance is the practice of monitoring and enforcing margin rules in real time across every order, SKU, and channel, so unprofitable activity gets caught and corrected as it happens instead of discovered in a month-end report.
Agentis is a real-time profit governance platform for high-volume Shopify Plus and ShopLine merchants. It monitors margin at the order and SKU level and flags or blocks unprofitable activity before it reaches the P&L. It stacks the same four lines Shopify omits onto every order automatically, so the $6.13 truth shows up next to the $21 illusion in real time, not in next month's report. If you want to see which of your orders are actually unprofitable, that is the starting point.
Frequently asked questions
Why does Shopify only show revenue and not net margin?
Shopify only shows revenue because net margin depends on costs recorded outside Shopify: payment fees sit with your processor, shipping with your carrier, returns happen after the sale, and ad spend lives in Meta or Google. Shopify cannot subtract numbers it never receives, so it reports the figure it can measure cleanly, revenue.
Does Shopify show any profit at all?
Shopify shows gross profit, but only if you enter a cost per item for each product. Gross profit is revenue minus that product cost and nothing else. It excludes payment fees, shipping cost, returns, and ad spend, so it consistently overstates how much money an order actually keeps.
What is the difference between gross margin and net margin on Shopify?
Gross margin is revenue minus cost of goods, which Shopify can display. Net margin is revenue minus every cost the order incurs, including fees, shipping, returns, and ads, which Shopify cannot display. On a $30 candle the two figures were 70 percent gross versus 20.4 percent true net, a 3.4x gap.
How do I see true net margin per order on Shopify?
Export your orders, then subtract four lines per order that Shopify omits: payment processing fee, real shipping and fulfillment cost, a returns provision, and variable ad cost. What remains is contribution margin. For continuous order-level tracking rather than a one-time export, a profit-governance tool stacks those lines automatically.
Why does my Shopify dashboard look profitable when my bank account is not?
Your dashboard looks profitable because it reports revenue and gross profit, which ignore the largest variable costs, especially ad spend. Your bank account reflects net margin after every cost clears. The gap between a healthy-looking dashboard and a thin balance is exactly the four omitted cost lines, compounded across every order.
The fastest next step: run the six-line calculation above on your single highest-volume SKU today, and compare the result to the gross-profit number Shopify shows you for it.