Every number this method needs already exists in systems you can open today: the orders export, your supplier invoices, the payout report, the ad platforms' billing pages and your list of fixed costs. What no dashboard will do is assemble them into a statement that says what a day or a month actually kept, so this guide does it by hand, in five steps, each with the exact trap that flatters the result if you skip it. Followed once, it prices a month in an afternoon. Kept daily, it becomes the one statement every other decision reads from, and the numbers below come from the same example store the calculators on this site publish, so you can check every figure.
- Strip the VAT before anything else: at 19%, a €49 price is €41,18 of revenue, and every margin computed on the gross figure flatters itself by the tax rate.
- Subtract in cost order, goods, then parcel and payment fee, then ad spend, so each subtotal answers its own question instead of one opaque bottom line.
- On the example store's €49 product, €15,35 of contribution remains after VAT, goods, parcel and fee: 37,3% of net revenue.
- Book every amount to the day it belongs to, order day for sales, refund day for returns, spend day for ads, fixed costs spread daily, or the months lie in both directions.
Step 0: decide the clock before the arithmetic
Before a single subtraction, fix the recognition rules, because they decide which day every euro lands on. Sales and their goods belong to the order day. Refunds belong to the day they were issued, never backdated against the original order, so closed periods stay closed. Ad spend belongs to the day it ran. Fixed costs are spread evenly across the days they cover, so a yearly invoice does not read as one catastrophic Tuesday. All of it in the store's own timezone. These four sentences are also why your reports disagree when you compare dashboards: each system uses its own clock, and this statement must use exactly one.
Step 1: net revenue, not the dashboard's top line
Start from the orders of the period, drop test and cancelled orders, then take the tax out: divide every gross amount by one plus the VAT rate. At 19%, €49,00 becomes €41,18, and that missing €7,82 was never yours, it was collected for the tax office and merely passed through the account. Include shipping you charged, net of its own VAT, and subtract discounts. The result, net revenue, is the only honest denominator in the entire method: every percentage from here down is computed against it, and any margin you have ever computed on the gross figure was flattered by the full tax rate.
Step 2: the goods, at what they cost you now
Price every unit sold at its real current cost: the supplier price actually paid, plus what it costs to get the goods to your warehouse, freight, duties, inbound handling. Not last year's price list, and not the optimistic figure typed into a cost field once and never updated. The subtotal after the goods is the CM1 line of a contribution statement, and it answers the first structural question: do the products make money before anyone ships or advertises anything? The trap here is silence: a product with no recorded cost subtracts nothing and reads as 100% margin, so the worse your cost data, the better this step looks. Keep a list of every product whose cost you could not state; that list is a finding in itself.
Step 3: the parcel and the payment fee
Two costs attach to every single order regardless of its size. The parcel: label, picking minutes, box and filler, at your true all-in rate rather than the carrier's headline price. And the payment fee: each gateway takes a percentage plus a fixed amount per transaction, charged on the gross including VAT and shipping, so it is always slightly larger than mental arithmetic suggests. The subtotal now is the CM2 line, what an order contributes after everything its own fulfilment consumed, and on the example store's flagship unit the walk to here looks like this:
| Step | Amount |
|---|---|
| Price on the shop, incl. 19% VAT | €49,00 |
| Net revenue after VAT | €41,18 |
| Goods, at current supplier cost | −€18,50 |
| Margin after the goods (55,1%) | €22,68 |
| Parcel: pick, pack, box, label | −€6,40 |
| Payment fee, 1,9% of the gross price | −€0,93 |
| Unit contribution (37,3% of net) | €15,35 |
Notice what the walk exposes that a margin percentage hides: the parcel does not scale with price. On a €120 basket the same €6,40 is noise; on this €49 unit it is a seventh of the net revenue. This is why falling basket sizes quietly destroy stores whose product margins never changed, and it is the whole argument for computing per unit rather than per month. A profit margin calculator runs this exact walk in a few minutes for any product you can price.
Step 4: the advertising, blended
Take the period's spend from every platform's billing page, the money that actually left, never the attributed-revenue screens, and subtract it on the day it ran. Per order, the example store spends €15.000 a month across 706 orders, about €21,25 each. What remains is the CM3 line: what the customer contributed after the cost of winning them, and the first subtotal that can honestly be called the operating result of selling. On these unit economics the store needs about €1,90 of net revenue for every ad euro just to stand still on an order, a floor you can derive for your own store from the same walk, and a sharper daily control than any platform's own return metric.
Step 5: the fixed block, spread over its days
Rent, salaries, software, insurance, the accountant: sum the month's fixed costs and spread them evenly across its days, one thirtieth at a time. The example store carries €7.000 a month, and its month resolves like this: €60.000 of net revenue, roughly €16.500 of contribution after all variable costs, minus the block leaves about €9.500 of operating profit, with the block fully covered around order 493, on day 22 of the month. Everything sold from that order on contributes at the full rate. Finding that order for your own store is a division your numbers from steps 1 to 4 already contain, and the ecommerce break-even calculator does it interactively.
Where each number lives
If you have been hunting through the admin for a report that already contains all of this, stop: the companion piece on where to find profit in Shopify walks every report that exists, and the honest summary is that the inputs live in five different places and the statement lives in none of them. Here is the map, with the trap in each source:
| Number | Where it lives | The trap |
|---|---|---|
| Orders and refunds | the orders export, in the store's timezone | evening orders shifting a day in UTC-based reports |
| Unit costs | supplier invoices, or the product cost field if maintained | missing costs silently reading as 100% margin |
| Payment fees | the payout report's transaction list | the fixed fee per transaction, charged on the gross |
| Ad spend | each platform's billing page | attributed revenue posing as the money spent |
| Fixed costs | your accounting, or the standing orders in the bank | a yearly invoice read as one terrible day |
The five mistakes that flatter the result
- Computing on the gross: every figure with VAT still inside overstates itself by the tax rate, and every percentage on a gross base is fiction.
- Trusting missing costs: an unpriced product subtracts nothing, so gaps in cost data always err in your favour, which is exactly why they go unnoticed.
- Backdating refunds: netting a refund against its original order rewrites a closed month and makes every past period look better each time the present bleeds.
- Reading ad numbers from attribution: the platforms' claimed revenue overlaps and exceeds reality; only the billing page says what actually left.
- Booking fixed costs as lumps: the day the insurance bills is not the day the insurance was consumed; unspread, it makes one day terrible and twenty-nine days flattered.
Three questions that always come next
How often should I recompute? Daily, once the method is set up, because the failure mode of monthly is not imprecision but lag: a supplier price rise, a fee change or a creeping parcel cost runs for weeks inside a monthly figure before it surfaces. A daily statement surfaces it the morning after it starts. The recognition rules from step 0 are what make daily possible at all, since they give every amount exactly one day to belong to.
What is a good result? There is no universal number, but the walk gives you structure instead of folklore: the example store's 37,3% unit contribution funds a €21,25 acquisition cost and a fixed block with room left, while the same store at a 20% contribution would need every other step to be perfect. Judge each subtotal against its own question, products, fulfilment, acquisition, and the weak step names itself; a single bottom-line percentage never does.
Spreadsheet or software? The method needs no software, and doing it by hand once is the best education in your own economics available at any price. Daily is where spreadsheets die: refunds re-checked, costs re-priced, spend re-fetched, and one skipped week ends the habit. A Shopify profit tracker exists for exactly that gap, running the same five steps nightly from your own orders, flagging missing costs instead of guessing them, and keeping closed days closed.
From a calculation to a statement
One caution as the habit forms: profit computed is not cash banked. A store can be profitable on paper but short of cash for weeks at a time, because stock, VAT, refunds and payouts move money on their own calendars, and that diagnosis is its own discipline built on top of this one, never a reason to distrust the statement.
The five steps are not accounting; they are the operating truth of a shop, stated in the order the euros leave. Run them once and the dashboard's optimism gets a correction factor. Keep them running and something better happens: the store stops being a monthly surprise, and every price change, every ad budget, every supplier negotiation gets judged against the only number that was ever really the point, what the store keeps.