True profit per Shopify order: the line-by-line breakdown of where €60 becomes €6.
Shopify shows €18,000 in sales this month. Your bank account barely moved. That gap is the entire problem — and it is not a bug, it is a stack of small costs Shopify never adds up for you. This is the full per-order cost stack, worked through a €60 AOV order, with the formula nouz uses to compute real EBIT every evening.
You log into Shopify on the first of the month and the dashboard says you did €18,000 in sales. Strong month. You check the bank — and the balance has barely moved from where it was thirty days ago. That gap between "sales went up" and "bank account flat" is the single most common pain in small e-commerce. It is not a bug in Shopify, it is not your bookkeeper missing something, and it is not bad luck. It is a stack of small costs — Shopify fees, ad spend, shipping, returns, COGS, packaging, fulfillment labor — that quietly happen in the background of every order, and that the Shopify dashboard does not add up for you. This post breaks the stack apart, walks a €60 average-order-value sale through it line by line, and shows you the formula nouz uses to compute real EBIT every evening — not at month-end when the damage is already done. By the end, you will know to within a few euros what a typical order in your store actually nets, and which of the seven cost lines is eating the most of it.
TL;DR
The diagnostic moment: €18k in sales, flat bank
Almost every Shopify owner who eventually starts tracking true per-order profit gets there through the same moment. It is the third or fourth month in a row where the Shopify "Total sales" tile shows a number that should have meaningfully moved their bank balance, and the bank balance has not moved. The first time it happens you blame timing — payouts are delayed, an invoice is unpaid, the ad agency just charged the card. By the third month the pattern is undeniable and the only honest question left is "where is the money actually going?"
The reason this pattern is so common is structural, not personal. Shopify is built around growth metrics — total sales, sessions, conversion rate, AOV — because growth metrics are what makes the platform look successful in screenshots and case studies. Shopify is not built to tell you what an individual order actually deposited into your operating account after every cost was paid. That number lives somewhere between Shopify's payout report, your Stripe statement, your Meta Ads invoice, your shipping carrier's monthly bill, your supplier invoice for COGS, and your warehouse fulfillment cost line — six different surfaces, none of which talk to each other. The Shopify dashboard cannot show you true profit per order because Shopify does not have all the data. You do.
The owners who eventually escape this pattern do one thing differently: they write down all seven cost lines for one typical order, see for themselves where each euro goes, and from then on they only look at the per-order net. They stop celebrating gross sales records and start measuring what they actually keep. More on what to do when sales are up but profit is not.
What Shopify actually shows you
Before we walk through what is missing, it is worth being precise about what the Shopify admin does show you on the home screen and the analytics page. The default home dashboard shows total sales (gross), orders, sessions, conversion rate, returning customer rate, and a sales-over-time chart. The "Finances summary" report adds gross sales, discounts, returns, net sales, shipping charged, taxes, and total sales. Notice what is in that list and what is not:
- In the report: gross sales, discounts applied, returns deducted, shipping charged to the customer, taxes collected, net sales.
- Not in the report: Shopify payment processing fees, the additional 0.5-2% transaction fee for non-Shopify-Payments processors, COGS, ad spend (none of it), shipping cost (only what you charged), packaging, fulfillment labor, refund processing fees, chargebacks, app subscription costs.
Net sales in Shopify means gross minus discounts minus returns. It does not mean profit. It does not even mean revenue after the platform took its cut. A store with €18,000 of net sales in the Shopify report could have €16,800 actually deposited into the Stripe payout (after payment fees), and operating profit of anywhere between -€2,000 and +€3,000 depending on the cost stack underneath. The Shopify "net sales" number is the same kind of number a restaurant POS gives a cafe owner: a revenue number that has had two small things stripped out and that an owner often mistakes for profit. The actual gap between "Shopify net sales" and "what hit my bank as profit" is typically 75-95% of the net sales number itself.
The real per-order cost stack
Every order that flows through your Shopify store touches between five and eight cost lines before any of it becomes operating profit. Most owners can name three of them off the top of their head — usually COGS, shipping, and "Shopify fees" loosely understood. The full list is longer. Here it is, in the order the costs actually deduct from a sale:
1. Payment processing fee
If you use Shopify Payments — which is what most stores on Basic, Shopify, or Advanced plans use — the fee for an EU card is roughly 1.5-1.9% + a small fixed amount per transaction on the lower plans, dropping toward 1.4-1.5% on Advanced. For non-EU cards, premium cards, and international cards, the fee is meaningfully higher (commonly 2.9% + €0.30 for non-European cards on the lower plans). The exact number depends on your plan tier, region, and the card mix of your customers. The point is: this fee is deducted automatically from your Stripe/Shopify Payments payout. It never appears as a line item in the Shopify "Finances summary" report. You only see it if you open the Payouts page and look at the gross-vs-net split.
For a €60 order paid on a typical EU consumer card with Shopify Payments at 1.7% + €0.25, that is about €1.27 deducted before anything else happens. For the same order paid with an American Express or a non-EU card at 2.9% + €0.30, that is €2.04. Across a year of 4,000 orders, the difference between those two rates is roughly €3,000-€3,500 — entirely from a card-mix variable nobody at the store touches. Stripe fee calculator. If your processor rate changes mid-year (renegotiation, plan change, new card mix), the help-center article on transaction fee changes covers how to update the rate without rewriting historical days.
2. Non-Shopify-Payments transaction fee (if you use Stripe, PayPal, or another processor)
This is the line that catches the most people out, because Shopify charges a transaction fee on top of the payment processor's fee whenever you do not use Shopify Payments. On the Basic plan that is 2% per transaction. On the Shopify plan it is 1%. On Advanced it is 0.5%. On Shopify Plus it varies. If you run Stripe at 1.5% + €0.25 and also pay Shopify a 2% transaction fee, your effective per-order processing cost is 3.5% + €0.25, not 1.5%. On a €60 order that is €2.35 instead of €1.15. Most stores that use a non-Shopify processor for some non-obvious reason (a regional bank discount, a legacy integration, a multi-platform setup) pay this fee for years without ever computing what it costs them at the per-order level. Annualised on 4,000 orders, the 2% transaction fee alone is €4,800 of pure deduction that does not appear anywhere on the Shopify dashboard.
3. COGS — cost of goods sold
The wholesale or manufacturing cost of the physical product itself. This is the line every owner knows about, but the trap is the snapshot. The cost of a unit when you bought it from your supplier in February is not the cost when the same unit ships in October — supplier price creep is real, freight to the warehouse adds 4-12% on most categories, and any FX move on imports compounds the problem. The honest per-order COGS is the cost at the moment the order ships, not the cost at the moment you originally bought the inventory. nouz snapshots COGS at the moment of sale specifically so that historical orders do not get rewritten when supplier prices change. More on the per-SKU margin math.
4. Packaging
The box or polymailer, the void fill, the tape, the thank-you card, the tissue paper, the sticker, the dust bag. For a typical small DTC apparel order, packaging runs €1.20-€3.50 per unit shipped. For more premium presentation (printed box, ribbon, custom insert) it climbs to €4-€8. Most stores treat packaging as one annual lump sum on the supplier invoice and never break it down per order. Doing so is uncomfortable — most owners discover packaging is 3-6% of their gross order value, not the "negligible rounding error" they assumed.
5. Fulfillment labor
Either the cost per pick-pack-ship that your 3PL invoices you for (typically €2.50-€5.00 per order in Europe for a small DTC SKU), or — if you fulfill in-house — the loaded hourly cost of the person packing the order, divided by orders-per-hour. A solo operator packing their own 50 orders a week in two hours each evening is paying themselves roughly €5-€8 per order in real labor time, even if they never write themselves a paycheck. The hidden version of this cost is the dominant version in solo e-commerce: the owner does not bill their own time, the books look profitable, and the owner cannot understand why they are working 60 hours a week and still net almost nothing.
6. Shipping cost (the gap between what you paid and what the customer paid)
The carrier invoices you €7.20 for that domestic shipment. You charged the customer €4.95 at checkout because your competitor offers "free shipping over €50" and you have to match. The €2.25 gap is your shipping subsidy and it is a per-order cost. Across a category where you genuinely offer free shipping over a threshold, the subsidy can be the entire €7.20 on orders just over the threshold. Most stores quietly subsidise shipping on 30-55% of their orders and never quantify it. More on how shipping cost eats margin.
7. Allocated ad spend (CAC)
You spent €3,200 on Meta last month and acquired 180 orders attributable to those campaigns. Your blended CAC on those orders is €17.78. That number deducts from the gross order value just as surely as COGS does — it just happens before the order is placed instead of after. The honest treatment of ad spend is to allocate it to the orders it generated and subtract it from gross at the per-order level. The dishonest (and unfortunately default) treatment is to look at ROAS in the ad dashboard, see "4.2x" and feel good, and never reconcile the per-order math against the bank. A 4.2x ROAS sounds healthy until you compute that a €60 AOV order at 4.2x ROAS means €14.28 of CAC, which on a stack already running 50%+ of gross in COGS + shipping + fees leaves nothing.
8. Refund-driven losses (return rate × effective AOV)
When a €60 order gets returned, the payment fee on the original sale is not refunded by most processors. The inbound shipping you paid to get the product back is on you. The product itself may be unsellable as new (especially in apparel, where any worn item is destroyed or sold at heavy discount). And the order still cost you the original ad spend, packaging, and fulfillment labor. A 12% return rate does not mean "you lose 12% of revenue" — it means your effective AOV is lower by 12% and your per-order cost stack ran on every one of the returned orders anyway. More on what a healthy refund rate looks like. For the in-app mechanics of logging a refund against the original sale day so the daily P&L stays honest, see the help-center article on recording a refund.
A worked €60 order, line by line
Let us walk a single typical order through the stack. The numbers below are realistic for a small EU DTC apparel store selling a €60 piece. Plug your own numbers for your category — the structure is the same.
| Line | Amount | Running net | Notes |
|---|---|---|---|
| Gross order value | +€60.00 | €60.00 | Customer pays €60.00 at checkout. |
| VAT (20%, EU) | −€10.00 | €50.00 | Computed as 60 × 20/120. This money belongs to the tax authority. |
| Shopify Payments fee (1.7% + €0.25) | −€1.27 | €48.73 | Standard EU consumer card on Shopify Payments. Higher for AmEx / international. |
| COGS (wholesale at moment of sale) | −€18.00 | €30.73 | 30% of gross, typical for small DTC apparel. Snapshotted at sale time. |
| Packaging (box, mailer, insert, tape, sticker) | −€2.40 | €28.33 | ~4% of gross. Goes higher on premium presentation. |
| Fulfillment labor (3PL pick-pack-ship) | −€3.50 | €24.83 | Mid-range 3PL rate in Europe for a single SKU order. Higher if owner-packed at honest hourly. |
| Shipping cost paid to carrier | −€7.20 | €17.63 | Domestic. International doubles this. You charged the customer €4.95 → subsidy is €2.25. |
| Shipping recovered from customer | +€4.95 | €22.58 | What the customer paid for shipping at checkout. |
| Blended CAC (Meta + Google allocated) | −€14.28 | €8.30 | From a 4.2x blended ROAS on €60 AOV. This is the line most owners exclude. |
| Refund reserve (12% rate × effective recovery) | −€2.40 | €5.90 | Estimated allocation per order for returns that destroy margin without recovering CAC, fees, packaging, or labor. |
| Daily fixed-cost slice (Shopify plan, apps, accounting) | −€1.10 | €4.80 | Allocated per-order share of monthly fixed (plan + 6-12 apps + accountant + email tool). |
| True per-order EBIT | €4.80 | 8.0% of gross. The number that actually accrues to bank. |
A €60 sale netted €4.80 of operating profit. That is not a pathology — that is a representative outcome for a healthy small DTC store at this AOV with normal margin discipline. Stores that net €8-12 on a €60 AOV order are running unusually lean (often with house-brand product at higher COGS margin and lower CAC from organic channels). Stores that net negative on a €60 AOV order — and there are many — are usually subsidising shipping at over €4 per order, paying CAC above €20, or running a non-Shopify processor and eating the 2% transaction fee on top of card processing.
A few things to notice about this worked example. First: VAT (€10) is not yours and was never yours. Treating it as part of revenue is the single fastest way to overstate margin. Second: the largest cost line is COGS at €18, but the second largest is CAC at €14.28 — which on most stores is the line that varies week to week. Third: the shipping line is net of recovery — you paid €7.20 to the carrier, recovered €4.95 from the customer, so the real cost is €2.25 not €7.20. Most owners book either the gross or the net but rarely match them up. Fourth: the refund reserve is the line that owners argue about — should it be on every order, or only the orders that get returned? Mathematically it has to be on every order to be honest, because every order has a 12% probability of becoming a return and the cost is real either way.
Comparison: what Shopify shows vs your real per-order profit
Side by side, the gap between what the Shopify admin tells you and what the bank actually keeps:
| Metric | What Shopify dashboard shows | What the bank actually keeps | Gap |
|---|---|---|---|
| Per-order revenue | €60.00 (gross sales) | €4.80 (true EBIT) | 92.0% of the headline number |
| Monthly figure (300 orders) | €18,000 (total sales) | €1,440 (true EBIT) | €16,560 of "sales" is actually costs |
| Margin as % of revenue | ~50% (gross margin: 60 − COGS − VAT) commonly displayed | 8.0% (real EBIT margin) | 42 points of phantom margin |
| Trend signal: "sales up 20% month over month" | Looks like a great month | EBIT might be flat or down if CAC moved up 10% | Top-line growth does not imply EBIT growth |
| Decision signal: "spend more on ads" | ROAS 4.2x looks healthy on the dashboard | At €60 AOV and current stack, 4.2x ROAS yields €4.80 EBIT | Need 5.0-6.0x to scale healthily |
The most damaging row in that table is the trend signal. A 20% month-over-month sales increase on the Shopify dashboard genuinely feels like a win, and on a top-line basis it is. But if the underlying CAC moved from €14 to €17 over the same period because you scaled the same campaigns into more expensive audiences, your per-order EBIT could have dropped from €4.80 to €1.80, meaning revenue grew 20% while operating profit dropped 60%. This is the specific shape of the "growth dashboard hides leaks" problem in small e-commerce — the headline number flatters you, the underlying per-order math gets worse, and the bank account does not lie. More on how fees and small-cost creep silently move EBIT.
Why GMV, AOV, and conversion rate lie
Shopify's default dashboard surfaces three top-of-funnel metrics with high prominence: sessions, conversion rate, and AOV (with GMV / total sales as the headline). Each of these can move in the "right" direction while real EBIT moves in the wrong direction. Here is how:
GMV / total sales. Goes up when you spend more on ads, run a discount, or have a successful product launch. None of those things necessarily increase per-order profit. A €10,000 GMV month from organic channels at 12% EBIT margin nets €1,200. A €15,000 GMV month from Meta ads at 4% EBIT margin nets €600. The second month "looks better" on the dashboard and is actually worse for the business.
AOV (average order value). Goes up when you bundle, upsell, or run a "free shipping over €X" threshold. A higher AOV is often celebrated as straightforwardly good. But if the way you raised AOV was by adding a high-COGS-margin upsell, the additional revenue can carry below-average per-euro EBIT and dilute the blended margin. The number to watch alongside AOV is per-order EBIT, not AOV alone. AOV break-even calculator for Shopify shows you the AOV you actually need given your cost stack.
Conversion rate. A higher conversion rate is good in isolation. But conversion rate is heavily affected by traffic source — paid traffic from a high-intent search query converts at 3-5%, paid traffic from a broad audience prospecting campaign converts at 0.8-1.5%. If you optimise for raw conversion rate by shifting budget to high-intent campaigns, you can lift the number while shrinking total volume and total EBIT, because high-intent traffic is also more expensive per click. Conversion rate is a useful diagnostic, not a useful target.
In e-commerce, card fees always apply
In a brick-and-mortar cafe or retail shop, card fees apply only to the share of revenue paid by card — cash transactions carry no processing cost. nouz models this correctly: in the daily P&L for a cafe, card fees are computed against the card portion only, never the cash portion. In e-commerce, this distinction collapses. Every order is paid by card (or by a card-equivalent rail like PayPal or Klarna that carries its own fee). There is no cash bucket. The implication is that the card-fee line is not "a portion of revenue" — it is "every order, every time."
This sounds obvious but it changes the math meaningfully. A retail shop where 50% of revenue is cash has a blended effective card-fee rate of ~0.85% on total revenue (1.7% × 50%). A Shopify store has a blended effective card-fee rate of 1.7% on total revenue, every month, forever. On €18,000 of monthly revenue that is €306/month in fees for the Shopify store vs €153 for the retail shop — twice as much, on the same revenue. Over a year that is €1,836 of additional cost that exists structurally in e-commerce and that is built into the cost stack of every order. There is no cash escape valve in DTC.
The corollary: any change to your card processing rate has a 2× leverage effect in e-commerce vs retail. Negotiating Shopify Payments from 1.7% to 1.5% (which is possible above certain volume thresholds and on Shopify Plus) saves you 0.2 percentage points on 100% of revenue — meaningful. The same saving in a cafe with 50% cash mix saves you 0.1 percentage points. So if you cross the volume threshold where Shopify will negotiate, do it; the per-order math thanks you on every order from then on. Stripe fee calculator.
Returns: the 12% rule that re-shapes your AOV
Return rates vary by category. Footwear runs 25-40% in DTC. Apparel runs 15-25%. Beauty runs 8-15%. Home goods run 4-10%. Supplements run 1-5%. Whatever your number is, the financial impact of a return is much bigger than the loss of the order revenue, because every cost line that was incurred on the original order still happened — and several new ones get added.
When a €60 order returns:
- Original payment fee (€1.27) is typically not refunded by Shopify Payments or Stripe. You ate it.
- Original packaging (€2.40) is destroyed — the box, polymailer, tape, and insert are not reusable.
- Original fulfillment labor (€3.50) already happened. Sunk cost.
- Original outbound shipping (€7.20) was paid to the carrier and is not refunded.
- Inbound return shipping — if you offer free returns (which most DTC apparel does to compete) — is typically €4-€8 on top.
- Inspection and restocking labor at the warehouse — €1.50-€3.00 per returned unit.
- Product condition risk: in apparel, ~15-25% of returned items cannot be resold at full price. In some categories (intimates, swim, certain beauty) the figure is 100%.
- The CAC (€14.28) you spent to acquire that order is now spent against zero revenue. It still costs you.
A returned €60 order in our worked example costs the business roughly €30-€40 in net out-of-pocket, depending on whether the item can be resold and whether you offer free returns. That cost spreads across the orders that did not return as a "return reserve" — in our table above we estimated €2.40 per order, which assumes a 12% return rate, ~€20 net loss per returned order, and amortisation across all orders. If your return rate is 25% (typical for apparel), the reserve per order is closer to €5.00, which on a €60 AOV is another 8 percentage points of margin compression. Returns benchmark by category.
Ad spend: a €60 order with €18 CAC is a €42 order
The most uncomfortable line in the per-order stack for many owners is the allocated CAC, because it forces a number that the ad dashboard hides. Meta and Google both surface ROAS prominently — total revenue attributed to ads divided by total ad spend. A 4.2x ROAS means "for every euro of ads, four euros and twenty cents of revenue." That sounds straightforwardly good. The problem is that the four euros and twenty cents has to cover COGS, shipping, fees, packaging, labor, returns, and fixed-cost share before any of it accrues to operating profit.
Working backwards from our example: €60 AOV, 4.2x ROAS implies €14.28 of ad spend per acquired order. The per-order EBIT in our worked example was €4.80. So in this store, every order is generating €4.80 of operating profit and €14.28 of ad-platform revenue, for a marketing efficiency where roughly three quarters of your gross order value goes to Meta, your suppliers, your card processor, your 3PL, your carrier, and your packaging supplier. The remaining quarter splits between VAT (which goes to the government) and the €4.80 you keep.
The healthier framing — and the one that drives better decisions — is to compute "post-CAC AOV." Your €60 AOV at €14.28 CAC is a €45.72 effective AOV. That is the number that has to cover COGS, shipping, fees, packaging, labor, and returns. If your stack outside CAC runs €30 per €60 order (50% of gross), you have €15.72 to absorb fees, labor, packaging, and returns on a €45.72 effective AOV — which is workable. If your non-CAC stack runs €40 per €60 order (67% of gross), you have €5.72 left on €45.72, which is the structurally-near-zero EBIT that most underperforming DTC stores live in without realising. AOV break-even calculator tells you what AOV you need given your current cost stack and target CAC.
The other thing CAC does is move week to week in ways that revenue does not. A campaign that ran at €14 CAC for three months can drift to €18 CAC over six weeks as the audience saturates, the creative fatigues, or the platform's auction dynamics shift. If you only watch ROAS, you see "4.2x → 3.5x" and might let it ride for another month. If you compute true per-order EBIT, you see "€4.80 EBIT → €0.80 EBIT" and act tomorrow. The shape of the decision is the same; the urgency is wildly different. nouz logs ad spend as a variable cost against the day it lands, so the per-order EBIT reflects current CAC, not last quarter's. More on tracking small-cost drift daily.
How nouz computes true profit per order, today
nouz computes daily EBIT using the same per-order math walked through above, just applied to the day rather than the order. The formula is the one in the calculations module and it has not changed since the product launched:
Gross revenue − Tax − Card transaction fees = Net revenue
Net revenue − COGS − Variable costs − (Monthly fixed ÷ 30.4375) = EBIT
For an e-commerce store, the entries that flow through this formula on a typical day:
- Gross revenue — total order value across orders shipped today. Pulled from your Shopify admin in one tile.
- Tax — VAT collected. Already separated by Shopify; you enter it as a single number.
- Card fees — payment processor fees on today's revenue. Computed against the full revenue (no cash bucket in e-commerce).
- COGS — wholesale cost of every unit shipped today, snapshotted at the moment of sale so that historical orders are not rewritten when supplier prices change.
- Variable costs — today's ad spend (Meta + Google + TikTok combined), today's shipping cost (net of recovered), today's packaging cost, today's 3PL fulfillment fees, today's allocated refund reserve.
- Fixed costs — monthly Shopify plan + app stack + accountant + email tool + warehouse rent (if any) + insurance. Sliced to a daily share by ÷ 30.4375 (average days per month, so February does not carry a heavier daily slice than March).
The output is one number — today's EBIT — that you see by 9pm on the same day, not on the 18th of next month. The same-day promise is the entire point: a leak in CAC, a supplier price hike, a refund spike, or a packaging cost change shows up in the EBIT number the day it happens, not three weeks later when the monthly P&L finally arrives. More on why same-day matters. For the wider operating system this sits inside, see the Shopify profitability pillar, and the paper-template version of the close is the free Shopify daily P&L template. For the COGS definition specifically, see the COGS for e-commerce glossary.
Entries in nouz are manual today — you type in the day's gross, tax, fees, COGS, ads, shipping, and packaging in a single evening close-out that takes about five minutes once you have done it a few times. There is no Shopify integration yet (a real integration is on the roadmap; manual entry is what exists now). The trade-off of manual entry is that it forces you to look at the numbers — which is the entire mechanism by which owners who switch from "look at Shopify dashboard" to "compute true EBIT daily" actually improve their margin. Knowing the number is what changes the decisions.
What to do this week
You do not have to overhaul your finance stack this week. You do have to compute true per-order EBIT for one typical order, so the gap between Shopify's number and the bank's number stops being abstract. A realistic sequence:
- Pick one typical order from last week. Not the biggest, not the smallest — a normal one near your AOV.
- Write down its gross value, the VAT collected, the payment fee deducted from your payout, and the COGS at the moment it shipped. Four numbers.
- Add your typical packaging cost and fulfillment cost for an order like this. Two more numbers.
- Look at the carrier invoice line for that shipment vs what the customer paid for shipping. The gap is the shipping subsidy. One more number.
- Compute your blended CAC for last month (total ad spend across all platforms ÷ total orders attributable). Multiply by 1 (this order) to get the allocated CAC. One more number.
- Add a return reserve appropriate to your category (use 12% × ~€20 net return loss as a starting estimate). One more number.
- Subtract everything from gross. The remainder is true per-order EBIT.
Most owners who do this exercise for the first time get a number that is meaningfully lower than what they would have guessed — typically by 50-200%. That gap is the thing the Shopify dashboard has been hiding from them. Once it is visible, the decisions about ad spend, pricing, product mix, packaging vendor, and shipping policy all sharpen, because they are being made against a number that ties to the bank instead of a number that does not.
The next step beyond a one-time calculation is daily tracking. The cost of running through this exercise once and then not refreshing it is that within 30-60 days something in your stack will have moved — CAC, supplier cost, shipping rates, refund rate, card mix — and the number you computed will be stale. Stores that compute true per-order EBIT once a quarter are better off than stores that never compute it at all, but they are still operating with a 90-day lag on margin drift. Stores that compute true daily EBIT (the same formula, applied to the whole day, every day) catch the drift the week it starts.
The honest summary: a €60 order on a typical small Shopify store nets €4-8 of operating profit after the full cost stack runs. The Shopify dashboard will tell you that order is €60 of sales. Both numbers are true; only one matters for whether the business pays you. Until you compute the second one for yourself, the gap between "sales went up" and "bank account flat" will keep being the most confusing thing about running your store. Once you compute it, it stops being confusing — and the decisions about what to do next get a lot easier.
FAQ
Why is my Shopify profit so different from my Shopify sales?
Because Shopify's "Total sales" number is gross — it has not deducted payment fees, COGS, ad spend, shipping cost to the carrier, packaging, fulfillment labor, or any returns. Each of those costs is real and each of them is invisible on the default Shopify dashboard. A €60 sale on a typical small DTC store nets €4-8 of operating profit after the full cost stack runs. The gap between gross sales and real profit is usually 85-95% of the headline number. The true profit calculator for e-commerce walks the full stack for one order in your browser.
What is a healthy net margin for a Shopify store?
For a small DTC Shopify store with paid acquisition as the primary channel, healthy operating margin (EBIT) sits at 8-15% of gross revenue. Stores running primarily on organic channels (SEO, repeat customers, content) can hit 18-25%. Stores doing high-volume low-margin product (commodity supplements, basic apparel) often run at 4-8% and need volume to compensate. Below 4% EBIT margin is structurally fragile — a single quarter of CAC inflation or supplier price creep can move you negative. Above 25% on a DTC store almost always means you are either subsidising your time (not paying yourself) or you have not yet allocated all costs honestly.
Does Shopify show me my COGS?
Only if you manually enter a cost per variant in your product admin, and even then the "Finances summary" report does not deduct COGS to give you a profit number — it gives you "net sales" which is gross minus discounts minus returns, not gross minus COGS. To see profit per order you need to compute it yourself or use a tool that pulls the COGS field and applies it. Shopify's margin column on the product list is the closest built-in surface, and it has the limitation that it uses the cost at upload time, not the cost at the moment of sale — so if your supplier prices moved since upload, the margin shown is stale.
How do I include returns in per-order profit?
Two methods. (1) Per-returned-order: compute the actual net cost of a returned order — original payment fee not refunded, original packaging destroyed, original outbound shipping not refunded, inbound return shipping if you cover it, restocking labor, plus product write-down if not resellable — and book that as a full negative against the day the return processed. (2) Reserved-per-order: estimate your return rate and net cost per return, multiply, and allocate as a reserve against every order. Reserved is more useful for daily EBIT because it does not create lumpy hits on return-heavy days. A starting estimate: 12% return rate × €20 net loss per return = €2.40 reserve per order. Apparel and footwear should use higher numbers (€4-€8 per order).
Should I include my own labor in per-order profit?
Yes, if you want an honest number. The most common reason a solo Shopify store appears profitable on paper but feels broke in real life is that the owner packs every order themselves, runs customer service themselves, and shoots their own product photography — all without ever booking those hours as a cost. If you would have to hire someone at €18-€25/hr to do those tasks, that is the real labor cost of the orders going out the door. Stores that book honest owner-labor often discover their true EBIT is 30-60% lower than they thought, which is the number that actually matters for sustainability. A profitable store that runs on €0 owner labor is not a profitable store — it is a job that does not pay you.
What is a true CAC?
True CAC is all customer-acquisition spend (Meta + Google + TikTok + influencer payments + affiliate commissions + creative production attributable to ads + the share of any agency retainer that maps to acquisition) divided by the number of new customers acquired in that period. The dashboard-reported CAC in any single ad platform is almost always lower than true CAC because it excludes the spend on the other platforms, agency cost, and creative production. A common pattern: Meta dashboard says CAC is €12, true blended CAC across all spend including agency is €17.50. The per-order math has to use the true number, otherwise EBIT looks better than it is.
How fast can I see today's real profit on my Shopify store?
Today, by close of business — if you log gross, tax, fees, COGS, ad spend, shipping, and packaging at end of day. That is the entire promise of nouz: enter the day's numbers in five minutes, see today's EBIT before locking the laptop, and act on margin drift the day it shows up instead of three weeks later when the monthly P&L finally arrives. There is no Shopify integration yet (manual entry is what exists today); the trade-off is that the manual entry forces you to look at the numbers, which is the mechanism by which the math actually changes how you run the store. Setup takes about seven minutes. See pricing or try the live demo first.