Shopify profitability: the complete guide to running a DTC store that actually pays you.
Most Shopify stores do not lose money because the product is bad. They lose money because the cost stack is invisible until month-end, the platform dashboard reports gross as if it were profit, and the owner is making spending decisions against a number that does not tie to the bank. This is the full pillar — net margin benchmarks by category, the true cost stack, per-order math, AOV vs CAC vs CLV, attribution honesty, return-rate accounting, shipping economics, discount damage, the daily close-out, and the 30-day reset that turns a struggling store profitable. Built on the same EBIT formula nouz uses every evening.
There is a particular kind of Shopify owner this post is written for. The store is two or three years old. Last month did €22,000 in sales — a record. The bank account is the same as it was three months ago. The Meta dashboard says ROAS is 5.1x. The accountant sends a quarterly P&L that arrives in February for October. The owner can quote monthly revenue from memory, knows their conversion rate to two decimal places, and could not tell you within €5 what a typical order actually nets after every cost. None of that is unusual — it is the default state of small DTC, and it is the structural reason most Shopify stores quietly close in year three. This pillar walks the entire profitability stack: the landscape of typical net margins by category, the full cost stack underneath every order, the per-order math that ties Shopify to the bank, the survival metrics (AOV, CAC, CLV, ROAS), the silent margin destroyers (returns, free shipping, discounts), the daily close-out that catches drift the day it starts, and the 30-day reset that turns a struggling store profitable. Built on the same EBIT formula nouz uses every evening. By the end you will know — for your store — where the money actually goes, what to fix first, and how to never go a month again without knowing the answer to the only question that matters: "did I make a profit today?"
TL;DR
The Shopify profitability landscape
Shopify makes it easy to start a store and almost impossible to run one profitably without conscious effort. The platform is designed to lower the barrier to launch — themes, payments, checkout, basic analytics, app store — and the launch experience is genuinely excellent. The post-launch experience is a different problem, because the same dashboards that look encouraging during your first week (sales coming in, conversion rate above zero, sessions climbing) keep looking encouraging in your second year even when the underlying unit economics have quietly turned negative. The dashboard does not change shape when the math stops working.
The landscape statistics that matter for an owner deciding whether their store is "normal" or in trouble:
- Typical net (EBIT) margin for a small DTC Shopify store is 4-12% of gross revenue. Above 15% usually means the owner is not booking their own labor at market rate or has not fully allocated returns and CAC. Below 4% is structurally fragile — a single quarter of CAC inflation or supplier price creep can move you negative.
- Most stores lose money in year one. Setup costs, learning-curve ad spend, slow inventory turnover, and the time required to build a repeat-customer base mean the first 12 months for most DTC brands are a net cash outflow even when revenue grows nicely month over month. This is not a sign of failure; it is the shape of the business model.
- The median small DTC store does not survive past year three. The combination of rising CAC, platform fee creep, supplier price increases, and the founder running out of personal runway closes most stores between months 24 and 42. The ones that survive are almost always the ones that started computing real EBIT (not gross sales, not "revenue minus COGS") before month 18.
- "Sales up, bank flat" is the universal pre-failure pattern. Almost every small DTC owner who eventually walks away from their store goes through 6-18 months of "this month was great but the bank account did not move" before recognising that the dashboard and the bank are telling different stories. The dashboard wins the attention battle because it updates in real time and looks impressive in screenshots. The bank wins the existence battle because rent is paid in euros, not in attributed-revenue claims.
The structural reason small Shopify stores are harder to make profitable than they look is not any single cost line. It is that the costs are spread across six surfaces (Shopify, Stripe, Meta/Google, the carrier, the supplier, the 3PL or fulfillment labor), none of which sum to a single number, and the owner is the only person who can do the summing. Until someone does it, the owner is operating on a vibes-based estimate of profitability that is almost always 50-200% more optimistic than reality.
The true cost stack: where each €100 of Shopify revenue goes
Every euro of Shopify gross revenue runs through a stack of cost lines before any of it becomes operating profit. The default mental model most owners carry is "revenue minus COGS minus shipping = profit." The actual stack is longer, and the missing lines are the ones that quietly turn a "profitable" store into an unprofitable one. Here is where a typical €100 of small DTC revenue actually goes, line by line, in the order it deducts.
| Cost line | Typical % of gross | What it is | Where it lives |
|---|---|---|---|
| VAT / sales tax | 15-25% | Money you collected on behalf of the government. Never yours. | Tax authority |
| Shopify Payments / Stripe fee | 1.7-2.9% + €0.25-€0.30 | Card processing on every order (no cash bucket in DTC). | Stripe / Shopify Payments payout |
| Non-Shopify-Payments transaction fee | 0.5-2.0% | Additional fee Shopify charges if you use Stripe / PayPal as your processor. | Shopify monthly invoice |
| COGS (cost of goods sold) | 28-55% | Wholesale or manufacturing cost of the product itself, snapshotted at sale time. | Supplier invoice |
| Packaging (box, mailer, insert, tape, sticker) | 2-6% | The physical materials that wrap the product. | Packaging supplier |
| Fulfillment labor | 4-9% | Pick-pack-ship cost from a 3PL, or the loaded hourly cost of in-house packing. | 3PL / owner time |
| Outbound shipping (net of customer recovery) | 3-10% | What the carrier charges minus what the customer paid at checkout. | Carrier invoice |
| Blended CAC (ads + agency + creative) | 12-30% | Allocated cost to acquire each customer who placed this order. | Meta + Google + agency invoices |
| Refund / return reserve | 2-8% | Allocation per order to cover the destructive effect of returns. | Internal reserve |
| Shopify plan + app stack | 1-3% | Monthly subscription + 6-15 app fees, allocated per order. | Shopify monthly invoice + Stripe |
| Other fixed costs (accountant, email, insurance, owner draw) | 5-20% | Allocated daily share of monthly fixed-cost base. | Various |
| EBIT (what stays) | 4-12% | The actual operating profit that lands in your bank. | Bank account |
A few things to notice about the table. First: VAT is the largest single line on the stack for most stores, and treating it as part of revenue is the single fastest way to overstate margin. A €22,000 month at 20% VAT is €18,333 of revenue that is actually yours; the other €3,667 is the government's. Second: COGS and CAC are the two biggest "real" cost lines and they usually move in opposite directions over time — supplier prices creep up as you scale, while CAC ideally drops with retention but practically tends to creep up as audiences saturate. Third: the bottom four lines (refunds, plan, fixed costs, other) are the ones almost nobody fully allocates to per-order math, and together they are 8-31% of gross revenue. Owners who skip these lines report EBIT margins that are roughly twice what the bank actually shows.
The same stack shown as a "follow the €100" walk. Start at €100 of gross. Strip €18 of VAT — €82 left. Strip €2 of card processing — €80. Strip €38 of COGS — €42. Strip €4 of packaging and €6 of fulfillment — €32. Strip €5 of shipping subsidy — €27. Strip €18 of CAC — €9. Strip €4 of refund reserve, €2 of plan-and-apps, €1 of allocated fixed — €2 of EBIT. Two euros of every €100 of gross revenue actually become operating profit. That is what a typical, decently-run small Shopify store looks like. More on the full per-order walkthrough.
True profit per order
The cost stack above, applied to a single order, gives you the per-order EBIT — the number that decides whether each individual sale is contributing to profit or eating into it. A worked €60 order from a typical small EU DTC apparel store:
| Line | Amount | Running net | Notes |
|---|---|---|---|
| Gross order value | +€60.00 | €60.00 | Customer pays €60 at checkout. |
| VAT (20%, EU) | −€10.00 | €50.00 | Computed as 60 × 20/120. Belongs to the tax authority. |
| Shopify Payments fee (1.7% + €0.25) | −€1.27 | €48.73 | Standard EU consumer card. |
| COGS (wholesale at moment of sale) | −€18.00 | €30.73 | 30% of gross. Snapshotted at sale time. |
| Packaging | −€2.40 | €28.33 | Box + mailer + insert + tape. |
| Fulfillment labor (3PL pick-pack-ship) | −€3.50 | €24.83 | Mid-range EU 3PL rate. |
| Shipping cost paid to carrier | −€7.20 | €17.63 | Domestic. |
| Shipping recovered from customer | +€4.95 | €22.58 | Customer paid €4.95 at checkout. |
| Blended CAC (Meta + Google, true) | −€14.28 | €8.30 | From 4.2x blended ROAS on €60 AOV. |
| Refund reserve (12% rate × €20 net loss) | −€2.40 | €5.90 | Allocated per order. |
| Daily fixed-cost slice | −€1.10 | €4.80 | Monthly fixed ÷ 30.4375 ÷ daily orders. |
| True per-order EBIT | €4.80 | 8.0% of gross. |
Eight cents on the euro. A €60 sale netted €4.80 of operating profit. That is not a pathology — it is representative for a healthy small DTC store at this AOV with normal margin discipline. Stores that net €8-12 on a €60 AOV are running unusually lean (house-brand product, organic acquisition mix, low return category). Stores that net negative on a €60 AOV — and there are many — are usually subsidising shipping at over €4 per order, paying CAC above €20, or running a non-Shopify processor with the additional 2% transaction fee on top of card processing. Even though e-commerce has no cash bucket, the cash-vs-card split still matters for the manual entry workflow — the help-center article on cash vs card revenue covers how to keep the split clean.
The full per-order walkthrough — including how to handle returns honestly, why VAT must come out before margin math, and how CAC moves week to week — is in the dedicated true-profit-per-order post. Use the true profit calculator for ecommerce to run the per-order math on your own numbers in your browser, no signup required.
AOV vs break-even AOV: the survival metric
Most Shopify owners can tell you their AOV to the cent. Almost none can tell you the AOV they actually need to break even. They run sales campaigns, raise ad spend, push add-to-cart upsells, and watch revenue grow — and then wonder why the bank account does not follow. The gap between "we did €38,000 last month" and "we lost €1,400 last month" is almost always the same gap: the average order is selling for less than it costs to deliver.
Break-even AOV is the order value at which contribution margin (what is left after every variable cost) exactly equals the fixed cost burden per order. Below that AOV, the order makes the loss bigger. Above it, the order contributes to profit. The formula:
Three actions if your AOV is below break-even — and only three. Raise AOV (bundles, upsells, free-shipping threshold tuning, premium SKUs). Lower CAC (kill the worst-performing channel, lean into retention, build organic). Improve gross margin (renegotiate suppliers, switch packaging, reduce returns, drop bottom-quartile SKUs). One lever rarely closes a structural gap; usually all three need to move. The full derivation, three-profile comparison table, free-shipping threshold math, and bundle math are in the break-even AOV post. Run your own number in 60 seconds with the AOV break-even calculator for Shopify.
CAC: platform-reported vs true blended
Customer acquisition cost is the single most-misreported number in small DTC. The Meta dashboard says your CAC is €12. Your true blended CAC, computed honestly, is €18-€22. The gap matters because every break-even ROAS calculation, every CLV:CAC ratio, every "should I scale?" decision is driven by the CAC number — and using the platform number instead of the true one is the difference between thinking you can scale profitably and discovering you have been scaling unprofitably for six months.
Why the platform-reported number is systematically too low:
- Platforms exclude agency fees. Your €1,500/month Meta agency retainer is part of acquisition cost. The Meta dashboard never sees it.
- Platforms exclude creative production. The €600 you paid a freelancer to shoot the new product video is part of the cost of acquiring customers for the campaigns that used it.
- Platforms exclude your own time. If you spend 8 hours a week managing ads at an honest opportunity cost of €25/hr, that is €800/month of unbilled labor that real CAC includes.
- Platforms exclude returns. If 15% of acquired customers return their order within 30 days, true CAC should be computed against the customers who actually kept the order, not the gross acquired number.
- Platforms double-count across channels. Meta CAC and Google CAC each take credit for some of the same customers, so per-channel CAC numbers sum to fewer unique customers than the platforms imply.
The fix is to compute CAC from totals, not from dashboards. Sum every euro of acquisition-related cost in a month (ads + agency + creative + tools + honest owner time) and divide by net new customers acquired (gross new, minus those who returned within 30 days). That is true blended CAC. Use it in every downstream calculation. The customer acquisition cost calculator walks the full computation.
Customer lifetime value, honestly
If your customers do not come back, you do not have a business — you have an arbitrage between ad platforms and product margin, and the platforms are charging you more every quarter. Customer lifetime value (CLV) is the number that tells you whether the second order ever happens, how often, and for how long. Most published CLV formulas leave out returns, retention costs, and the contribution-margin distinction — so the numbers look healthier than the bank account confirms.
The honest formula for an owner-operator who needs a number this afternoon:
A worked example. A DTC skincare brand with €52 AOV, 42% contribution margin (after COGS, shipping, card fees, fulfillment), 2.3 orders per customer per year, 1.8 year average lifespan (44% repeat rate), and €28 blended CAC. CLV = €52 × 42% × 2.3 × 1.8 − €28 = €90.43 − €28 = €62.43 per customer. CLV:CAC = 90.43 ÷ 28 ≈ 3.2:1 — a healthy ratio.
Three levers move CLV: frequency (post-purchase flows, subscription mechanics, cross-sell), AOV (bundles, upsells, threshold tuning), lifespan (product consistency, customer service, reactivation flows). They multiply, not add — pulling all three at 20% each lifts CLV by 73%, not 60%. The full derivation, three-profile comparison, returns adjustment, and cohort-vs-predicted CLV are in the customer lifetime value post. Run your own number with the CLV calculator.
The CLV:CAC ratio: what healthy looks like
CLV alone tells you customer value. CAC alone tells you customer cost. The ratio tells you whether the business model is paying back acquisition with enough margin to fund growth, fixed costs, and operating profit. The honest read for small DTC brands:
| CLV:CAC ratio | What it means | What to do |
|---|---|---|
| Below 1:1 | Paying more to acquire than customers will ever return. Every new customer is a net loss. | Stop scaling ads immediately. Fix product, retention, or pricing before spending another euro on acquisition. |
| 1:1 to 2:1 | Breaking even on acquisition. Customers pay back CAC but contribute almost nothing to fixed costs or profit. | Focus on retention first — email, post-purchase, replenishment. Do not increase ad spend until retention lifts the ratio above 2.5:1. |
| 2:1 to 3:1 | Acceptable but thin. Works only if everything else stays tight. | Healthy but watch CAC inflation. A 15% CAC rise (very common quarter to quarter on Meta) drops you below 2:1. |
| 3:1 to 4:1 | The industry-cited healthy zone for DTC. | Right zone. Keep acquiring at this rate. Invest in retention to push lifespan up further. |
| 4:1 to 5:1 | Above typical healthy band. Strong product/brand, under-investing in acquisition. | You are leaving growth on the table. Increase ad budget 20-30% and watch the ratio. |
| Above 5:1 | Very strong retention or very cheap acquisition. Usually under-investing in growth. | Test scaling. Most brands here can double ad spend before the ratio drops to 3:1. |
3:1 is the cited benchmark, but it is a rule of thumb, not a law. Brands with very low fixed costs (no warehouse, no staff, owner-operated) can survive at 2:1. Brands with heavy fixed costs (rented warehouse, full-time team, retail showroom) need 4:1+ to actually clear fixed costs. The ratio depends on what is below the gross margin line in your P&L.
The rule that catches most small DTC brands out: they keep scaling acquisition while CLV:CAC is dropping. Sales look like they are growing, but contribution is flat or down because each new customer costs more and returns less. The brand looks like it is growing right up until the cash runs out. CLV:CAC is the leading indicator. Watch it monthly, not annually.
Attribution and ROAS: what platforms claim vs what the bank says
Meta says you got 8.4x ROAS this week. Your bank account shows you broke even. Both numbers are accurate. Only one is useful. Platform ROAS is a model with view-through inflation, last-click bias, cross-device double-counting, brand-search cannibalisation, and modeled-conversion estimation baked in. Stacked together on a typical Shopify store running Meta + Google with default attribution, the combined effect routinely makes platform-reported ROAS 1.5-3x higher than incremental ROAS measured against actual bank revenue. A reported 8x ROAS is often a real 3-4x. A reported 4x ROAS is often a real 1.5-2x.
The fix is two-fold. First: compute blended ROAS — total gross revenue ÷ total ad spend across all channels (including agency and creative production). It is less precise than per-channel attribution would be if attribution worked, but it cannot be fooled by any single platform's biases. Second: run a 14-day pause test on the channel you suspect — turn it off for two weeks, measure how much total revenue actually drops, and compute incremental contribution as (lost revenue ÷ claimed contribution).
| What Meta/Google says | What your P&L says | Which to trust |
|---|---|---|
| "8.4x ROAS this week from Meta" | "Revenue went up €1,800 on €1,800 of Meta spend — 1.0x incremental" | P&L. Platform ROAS includes view-through, last-click, and cross-device inflation. |
| "Branded search delivered 15x ROAS" | "Pausing branded search dropped revenue 8%, not the 60% Google claimed" | P&L. Most branded-search clicks cannibalise organic that was already coming. |
| "Retargeting ROAS is 12x" | "Pausing retargeting for 14 days dropped revenue ~20% of claimed contribution" | P&L. Retargeting credits the last touch on customers converting via other channels. |
| "Total attributed revenue across all platforms = €22,000" | "Shopify gross sales same period: €15,000" | P&L. Cross-platform double-counting is the default — attributed numbers exceed reality by 40-60%. |
| "Modeled conversions from iOS users: 480 this week" | "Bank-reconciled conversions: ~360 this week" | P&L. Modeled conversions overstate by 15-40% in iOS-heavy categories. |
The full incrementality test procedure, the five attribution biases in depth, and how to interpret blended ROAS against your break-even number are in the attribution window myth post. Compute your minimum blended ROAS with the break-even ROAS calculator.
Return rate math: 12% returns is not 12% margin
When a €60 order gets returned, the financial impact is much bigger than "you lose €60 of revenue." Every cost line that was incurred on the original order still happened, and several new ones get added. The original payment fee is not refunded. The original packaging is destroyed. The original outbound shipping is not refunded. The original CAC was spent against zero net revenue. Inbound return shipping is on you if you offer free returns. Restocking labor at the warehouse runs €1.50-€3.00 per returned unit. And in many categories (apparel, footwear, intimates), a meaningful share of returned items cannot be resold at full price — sometimes any price.
Return rates vary wildly by category:
| DTC category | Typical online return rate | Net loss per returned €60 order | CLV/contribution adjustment |
|---|---|---|---|
| Skincare / beauty consumables | 3-8% | €25-€35 | Small |
| Supplements / food | 1-5% | €20-€30 | Negligible |
| Apparel — fit-sensitive | 20-35% | €30-€45 | Material — must adjust |
| Footwear | 15-28% | €35-€50 | Material |
| Home goods (small) | 4-12% | €30-€55 (large parcels) | Small per unit, expensive each |
| Electronics / accessories | 8-15% | €25-€40 | Moderate |
| Jewellery (DTC) | 5-12% | €30-€50 | Moderate |
The adjustment to per-order math is straightforward: take your gross contribution per order, subtract the expected return cost per order (return rate × average refunded contribution + return processing cost), and use the adjusted contribution downstream. For an apparel brand with €60 AOV, 50% gross margin, 28% return rate, and €4 return processing cost per returned order, the adjusted contribution per order drops from €30 to about €19.50 — a 35% hit. That is the single biggest correction most apparel CLV calculations are missing, and it is why brands with 4:1 CLV:CAC on paper end up running negative cash flow.
The full category benchmark, the difference between per-returned-order and reserved-per-order accounting, and how to model returns into daily contribution are in the ecommerce refund rate benchmark post. For the in-app mechanics of logging a refund against the original sale day, see the help-center article on recording a refund.
Shipping economics and the free-shipping threshold
Free shipping is the single most influential lever on AOV for most ecommerce stores. Set the threshold too low and you give away margin without earning AOV uplift. Set it too high and customers abandon carts trying to qualify. The right threshold is a math problem, not a vibe — and "what your competitor does" is almost always the wrong answer because their cost stack is not yours.
The principle: your free-shipping threshold should sit at a point where the contribution gained from the average customer lifting their basket to qualify exceeds the shipping cost you absorb on those orders. The pattern across most categories:
| Threshold | Typical AOV outcome | Shipping absorbed per qualifying order | Best for |
|---|---|---|---|
| €50 | AOV moves from €40 → €52 | €6-€8 | Low-ticket stores (AOV under €50 baseline) |
| €75 | AOV moves from €55 → €72 | €5-€7 | Mid-ticket stores (AOV €50-€80 baseline) |
| €100 | AOV moves from €70 → €98 | €4-€6 | Higher-ticket / bundled stores (AOV €70+ baseline) |
| €150 | AOV moves from €110 → €148 | €3-€5 | Premium / home goods (AOV €100+ baseline) |
The rule of thumb: set the threshold 30-45% above your current AOV. Below that range and the threshold does nothing (customers were already over it). Above 60% and the threshold creates friction without enough lift. The sweet spot is where the average customer reaches the threshold by adding one more reasonable item — not by adding three.
Worked check: solo Shopify store at €55 gross AOV, current threshold €60 (gives away too easily). Move threshold to €75 (36% above current AOV). Expected outcome: AOV lifts to roughly €68 (about half of orders now bundle a second item to reach threshold; the other half remain just under it and pay €5.90 shipping). At 280 orders/month, new contribution per order goes up by roughly €5 once you net absorbed shipping against the lifted gross profit. That is €1,400/month of additional contribution — meaningful, and the kind of move that pays back the cost of running this analysis many times over. More on the shipping margin math.
Bundles and upsells: AOV without margin damage
Bundles are the most direct AOV-lift tactic and the easiest place to accidentally destroy margin. A "buy 2 save 15%" bundle on items the customer would have bought anyway as two separate orders just gave away 15% of two orders' margin in exchange for one transaction's worth of fulfillment savings — a bad trade. The bundle math that works: the bundled price should still leave you with at least as much contribution as the single highest-margin SKU in the bundle would have generated alone.
Bundles work best when they (a) introduce a product the customer would not have bought alone — a complement, not a substitute — and (b) carry a discount in the 8-15% range, not 25-40%. The deeper the discount, the more likely you are subsidising sales that would have happened at full price.
Upsells at the cart or product page are the lower-effort version of the same lever. A small low-friction add-on (€6-€12, complementary, single click to add) added to the cart page typically converts at 15-25% and adds €1-€3 to true average AOV across all orders. The trick is that the upsell SKU should carry high gross margin (often a small accessory, a sample, a digital download, or a low-COGS consumable) — adding a low-margin upsell is the same trap as a bad bundle. The bundle pricing post walks the full math for three common bundle patterns.
Discount codes: the margin destroyer most stores cannot quit
Discount codes feel like a growth tool and behave like a margin tool — usually a destructive one. The owner sets up a "welcome 10% off" code to capture email signups. Then a "20% off your first order" Meta ad to lift conversion. Then a "BLACKFRIDAY30" sitewide promotion. Then a creator-code program at 15% to influencers. Then a "win-back 25% off" automation for lapsed customers. By month six, the average order is going out with one of five discounts attached, blended gross margin has dropped 6 percentage points, and the owner cannot remember which codes are still active.
The math is brutal. Every percentage point of discount on a low-margin product is several percentage points of contribution. A worked table showing the contribution impact of a discount, by starting gross margin:
| Starting gross margin | 10% discount | 20% discount | 30% discount | 40% discount |
|---|---|---|---|---|
| 30% | −33% contribution | −67% contribution | −100% (break-even) | Negative contribution |
| 40% | −25% contribution | −50% contribution | −75% contribution | −100% (break-even) |
| 50% | −20% contribution | −40% contribution | −60% contribution | −80% contribution |
| 60% | −17% contribution | −33% contribution | −50% contribution | −67% contribution |
| 70% | −14% contribution | −29% contribution | −43% contribution | −57% contribution |
Read the row that matches your gross margin. A 30% gross margin business that runs a 30% discount has zero contribution on the discounted order — every cost line outside COGS (CAC, shipping, fees, packaging, labor) comes out of pure operating loss. A 50% gross margin business at the same discount keeps 40% of contribution per order, which is survivable but materially worse. The point is not "never run discounts" — it is "know what the discount actually costs in contribution terms before you run it."
Three discount practices that destroy more margin than owners realise: (1) stacked discounts — the customer applies a welcome code on top of a sale price on top of a creator code, and the effective discount is 45% when each individual code is "only" 15-20%. (2) Permanently visible codes — once "WELCOME10" exists in your auto-applied flow and on your homepage banner, the default for every order becomes 10% off, and your "full price" is fiction. (3) Discount-driven retention — sending "we miss you 25% off" emails trains customers to wait for the email before reordering, dropping repeat-order margin without changing repeat rate. The cure is discipline: audit every active code monthly, set an annual discount budget as a percentage of revenue, and pull the calendar back to discrete promotions tied to specific moments rather than always-on subsidies. The full discount codes post walks the math for each pattern.
The 60-second daily close-out for DTC
Everything above is theoretical until it lands in a daily habit. The DTC operators who run profitable stores in 2026 do one thing the unprofitable ones do not: they compute real EBIT every evening, on the same day the orders shipped, against numbers that tie to the bank — not numbers from platform dashboards that tie to attribution windows. The close-out itself is short:
- Gross revenue today — pull from Shopify in 10 seconds. One number.
- Tax collected today — Shopify breaks this out automatically. Override if your VAT rate differs.
- Card processing fees today — settled from your processor (Stripe / Shopify Payments / Adyen / Mollie). One number.
- COGS for today's shipped orders — snapshotted at sale time, not the supplier's current price.
- Variable costs today — ad spend run today (Meta + Google + TikTok combined), shipping cost net of customer-paid, packaging, 3PL fulfillment, allocated refund reserve.
- Fixed-cost slice for today — appears automatically (monthly fixed ÷ 30.4375).
- EBIT for the day lands. AOV for the day lands. Gap to break-even AOV lands.
By 9pm on the same day the orders shipped, the owner knows whether today cleared break-even. Not next month, not next quarter — tonight. If three days in a row come in below break-even, the response is immediate, not retrospective. The €4,000 quarterly drift does not happen because the first €120 of drift was visible on day one.
The trade-off of a 60-second close-out is that the inputs are manual — you type the day's numbers in. There is no Shopify integration today (a real integration is on the roadmap; manual entry is what exists now). Counter-intuitively, the manual entry is part of the mechanism by which the math actually changes how you run the store: typing the numbers forces you to look at them, which is the entire reason owners who do this for the first time improve their margin within 30 days without changing anything else about the business.
How to diagnose a struggling Shopify store — five leak patterns
When a Shopify store is "doing fine on the dashboard, struggling in the bank," the cause almost always fits one of five patterns. Identifying which pattern you are in is the first step toward fixing it, because each pattern has a different cure.
Pattern 1: AOV is structurally below break-even
The most common pattern. The store runs at €45-€60 AOV, the cost stack requires €120-€170 AOV to break even, and every additional order makes the loss bigger. The signal: bank account drops every month even when revenue grows; "winning months" feel exactly like "losing months." Cure: pull the three break-even AOV levers (AOV, CAC, margin) simultaneously. Stop scaling ad spend until the unit math fixes. Full diagnostic in the break-even AOV post.
Pattern 2: CAC has crept above contribution per order
The store hit profitability in year one when Meta CAC was €11, then scaled into more expensive audiences and creative fatigued by year two, and CAC drifted to €22. The dashboard still says 4x ROAS but the gross-margin minus everything-else math is now barely positive. The signal: revenue stable or growing, but contribution per order is shrinking quarter over quarter. Cure: kill the worst-performing campaign, lean into retention (email, post-purchase, replenishment), and rebuild the audience mix at lower CAC even at the cost of short-term volume. CLV post covers the retention side.
Pattern 3: returns are silently eating 20-35% of contribution
Common in apparel, footwear, and any category where fit, color, or feel matters and customers cannot try before buying. Return rates over 20% combined with under-allocated return cost in the per-order math leave the store thinking it is breaking even when it is actually losing 8-15% per order on the blended cohort. The signal: "good months" feel arbitrary; some months are profitable, some not, with no obvious link to revenue. Cure: allocate honest return cost (return rate × net loss per return) into every order's contribution, then either reduce return rate (fit guides, better photography, sizing accuracy) or restructure pricing to absorb the real return cost.
Pattern 4: free shipping or stacked discounts giving away margin
The store has a free-shipping threshold set at €50 while AOV is €55, so 80% of orders qualify with the customer paying nothing — the store absorbs €5-€7 per order in shipping subsidy on every qualifying order. Compound with stacked discounts ("welcome 10%" + "creator 15%" + "Black Friday 20%" running simultaneously) and effective contribution per order can drop 30-50% from the "full price" math the owner assumes. Cure: audit every active discount monthly, set the free-shipping threshold 30-45% above current AOV, and treat discounts as discrete events not always-on baselines. Full discount cost post.
Pattern 5: app stack and fixed costs grew faster than revenue
The store added Klaviyo, Reviews.io, Stamped, Loox, ReConvert, Yotpo, Recharge, and seven other apps "as the team grew." Combined app subscriptions are €450/month, plus an agency retainer at €1,500, plus a part-time VA at €1,200, plus the accountant — and the fixed-cost slice per order has crept from €4 to €14 over 18 months without revenue keeping pace. The signal: gross margin per order is unchanged, but EBIT margin is shrinking — the gap is fixed cost. Cure: audit every monthly fixed line; cancel the apps that are not driving identifiable revenue; renegotiate or end the agency retainer if blended ROAS is below break-even.
Why Shopify's built-in reports do not show real profit
Shopify is not hiding profit from you out of malice. It cannot show you profit because Shopify does not have the data. The "Finances summary" report shows gross sales, discounts, returns, net sales, shipping charged to customers, taxes, and total sales. What is in the report and what is not:
- In the report: gross sales, discounts applied, returns deducted, shipping charged to 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 (unless you manually entered a cost per variant and even then the report does not deduct it from "net sales"), ad spend (none of it), shipping cost (only what you charged), packaging, fulfillment labor, refund processing fees, chargebacks, app subscription costs.
Shopify "net sales" 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. More on the gap between Shopify reports and real daily P&L.
The 30-day DTC profitability reset
If your store is sitting in one of the five leak patterns above, the move is not to write a new business plan or hire a consultant. It is to run a structured 30-day reset, in four weekly stages, that converts the diagnostic into action. The full sequence:
Week 1: visibility. Compute true blended CAC for the last 90 days (every euro of ads + agency + creative ÷ net new customers). Compute true blended ROAS for the last 30 days (total gross ÷ total ad spend, all channels). Compute true contribution per order using the full cost stack (VAT out, card fees, COGS, packaging, fulfillment, shipping net, allocated CAC, refund reserve, daily fixed slice). Compute current AOV and break-even AOV. Write all five numbers down. Most owners discover at least two of them are 30-80% worse than they assumed.
Week 2: cut. Identify the worst-performing ad campaign by blended math (not platform ROAS). Pause it. Identify the lowest-margin SKU in your top 10 by contribution. Drop it from the assortment. Identify the apps in your stack that are not driving identifiable revenue (the test: cancel them for 30 days and see if anything observable breaks). Cancel them. Identify any auto-applied discount code that has been live for more than 90 days. Remove it from auto-apply. The cuts will feel uncomfortable. The bank will notice within two weeks.
Week 3: lift. Move free-shipping threshold to 30-45% above current AOV. Add one high-margin cart upsell at the €6-€12 price point. Test a 10-15% bundle on a complementary SKU pair (no deeper). Launch one post-purchase retention email at the typical reorder window for your category. The combined effect is usually 10-20% AOV lift and 5-10% repeat-rate lift within 30 days of these changes.
Week 4: institutionalise. Set up the daily close-out habit. Every evening, type the day's gross, tax, fees, COGS, ads, shipping, and packaging into a single P&L surface. See today's EBIT before locking the laptop. Once a week, reconcile blended ROAS to actual revenue movement. Once a month, recompute CLV:CAC and break-even AOV. The discipline of looking — not any single number on any single day — is what turns a struggling store into a sustainable one.
How nouz delivers a Shopify operator's daily P&L
nouz is built for the operator side of this problem — the owner who runs the store, watches the bank, and wants today's real EBIT computed against today's actual revenue and costs. The formula 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 a Shopify store, the daily inputs that flow through this formula:
- Gross revenue — total order value across orders shipped today.
- Tax — VAT collected today.
- Card fees — payment processor fees on today's revenue. Computed against the full revenue (no cash bucket in DTC).
- COGS — wholesale cost of every unit shipped today, snapshotted at the moment of sale so 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 + your honest owner draw. Sliced by ÷ 30.4375 so February does not carry a heavier daily share 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. Entries are manual: you type the day's numbers in during a five-minute evening close. There is no Shopify integration today; manual entry is what exists now, and the trade-off is that typing the numbers forces you to look at them, which is the mechanism by which margin discipline actually improves. 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.
nouz is monthly subscription, no annual contract, no setup fee. Setup itself takes about ten minutes: enter your fixed costs once, your VAT rate, your blended card processor rate, and your COGS approach. From then on, the evening close asks for the day's gross, tax, ads, shipping, and packaging — and computes today's EBIT against your benchmark. See pricing, or try the live interactive demo first with sample e-commerce numbers pre-loaded. The e-commerce solutions page walks how the formula maps to a Shopify operator's daily workflow.
What to do this week
You do not have to overhaul your finance stack this week. You do have to compute four numbers honestly so the gap between "what Shopify shows" and "what the bank keeps" stops being abstract. A realistic sequence over five evenings:
- Monday: per-order EBIT. Pick a typical order from last week. Walk it through the cost stack (gross → minus VAT → minus card fees → minus COGS → minus packaging → minus fulfillment → minus shipping net → minus allocated CAC → minus refund reserve → minus daily fixed slice). The remainder is true per-order EBIT. Use the true profit calculator if you want help with the structure.
- Tuesday: break-even AOV. Run the formula (CAC + fixed slice + fulfillment + shipping unrecovered) ÷ gross margin %. Compare to your actual AOV. Identify which zone you are in. Use the AOV break-even calculator to do it in 60 seconds.
- Wednesday: true blended CAC. Sum every euro of acquisition spend last month (Meta + Google + agency + creative + tools + honest owner time). Divide by net new customers acquired (gross minus 30-day returns). Compare to Meta-reported CAC. Use the CAC calculator.
- Thursday: CLV:CAC ratio. Compute simple CLV (AOV × contribution margin × frequency × lifespan − CAC). Divide CLV by CAC. Locate yourself on the ratio table. Use the CLV calculator.
- Friday: pause-test plan. Pick the channel where the gap between platform-reported ROAS and your suspicion is largest (usually retargeting or branded search). Schedule a 14-day pause starting next week. Compare actual revenue movement to claimed contribution. Use the break-even ROAS calculator to know what minimum ROAS you actually need given your cost stack.
Most owners who complete this sequence for the first time discover that their per-order EBIT is meaningfully lower than they assumed, their true CAC is 30-80% higher than the Meta dashboard reported, and at least one of their ad channels is contributing less incrementally than the platform claimed. The good news is that these discoveries do not require you to abandon paid acquisition, raise prices, or fire the agency. They require you to allocate honestly and to look every evening at a number that ties to the bank. I make sales but no profit covers the broader diagnostic if the per-order EBIT comes out at or near zero. My Shopify store is not profitable walks the structural fix in detail.
The Shopify operators who run profitable stores in 2026 are the ones who know — at any moment in any week — what a typical order actually nets, what their break-even AOV is, what their true blended CAC is, and what their CLV:CAC ratio is. The operators who close in year three are usually the ones who could quote monthly revenue from memory but had never computed any of the four. The math itself is not complicated. The discipline of looking at it every evening, against numbers that tie to the bank instead of numbers that do not, is the entire business. For the definitions used throughout, see the AOV glossary, the ROAS glossary, the COGS for ecommerce glossary and the operating margin vs net margin glossary. The cross-vertical synthesis of the daily P&L approach lives in the master daily P&L primer; the paper version of the evening close is the free Shopify daily P&L template.
FAQ
How profitable is the average Shopify store?
For a small DTC Shopify store with paid acquisition as the primary channel, healthy operating margin (EBIT) sits at 4-12% of gross revenue. Stores running primarily on organic channels (SEO, repeat customers, content) can reach 15-20%. Stores doing high-volume low-margin product (commodity supplements, basic apparel) often run at 4-8% and need volume to compensate. Above 20% on a small DTC store almost always means the owner has not allocated their own labor at market rate or has not fully booked CAC and returns. Most stores lose money in year one — setup costs, learning-curve ad spend, and the time required to build a repeat-customer base mean the first 12 months are typically a net cash outflow even when revenue grows.
What is a good profit margin for a Shopify store?
EBIT margin of 8-15% of gross revenue is the cited healthy zone for small DTC stores with paid acquisition. Below 4% is structurally fragile — one quarter of CAC inflation or supplier price creep can move you negative. Above 20% usually means costs are not fully allocated (owner labor, returns, CAC) and the reported margin will not survive the next 12 months of growth costs. Gross margin (before fixed costs and CAC) of 35-55% is typical; below that the per-order math becomes hard to make work at any reasonable AOV.
How do I calculate true profit on my Shopify store?
Use the EBIT formula: Gross revenue minus tax minus card fees equals net revenue; net revenue minus COGS minus variable costs (ads, shipping cost net of recovered, packaging, fulfillment, refund reserve) minus daily fixed-cost slice (monthly fixed divided by 30.4375) equals EBIT. Apply daily for the cleanest signal. Shopify's "net sales" report shows gross minus discounts minus returns — that is not profit; the platform does not have the COGS, ads, shipping cost, packaging, or fulfillment data to compute it. The true profit calculator for ecommerce walks the full stack on a single order without signup.
Why is my Shopify store not profitable when sales are growing?
Almost always one of five patterns. (1) AOV is structurally below break-even — every additional order makes the loss bigger. (2) CAC has crept above contribution per order — the dashboard says 4x ROAS but the gross-margin-minus-everything-else math is barely positive. (3) Returns are silently eating 20-35% of contribution — common in apparel and footwear. (4) Free shipping or stacked discounts are giving away 5-15 points of contribution per order without you noticing. (5) App stack and fixed costs grew faster than revenue. My Shopify store is not profitable walks the full diagnostic; I make sales but no profit covers the broader version of the same pattern across other small-business types.
What is the typical CLV:CAC ratio for a profitable Shopify store?
The cited healthy benchmark is 3:1 — customers pay back acquisition roughly three times over their lifetime, leaving margin for fixed costs and operating profit. Below 2:1 means retention needs fixing before you scale ads. Above 4:1 usually means you are under-investing in acquisition and leaving growth on the table. The ratio is more useful than either CLV or CAC alone because it captures whether the business model is paying back acquisition with enough margin to fund growth. Compute with the CLV calculator and the CAC calculator.
Does Shopify show me my real CAC?
No. Shopify does not have your ad data — Meta, Google, TikTok, agency invoices, creative production, and influencer payments all live outside Shopify. Even the per-platform CAC numbers you see in Meta Ads Manager or Google Ads understate true blended CAC by 30-80% because they exclude agency fees, creative production, your own time managing ads, returns, and cross-platform overlap. Compute true CAC by summing every euro of acquisition-related cost in a month and dividing by net new customers acquired (gross new, minus those who returned within 30 days). Use the customer acquisition cost calculator.
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 ten minutes. See pricing or try the live demo first.
What is the biggest hidden cost in a Shopify store?
For most stores, it is one of three: (1) true blended CAC — typically 30-80% higher than the per-platform number, because Meta and Google exclude agency, creative, and owner time. (2) Return cost — a 20% return rate in apparel can eat 30-40% of contribution per order once you allocate the destroyed packaging, unrefunded payment fees, inbound shipping, restocking labor, and product write-downs honestly. (3) Free-shipping subsidy — a threshold set at or below current AOV means you absorb €5-€8 per qualifying order in shipping cost the customer never sees. Each of these is invisible on the Shopify dashboard and meaningful in the bank. Stripe fees and shipping margin cover the smaller versions of the same blind-spot pattern.
How do I diagnose if my discount strategy is destroying margin?
Three signals. (1) Stacked codes — if customers can combine "welcome 10%" + "creator 15%" + a sale price, your effective discount rate is much higher than any single code suggests, and contribution per order is dropping faster than you realise. (2) Always-on discount banners — once "WELCOME10" is auto-applied on your homepage, your "full price" is fiction; every order now goes out at the discounted price by default. (3) Discount-driven retention emails — sending "we miss you 25% off" trains customers to wait for the email before reordering, dropping repeat-order contribution without lifting repeat rate. Audit every active code monthly, set an annual discount budget as % of revenue, and treat discounts as discrete promotions, not always-on subsidies. The discount cost post walks the margin math by gross margin tier.
Is nouz worth it for a small Shopify store?
If your store does at least €5,000/month in revenue and you currently look at profit on a monthly or quarterly basis (or not at all), nouz pays back almost immediately by surfacing the per-day EBIT that the Shopify dashboard cannot show. The mechanism is not magic — it is that you start looking at the right number every evening, and the right number changes the decisions you make about ad spend, pricing, discounts, and product mix. Most operators who switch from "monthly accountant P&L" to "daily EBIT close-out" lift EBIT margin by 4-8 percentage points within 90 days without changing anything else about the business. nouz is monthly subscription, no contract, no Shopify integration today (manual entry takes about 5 minutes/evening). See pricing or try the live interactive demo first.