Jul 18, 2026 · 7 min read

How to Calculate True Net Profit Per Order on Shopify

Daymark Product & Data TeamAnalytics practitioners at Daymark

First-hand guidance from the Daymark team on analytics workflows, growth reporting, and the operational metrics teams use to make decisions.

Shopify's profit report will tell you an order made money when it actually lost money. It isn't lying. It's just working from a smaller set of costs than the ones that hit your bank account. It knows the product cost you entered. It does not know what you paid Meta to acquire that customer, and it counts a sale the day it happens, weeks before the return comes back. Net profit per order is the number that closes those gaps, and this guide shows you how to build it.

We'll start with what Shopify includes and misses, then layer each real cost onto a single $80 order until we reach the amount that actually stays in the business.

What Shopify's Profit Report Includes, and What It Misses

Shopify's built-in profit reporting is a good start and an incomplete one. It's worth knowing exactly where the line is before you trust any number it shows.

It includes the cost of goods you entered per product, so gross profit on the report reflects COGS. It reflects discounts applied at checkout. It reflects payment fees for orders through Shopify Payments in the payout data.

It misses ad spend entirely, because Shopify has no idea what you paid to acquire the customer. It misses fees on orders paid through third-party gateways or manual methods in some views. And it handles return timing on a cash basis, so a return reverses profit on the day it's processed, not on the order it belonged to. That timing gap is why a strong week on the report can quietly weaken once the return window closes.

The takeaway: use Shopify's gross profit as your starting layer, then add the costs it can't see.

Walking One $80 Order From Checkout to Bank Deposit

Here is the full path for a single order. The customer checks out at an $80 average order value, uses a 10% code, and pays by card. We'll subtract each cost in the order it actually hits.

StepWhat happensAmountRunning total
1. Checkout priceOrder value before discount$80.00$80.00
2. Discount10% code applied-$8.00$72.00
3. Net saleWhat Shopify records as revenue$72.00
4. COGSLanded product cost for this SKU-$27.00$45.00
5. Payment fee2.9% of $72 + $0.30 fixed-$2.39$42.61
6. Shipping subsidyYour cost minus what the customer paid-$7.50$35.11
7. Pick and packFulfillment labor per order-$2.00$33.11
8. Ad spend (CAC share)Allocated acquisition cost-$22.00$11.11
9. Return provision8% return rate reserved against this order-$2.81$8.30

That $8.30 is the real net profit on an $80 order. Shopify's report, which stops after step 5, would have shown roughly $42.61 of gross profit and let you believe the order was strong. The four costs it can't see, shipping, fulfillment, ad spend, and return provisioning, took it down to a tenth of that.

Now let's cover the traps in the steps that trip people up most.

The Traps That Break the Math

Each of these turns a correct-looking calculation into a wrong one.

Blended vs Per-SKU COGS

Using one average COGS across the catalog hides your worst products. If step 4 above used a blended $22 instead of the SKU's real $27, the order would look $5 more profitable than it is. Pull COGS per SKU. A brand with wide margin spread across products cannot trust a blended number for order-level profit.

Transaction Fees

The fixed portion of the fee matters more on small orders. At 2.9% plus $0.30, an $80 order pays $2.39, but the same rate on a $30 order is $1.17, which is a larger share of a smaller sale. Don't approximate fees as a flat percentage if your AOV is low. Use the real fee structure. For anything through a non-Shopify gateway, pull the actual rate.

Discount Allocation

Discounts have to hit the specific order that used the code, not get spread across all orders. If you average total discounts across every order, a full-price order looks less profitable than it is and a heavily discounted one looks better. Order-level profit needs order-level discounts.

Return Provisioning

You don't know at checkout whether this order will be returned. So you reserve against it. If the SKU's return rate is 8%, subtract 8% of the order's net contribution as a provision, as we did in step 9. This spreads return cost across every order instead of dumping it entirely on the unlucky days a return is processed. It's the fix for Shopify's cash-basis timing gap.

Keep It Live, Not a Monthly Spreadsheet

The calculation above is right the day you build it and wrong a month later. COGS drifts as suppliers raise prices. Ad spend changes every week. Return rates move by season and by SKU. A spreadsheet captures a single moment, then rots.

The alternative is connecting the sources once and letting the numbers stay current. Shopify holds orders, discounts, COGS, fees, and returns. Google Ads and Meta Ads hold spend. With those in one place you can ask what net profit per order was this week, by product or by channel, without rebuilding a sheet each time. To see the whole cost path in context, the D2C profitability playbook maps every stage from revenue down to net profit.

For the standalone definitions behind the two margin numbers this relies on, see net profit margin and gross margin. And to run your own order without building the table by hand, use the net profit per order calculator.

Frequently Asked Questions

Does Shopify show net profit per order?

Not fully. Shopify's profit report reflects COGS you entered, checkout discounts, and Shopify Payments fees, which gives you gross profit. It does not include ad spend, since Shopify cannot see what you paid to acquire the customer, and it books returns on a cash basis rather than against the original order. To reach true net profit per order, add ad spend, fulfillment, and a return provision on top.

How do you calculate net profit on a single order?

Start with the checkout price, subtract the discount to get net sale, then subtract COGS, payment fees, shipping subsidy, fulfillment labor, allocated ad spend, and a return provision based on the SKU return rate. What remains is net profit for that order. On an $80 order with a 10% code, that path can leave roughly $8 after every real cost is applied.

Why is ad spend missing from Shopify's profit numbers?

Because Shopify has no visibility into your advertising accounts. It records the sale and the costs attached to the order itself, but the money you paid Google or Meta to acquire that customer lives in those platforms. To include it, allocate acquisition cost per order, using either a per-order CAC or blended spend divided by orders, then subtract it in your profit calculation.

Should COGS be blended or per SKU for order profit?

Per SKU whenever your products have different margins. A blended COGS hides your worst performers by averaging their cost with your best. For order-level profit that number has to be the real landed cost of the specific items in that order. Blended COGS is acceptable only for a rough business-wide view, never for deciding which products or orders actually make money.

How should returns be handled in per-order profit?

Reserve against every order rather than waiting for the return to land. Take the SKU's return rate, say 8%, and subtract that share of the order's net contribution as a provision. This spreads return cost evenly instead of dumping it on the day a refund is processed, which fixes Shopify's cash-basis timing gap and stops individual days from looking randomly strong or weak.

Related articles