The Margin StackFrom $124.17/mo, plus the Eight-Week Analyst Launch $6,000 FREE
Free tools

The monthly P&L that keeps your margin line visible

A free monthly P&L template for ecommerce, built on the contribution margin structure most generic templates bury: gross revenue steps down through discounts, returns, landed COGS, shipping and fulfilment, payment and platform fees and marketing spend to operating profit, with every subtotal computed live as a percent of net revenue. Edit the numbers on this page, then download the same table as a CSV.

Example numbers - replace with yours
LineThis month% of net
Gross revenueAll orders at full value, before any deductions
$
114.9%
− DiscountsCodes, sitewide offers and markdowns
$
9.2%
− ReturnsRevenue refunded this month
$
5.7%
= Net revenue $87,000 100%
− Landed COGSCost + freight-in + duty, for the units sold
$
40%
= Contribution margin after product costs $52,200 60%
− Shipping and fulfilmentPick/pack + outbound shipping
$
10%
− Payment and platform feesActual dollars from statements, not an assumed rate
$
3%
= Contribution margin before marketing $40,890 47%
− Marketing spendAd platforms + affiliate + promo
$
20%
= Contribution margin after marketing $23,490 27%
− Fixed costsRent, salaries, software: costs that do not move with sales
$
13.8%
= Operating profit $11,490 13.2%

Deductions are entered as positive numbers; the subtotals do the subtraction. The percent column reads every line against net revenue.

Your month, live
Contribution margin before marketing
$40,890
47% of net revenue: the pool the marketing line spends from
Operating profit
$11,490
13.2% of net revenue

The month keeps $11,490 of operating profit: 13.2% of net revenue. Marketing spent $17,400 of the $40,890 pool that contribution margin before marketing allowed.

The file mirrors this page line for line, with deduction amounts signed and every line read against net revenue. File it with the month's records.

How to use it

Fill it from reports you already have

Every editable cell maps to a report or statement your stack already produces. Six pulls, once a month, in this order.

Pull the revenue lines

Gross revenue, discounts and returns come from your Shopify sales reports for the month you are closing. Keep gross at full value and let the deductions sit on their own lines.

Cost the units you sold

Landed COGS comes from your landing-cost records: supplier cost plus freight-in plus duty, applied to the units that sold this month, not the units you purchased.

Add the delivery costs

Shipping and fulfilment comes from carrier invoices and your 3PL or warehouse bill: pick/pack plus outbound shipping for the month's orders.

Take fees from statements

Payment and platform fees are actual dollars from your payment processor statements and your platform bill. The template builds in no rate, because your real fee load moves with payment mix.

Total the month's marketing

Marketing spend comes from each ad platform's billing report, plus affiliate and promo costs invoiced outside the platforms.

Enter fixed costs, read down

Fixed costs come from your accounting ledger: rent, salaries, software, everything that does not move with sales. Then read the subtotals top to bottom and download the CSV.

The mapping guide

Every line has a source

No number on this page should be typed from memory. Each line maps to something you already receive, and the close checklist keeps the order honest.

P&L lineWhere it comes fromWatch for
Gross revenue, discounts, returnsYour Shopify sales reports for the monthReport totals can move if the month is re-pulled later; note the date you pulled them.
Landed COGSYour landing-cost records: supplier invoices plus freight-in plus dutyEx-factory cost alone makes the margin read fatter than it is. Cost the units sold, not the units purchased.
Shipping and fulfilmentCarrier invoices and your 3PL or warehouse billPackaging and pick/pack fees often sit on a separate invoice from postage.
Payment and platform feesPayment processor statements and your platform billEnter actual dollars. A remembered blended rate drifts with payment mix.
Marketing spendEach ad platform's billing report, plus affiliate and promo invoicesBilled spend and served spend differ around month ends; use the same basis every month.
Fixed costsYour accounting ledgerKeep anything that moves with sales out of this line, or contribution margin stops meaning anything.
The monthly close checklist
  1. Let the month actually end. Returns and fee statements land late; closing on day one undercounts both.
  2. Reconcile revenue to payouts before reading margin. Sales reports minus fees should tie to what the processor actually paid out. Investigate any gap first.
  3. Match COGS to units sold, not units purchased. Purchases are inventory; only the units that shipped belong in this month's cost.
  4. Pull actual fee dollars. Processor statements and the platform bill, not a remembered rate.
  5. Collect every marketing invoice. Including affiliate and promo costs billed outside the ad platforms.
  6. Enter, read, file. Read the subtotals top to bottom, download the CSV, and file it in the same place every month so months compare.
How the math works

Five subtractions, one ladder

The template is a step-down: each subtotal is the line above minus the costs that belong to that rung. Nothing is weighted, modelled or assumed.

The formulas
Net revenue = gross revenue − discounts − returns
Contribution margin after product costs = net revenue − landed COGS
Contribution margin before marketing = contribution margin after product costs − shipping and fulfilment − payment and platform fees
Contribution margin after marketing = contribution margin before marketing − marketing spend
Operating profit = contribution margin after marketing − fixed costs
Every percent on the page = that line ÷ net revenue

Same ladder as The Math: after product costs is the CM1 rung, before marketing is CM2, after marketing is CM3. Landed means cost plus freight-in plus duty.

Worked example, on your live numbers

Your month starts at $100,000 gross. Discounts give up $8,000 and returns $5,000, leaving $87,000 of net revenue: the base every percent on this page reads against.

Landed COGS takes $34,800, leaving $52,200 after product costs (60% of net). Shipping and fulfilment take $8,700 and payment and platform fees $2,610, leaving $40,890 before marketing (47%). Marketing spend of $17,400 leaves $23,490 after marketing (27%), and fixed costs of $12,000 leave $11,490 of operating profit (13.2% of net revenue).

These are your live numbers from the table above, not a canned example. Change a cell up there and this paragraph follows.

Why this number matters

The margin line is where the decision lives

A generic small-business P&L piles variable and fixed costs into one expense block, so the contribution margin line never appears on the page. Kept separate, the same statement answers three operator questions a bottom line cannot.

Why we use it
Size the marketing lineContribution margin before marketing is the pool ads are allowed to spend from. Next month's budget is judged against that pool, not against revenue.
Catch cost creepNet revenue up while contribution margin before marketing falls means COGS, freight or fees grew faster than sales. The percent column shows which line moved.
Test the fixed baseContribution margin after marketing is what exists to carry rent, salaries and software. If it cannot, no amount of extra ad spend fixes the month.
And when we don't

It is one blended month, typed by hand. It cannot see which SKU or customer sits above or below the line, and timing blurs it: returns lag the sales that caused them, COGS can be booked on purchase instead of sale, and spend billed rarely equals spend served across a month end.

The sharper failure is reading margin before reconciling revenue to actual payouts. The table computes whatever you type, so an unreconciled revenue line makes every subtotal below it precise and wrong.

What we recommend instead is a close that ties to the ledger. Blufire produces this structure live and reconciled: the CM waterfall & bridge in S2 runs the same step-down on every order, and S12 Financial Models carries the model layer. This template is the manual version of what the product automates monthly.

The protocol

One close a month, three triggers

When to run it

Monthly, in the first week after month end, once the close checklist passes. Not mid-month: returns and fee statements have not landed yet, and the margin line will read better than it is.

Re-run it before a launch or a promo-heavy month, with the planned discounts and marketing spend typed in, to size the marketing line against the pool contribution margin actually allows.

What triggers action
01Contribution margin before marketing falls while net revenue grows. Cost creep: chase which deduction line grew faster than sales, using the percent column.
02Contribution margin after marketing goes negative. The month's marketing spent more than the margin pool. The marketing line, or the margin above it, has to move.
03Operating profit is negative while contribution margin after marketing is positive. The fixed cost base is too heavy for the month's volume. That is a structure question, not a marketing one.

Feed the template from the napkin side: the contribution margin calculator steps a single order down the same ladder. All free tools →

Questions operators ask

Because discounts and returns are not costs, they are revenue that never arrived. Ratios taken on gross flatter every line below them: COGS, fees and marketing all look lighter than they are. Net revenue is the money the month actually produced, so it is the honest base, which is also why gross revenue itself reads above 100% in the column.

Generic templates pile variable and fixed costs into one expense block, so the contribution margin line never appears. This one keeps the costs that move with each sale separate from the costs that do not, which is what lets you see what the month's sales actually contributed before marketing and before rent, and judge each against the right base.

What you sold: the landed cost of the units that shipped this month. Stock you purchased but have not sold is inventory, not a cost of this month's sales, and booking it here makes a stock-up month look like a disaster and the following month look like a triumph.

Because your real fee load is on your statements, and it moves with payment mix, plan and currency, so any prefilled rate would be a guess. Every number on this page is an example to replace; the fee line takes the actual dollars from your processor statements and platform bill.

Into the returns line of the month you refund them, and accept the small distortion. A heavy-return month will read slightly worse than the sales that caused it deserved; the alternative, restating closed months, costs more than it tells you. Note the lag and keep the treatment consistent.

You can, but the close steps are monthly rhythms: payouts, fee statements and returns settle on month boundaries, so weekly runs read noisier and the reconciliation step cannot complete. The usual pattern is a weekly glance at sales reports and one disciplined monthly close in this structure.

From template to ledger

The same P&L, live on every order

This page is one blended month, entered by hand. Blufire produces this structure live and reconciled: the CM waterfall & bridge in S2, and S12 Financial Models for the model layer. The template is the manual version of what the product automates monthly.

Ready to see what you are actually keeping?

Money-back to week 8. Cancel in two clicks.