Shopify profit reports show your gross profit — revenue minus the product cost you enter — and then they stop. They leave out ad spend, payment processing fees, shipping shortfalls, refunds, and app subscriptions, so the "profit" number in your admin is almost always higher than the money you actually keep. To read your real margin you have to layer those variable costs back on, per order, which is the work this guide walks through.

If you already run a store with real orders and real ad spend, you have probably opened the Profit report in Shopify Analytics and felt that the number looked too good. It usually is. The report is accurate for what it measures — it just measures the wrong line.

This is not a beginner problem. It is an operator problem: the bigger your ad spend, the wider the gap between what the report shows and what lands in your bank account.

What Shopify's profit reports actually show

In the admin, go to Analytics → Reports and you will find a Finance group with a Gross profit (or Profit) report. It breaks revenue and gross profit down by product, by variant, and over time.

For that report to populate, you have to enter a Cost per item on each product (Products → the product → Pricing → Cost per item). Skip that field and Shopify treats your cost as zero and reports your entire revenue as profit.

The report is genuinely useful for one calculation: revenue minus cost of goods sold. That is gross profit, and nothing more.

The gap: gross profit is not net profit

Here is the part Shopify's native reporting does not close. Its analytics are built around revenue and gross margin, and the Profit report subtracts only cost of goods — it leaves out ad spend, transaction fees, shipping, and refunds, according to this Shopify reporting guide.

Those omitted costs are exactly the ones that scale with volume. Every order you push through paid ads carries a slice of ad spend, a payment fee, and a fulfillment cost that the gross profit line never sees.

Payment fees alone are not trivial. Shopify Payments runs from about two-and-a-half to just under three percent plus a fixed per-transaction charge on online orders depending on your plan, according to Shopify's own fee breakdown. On a low average order value, that fixed charge bites harder than the percentage.

A worked example: the "profitable" day that quietly loses money

Say you run a print-on-demand apparel store doing 340 orders a month at a $31 average order value. Your Meta spend is $2,800 a month. These are the numbers Shopify's report will flatter.

Start with what the Profit report sees. If your blank garment plus print cost is $13 per order, Shopify shows gross profit of $31 − $13 = $18 per order, or about $6,120 across the month. That looks like a healthy 58% gross margin.

Now layer back the costs the report ignores, one order at a time:

  • Payment fee: roughly 2.9% of $31 plus $0.30 ≈ $1.20.
  • Allocated ad spend: $2,800 ÷ 340 orders ≈ $8.24.

Per-order profit after ads and fees is $31 − $13 − $1.20 − $8.24 = $8.56 — less than half the $18 the Profit report implied. Across the month that is about $2,912 before you have even paid your Shopify subscription, your apps, or any shipping you eat on exchanges.

That $8.56 is your real contribution per order. It is the number that tells you whether scaling spend makes you richer or just busier.

The one ratio that protects you: break-even ROAS

Once you know your contribution margin, break-even ROAS falls straight out of it. The identity is break-even ROAS = 1 ÷ contribution-margin ratio.

In the example, contribution before ads is $31 − $13 − $1.20 = $16.80, a margin ratio of about 54%. So your break-even ROAS is 1 ÷ 0.54 ≈ 1.85. Any campaign returning less than that loses money no matter how green it looks in Ads Manager.

Shopify's profit reports can never tell you this, because they do not know your ad spend. You can only compute it by holding revenue, COGS, fees, and spend in one place — which is the whole reason operators eventually outgrow the native report. Working through that math is the heart of turning ecommerce data into decisions.

How to read your real per-order profit

You have three practical options, in rising order of reliability.

Enter costs and read gross profit as a floor. Fill in Cost per item for every product so the native report is at least honest about COGS. Treat the gross profit figure as a ceiling you will never actually keep, not a target.

Export and reconcile in a spreadsheet. Pull the Finance reports, then subtract ad spend from each platform, payment fees from your payouts, and fulfillment costs from your supplier invoices. This works, but it is a monthly chore and it is always looking backward.

Compute contribution per order continuously. The most useful view ties each order to the ad spend and fees that produced it, so you see margin by product and by channel while a campaign is still running. This is where ecommerce product analytics earns its keep — a hero product with great gross margin can be your worst net performer once its acquisition cost is counted.

Where native reports still help

None of this means the built-in reports are useless. For gross margin by variant, inventory movement, and revenue trends, they are fast and free.

Use them for what they are good at — spotting which SKUs sell and which stall — and stop asking them a question they were never built to answer. The practical move is to automate the pull so you are not re-exporting the same files every week; automating your Shopify reports frees that time for the analysis that actually changes decisions.

Reading these numbers well is one slice of the broader discipline of ecommerce business intelligence: knowing not just what sold, but what each sale was worth after everything that made it happen.

How PodVector AI closes the gap

PodVector AI is built for exactly this blind spot. Victor is an AI employee that connects to your live store data and computes true per-order profit — revenue, the product cost from Shopify, payment fees, and the ad spend behind each order, netted together rather than reported in separate tabs.

Victor reads from Shopify for full store operations and pulls spend directly from Meta Ads and Google Ads, plus your POD supplier (Printify, Printful, or Gelato) and Klaviyo. He delivers the resulting profit reports to your Google Drive, and every write action he takes is approval-gated — you approve before anything executes. Victor is not a dashboard you log into; he is an operator who does the reconciliation for you.

Try PodVector AI free and let Victor show you the number your Shopify profit report leaves out.

If your next question is which campaigns and products to scale once you can see real margin, that is the subject of ecommerce performance analytics.

FAQs

Does Shopify show net profit anywhere in its reports?

No. Shopify's reports top out at gross profit — revenue minus the cost of goods you enter. Net profit, which also subtracts ad spend, fees, shipping, refunds, and fixed costs, is not available in native analytics, as the Shopify reporting guide above notes. You have to calculate it outside the admin or with a tool that unifies those cost sources.

Why is my Shopify profit report higher than my bank balance?

Because the report only subtracts product cost. It ignores the payment fees deducted from your payouts, the ad spend that bought the orders, and any shipping you cover. On a store spending heavily on ads, those omissions easily halve the real number, as the worked example above shows.

Do I have to enter Cost per item for the profit report to work?

Yes. If the Cost per item field is blank, Shopify assumes zero cost and reports your full revenue as gross profit. Fill it in for every product and variant, keeping your definition of cost consistent — decide once whether a POD supplier's print fee lives in product cost or fulfillment, and hold that line.

What is a good net profit margin for a POD store?

There is no single benchmark, and anyone promising one is guessing. What matters is that your contribution per order stays comfortably above zero after ads and fees, and that your blended return on ad spend clears your break-even ROAS. Compute those from your own numbers rather than chasing an industry average that hides a wide distribution.

Can I just use a spreadsheet instead of an app?

You can, and many operators start there. The catch is that a spreadsheet is always backward-looking and manual — you reconcile last month after it is over. Continuous per-order profit, computed from live data, lets you catch an unprofitable campaign while it is still spending rather than at month-end.