Jul 18, 2026 · 7 min read

The Monthly Ecommerce P&L Template for D2C Brands

Daymark Product & Data TeamAnalytics practitioners at Daymark

First-hand guidance from the Daymark team on analytics workflows, growth reporting, and the operational metrics teams use to make decisions.

Most P&L templates were built for businesses that don't take returns, don't run paid acquisition, and don't discount half their orders. D2C brands do all three, and a generic template buries them. It nets discounts into revenue, hides returns in a footnote, and lumps ad spend into "marketing" alongside the logo redesign. The result reads fine and tells you nothing about where margin actually goes.

This template fixes that. It puts discounts, returns, and ad spend on their own lines, in the order they hit, so you can see the real slope from revenue to net profit. Copy the table below into a sheet, fill in one month, and you have a P&L that reflects how a D2C brand actually makes or loses money.

The Template

Copy this into a spreadsheet. Each row is a line item, the middle column is where your number goes, and the notes column reminds you what belongs there. The bold rows are subtotals you calculate, not inputs.

Line itemYour numberWhat goes here
Gross revenue$Total order value at checkout, before discounts
Discounts($)All codes, automatic discounts, and sales
Returns and refunds($)Refunded value from returns in the month
Net revenue=Gross revenue minus discounts minus returns
COGS($)Landed product cost for units sold, per SKU
Gross profit=Net revenue minus COGS
Shipping and fulfillment($)Carrier cost minus shipping charged, plus pick-pack
Payment processing fees($)Card and gateway fees on the month's orders
Ad spend($)Google, Meta, and any other paid acquisition
Contribution margin=Gross profit minus the three variable costs above
Salaries and contractors($)Team and agency costs that don't move with volume
Software and tools($)Recurring subscriptions
Rent and overhead($)Fixed operating costs
Net profit=Contribution margin minus fixed costs

That's the whole structure. Four subtotals, and every cost D2C brands actually carry has its own line. Below is what each row means and the mistakes to avoid on the ones that matter most.

Line by Line

The order of these rows is deliberate. Each one removes a specific type of cost, and the subtotals in between are the numbers you actually make decisions on.

Gross revenue. The full order value at checkout, before anything is taken off. This is the vanity number. It's here as a starting point, not a health metric.

Discounts. Every code, automatic discount, and sale, as its own line. Netting discounts into revenue is the single most common way D2C P&Ls lie. A brand running heavy promotions can show growing "revenue" while the discount line grows faster, and you'd never see it if the two were blended.

Returns and refunds. Refunded value from returns processed in the month. This has to be its own line because return rates vary enormously by category, and a brand that ignores returns overstates net revenue by exactly its return rate. According to Shopify's own reporting on retail returns, returns run high enough in many categories that hiding them makes the entire P&L wrong.

Net revenue. Gross revenue minus discounts minus returns. This is the first honest number. It's what you actually earned.

COGS. Landed product cost for the units sold: product, inbound freight, duties, packaging. Pull it per SKU where you can. A blended COGS averages your worst products with your best and hides margin problems.

Gross profit. Net revenue minus COGS. This judges the product, before any of the cost of selling it.

Shipping and fulfillment. Carrier cost minus what customers paid in shipping, plus pick-and-pack. Free-shipping thresholds live here, and they're a real subsidy that grows with order count, not with ad spend.

Payment processing fees. Card and gateway fees. Usually around 2.9% plus a fixed fee per order, more for some card types and currencies. Low AOV brands feel the fixed portion more.

Ad spend. All paid acquisition, on its own line. This is the second must-separate item after returns. Burying ad spend inside a "marketing" bucket hides the biggest variable cost most D2C brands have, and it's the one most likely to turn contribution margin negative.

Contribution margin. Gross profit minus shipping, fees, and ad spend. This is the number that decides whether growth helps. Positive means each order contributes toward fixed costs. Negative means volume makes the loss bigger.

Fixed costs. Salaries, software, rent, retainers. These don't move with order volume, which is why they sit below contribution margin.

Net profit. Contribution margin minus fixed costs. The number the whole template exists to produce.

The D2C-Specific Gotchas

Two lines carry most of the risk of getting this wrong.

Returns must be their own line because they arrive on a delay. A return processed this month often belongs to last month's sale, so on a cash basis a great month can look weak and a weak one can look great. Keeping returns visible, ideally provisioned against the SKUs that generate them, stops that timing noise from distorting the picture.

Ad spend must be its own line because the ad platforms report it against attributed revenue, not against this P&L's realized margin. A channel can look profitable in Meta while pulling contribution margin down here. Seeing spend against net revenue and contribution margin, not against ROAS, is the entire point of giving it its own row.

Make It Reusable

The template is most useful when you don't rebuild it from scratch each month. Fill the structure once, then wire the inputs to their sources so the numbers refresh instead of being re-typed. For the full reasoning behind each stage, the D2C profitability playbook walks the same path from revenue to net profit in more depth.

Two pieces are worth automating first. Contribution margin, because it drives your growth decisions, which you can model with the contribution margin calculator. And net profit per order, which you can run in the net profit per order calculator. For the definition and healthy ranges of the final number, see net profit margin.

Frequently Asked Questions

What should a D2C ecommerce P&L include that a generic one misses?

Discounts, returns, and ad spend as their own explicit lines. Generic templates net discounts into revenue, footnote returns, and lump ad spend into marketing. For a D2C brand those are three of the largest and most variable costs, so hiding them makes the P&L unreadable. A D2C P&L also separates variable costs from fixed ones with a contribution margin subtotal in between.

Why should returns be a separate line on the P&L?

Because return rates vary widely by category and arrive on a delay. A return processed this month often belongs to a prior month's sale. If returns are buried in net revenue, a strong sales month can look weak once refunds land, and you cannot see which products drive the losses. A separate, ideally provisioned, returns line keeps that timing noise from distorting every other number.

What is the difference between contribution margin and net profit?

Contribution margin is what remains after variable costs: net revenue minus COGS, shipping, payment fees, and ad spend. Net profit goes one step further and subtracts fixed costs like salaries, software, and rent. Contribution margin tells you whether each additional order helps or hurts. Net profit tells you whether the whole business made money after everything, including the costs that stay flat regardless of volume.

How often should the P&L be updated?

Monthly at minimum, weekly once ad spend is large enough that a mix shift would be costly if it ran unnoticed. The inputs drift constantly. COGS moves with supplier prices, return rates move by season, and ad spend changes every week. A P&L built on stale inputs can be wrong by a wide margin, so the value comes from keeping it current, not from building it once.

Can this P&L template be built in a spreadsheet?

Yes. The structure is designed to copy directly into a sheet, with the input rows as cells and the bold subtotals as simple formulas. The limitation is that a spreadsheet captures one moment and then goes stale. Connecting the inputs to their sources, Shopify for orders and returns and the ad platforms for spend, keeps the same structure live without re-typing numbers each month.

Related articles