The Shopify P&L statement, explained block by block

What a real P&L for a Shopify store looks like: the margin ladder from net revenue to operating profit, the recognition rules, and how to read a month off it.

Profit1 Sep 202612 min read

Ibrahim Ölmez

Founder, nouz

Ask an accountant for a P&L and you get the year, months later, in ledger categories built for the tax office. Ask a dashboard and you get revenue with a few costs sprinkled underneath in no particular order. Neither answers the questions an operator actually has on a Tuesday: do the products make money, does an order make money, does a customer make money, does the store make money. A proper ecommerce P&L is built to answer exactly those, in that order, as a ladder of margins where every rung subtracts one family of costs and leaves a subtotal with a name. This post walks the ladder block by block, gives the recognition rules that keep it honest, and reads a real month off it, so that the next statement you see, or build, is a text you can actually read.

  • A P&L for a store is a ladder, not a bucket: each block subtracts one cost family and leaves a margin that answers one question about the business.
  • Five blocks cover it: to net revenue (what did we truly sell), to CM1 (do products earn), to CM2 (do orders earn), to CM3 (do customers earn), to operating profit (does the store earn).
  • The statement is only as honest as its clocks: sales on the order day, refunds on their issue day, ad spend on its spend day, fixed costs spread across their days.
  • Read on the example store's month, the ladder turns €60.000 of net revenue into roughly €9.500 of operating profit, and shows exactly where the other €50.500 went.

Why the ladder beats the bucket

A bucket statement, revenue at the top and every cost dumped underneath, produces one number and no diagnosis: when the bottom line disappoints, nothing in the layout says whether the products, the parcels, the ads or the rent did it. The ladder fixes that by subtracting costs in the order the business incurs them, from the most variable to the most fixed. Each subtotal isolates one decision layer, so a weak month names its own weak rung. This is the structure serious operators mean when they talk about contribution margins, and it is the same structure whether the statement covers a day, a month or a single product.

BlockWhat comes outThe question it answers
Gross sales → net revenuediscounts, returns, VATwhat did we truly sell?
Net revenue → CM1cost of the goods solddo the products make money?
CM1 → CM2parcel, packaging, payment feesdoes an order make money?
CM2 → CM3advertising spenddoes a customer make money?
CM3 → operating profitfixed costs, spread dailydoes the store make money?
The five blocks of an ecommerce P&L, the costs each one subtracts, and the question each margin answers.

The top block does the cleaning. Gross sales include tax that was never yours, discounts that were never collected and returns that reversed; net revenue is what remains, and it is the denominator every percentage below should use. The three middle blocks are the contribution ladder: CM1 after the goods, CM2 after everything an order's own fulfilment consumed, CM3 after the cost of winning the customer. The bottom block spreads the fixed costs over the days they cover and leaves operating profit. In nouz the same ladder is kept at full resolution, 34 lines with every percentage against net revenue, but the five blocks are the skeleton, and a statement with just these subtotals already outperforms most dashboards.

The recognition rules that keep it honest

A statement's layout is worthless if its clocks are wrong, so four rules are load-bearing. Sales and their goods belong to the order day. Refunds belong to the day they were issued, never netted back against the original order, because backdating makes every closed month improve whenever the present bleeds. Ad spend belongs to the day it ran, taken from the billing side of each platform. Fixed and recurring costs are spread evenly across the days they cover, so the insurance invoice does not read as one catastrophic Tuesday. Together they give every euro exactly one day to belong to, which is what makes day-level reading possible and what keeps history still.

Reading one month off the ladder

The example store the calculators on this site publish makes the reading concrete. Its month: €60.000 of net revenue across 706 orders, about €16.500 left at CM3 after goods, parcels, fees and €15.000 of ad spend, then €7.000 of fixed costs off, leaving roughly €9.500 of operating profit. Read as a ladder rather than a bottom line, that month says: the products and orders earn well, about 27,5% of net revenue survives all variable costs; the ad budget is the largest single consumer; the fixed block is covered around day 22, and every order after the 493rd contributes at the full rate. Four sentences of diagnosis from one column of figures, which is the entire point of the layout.

What Shopify gives you, and what it cannot

Shopify supplies the top of the ladder superbly: orders, discounts, taxes and refunds are all in the exports, so gross sales to net revenue is largely a matter of care. Below that line the platform thins out fast: unit costs are one optional field with no history, parcels and payment fees have no cost lines at all, ad spend lives in other systems entirely, and fixed costs are simply not its business. So the middle and lower blocks, the ones where the questions live, are exactly the ones you must assemble yourself. Two companion pieces map the gaps in detail: one on whether fees are eating your profit, and the per-product version, which products actually make money, where the same ladder runs one SKU at a time.

Build one this week

  • Start from the free P&L template on this site if a spreadsheet is the right first step: its columns are the ladder's blocks in order, one row per day.
  • Assemble the inputs from their honest sources: the orders export for sales and refunds, supplier invoices for goods, the payout report for fees, the billing pages for spend, the bank's standing orders for the fixed list.
  • Follow the five-step method to calculate your store's true profit for the arithmetic at each rung, including the traps that flatter each one.
  • Compute every percentage against net revenue, never against gross, and mark any product whose cost you could not state rather than letting it read as pure margin.
  • Read the finished column top to bottom once a week at first, daily once the habit holds: the weak rung names itself, and that naming is the statement's whole job.

Three questions that always come next

Daily or monthly? Monthly is the accounting rhythm; daily is the operating one, and the difference is lag. A supplier price rise or a creeping parcel cost runs invisibly for weeks inside a monthly figure, while a per-day statement surfaces it the morning after it starts. The definition and the habit around it are their own small subject, what a daily P&L means, but the short version is: the recognition rules above are precisely what make a day a readable unit.

Is operating profit the same as EBITDA? For a store this size, near enough that the ladder's bottom line is commonly called either. Strictly, what EBITDA measures is earnings before interest, taxes on profit, depreciation and amortisation, and the distinction starts to matter with debt, owned warehouses or capitalised assets. For a merchant reading their own ladder, the honest phrasing is: this is what operating the store earned, before financing and before the accountant's year-end adjustments.

Do I really need 34 lines? To read, no: the five blocks answer the five questions, and a statement you actually maintain beats a perfect one you abandon. The extra resolution earns its keep when a block misbehaves and you need to know which of its members did it, was the CM2 drop the parcels or the fees, was the revenue dip discounts or returns. Depth is for diagnosis; the ladder is for every day.

The statement is the product of its rules

Anyone can draw the ladder in an afternoon; keeping it true is the actual work, refunds landing on their day, costs staying current, spend reconciled against billing, closed days never quietly changing. That maintenance is what nouz automates, rebuilding the full statement nightly from your own orders and rules. But automated or manual, the layout above is the thing to insist on, because a statement whose subtotals answer real questions is the difference between having numbers and having answers.

Written by

Ibrahim ÖlmezFounder, nouz

Builds the P&L engine behind nouz. Writes about the costs that decide whether a Shopify store is actually profitable.