If you run a store that already does real volume, you have probably downloaded a free P&L template, pasted in your numbers, and ended up with a sheet that either doesn't tie out or tells you nothing useful. The problem isn't Excel. The problem is that most templates were designed for service businesses, and they quietly mislabel the three costs that actually decide whether a print-on-demand store makes money.
This article fixes that. It is the applied, template-level companion to our ecommerce P&L guide — if you want the full accounting theory, start there and come back.
What a P&L template needs to show that generic ones skip
Open any free "profit and loss statement template for Excel" and you will see rows for Revenue, Cost of Goods Sold, Expenses, and Net Income. That's the right skeleton. The gaps are specific:
- Where does the Printify or Printful charge go? It is COGS — the direct cost of the unit you sold — but generic templates lump it into a vague "supplies" line.
- Where do payment processing fees go? They scale per order, so they belong near COGS, not buried in overhead.
- Where does Meta and Google ad spend go? This is the one most templates get wrong. Ad spend is an operating expense, not a cost of goods — and if you misfile it, your gross margin lies to you.
A template that doesn't separate these three cleanly will show you a healthy-looking top line and hide the fact that ad spend is eating your profit. Let's build one that doesn't.
The line-by-line structure for a POD store
Here is the row order to set up in column A of your Excel sheet, top to bottom. Each block rolls up into a subtotal, and every subtotal is a formula, not a typed number.
Revenue block
- Gross sales — the total value of orders placed in the month, booked when the sale happens, not when Shopify deposits cash. This is the single most-abused line; your bank deposit is a net figure and never equals this.
- Less: discounts — coupon codes and automatic sales.
- Less: refunds and returns — the value of refunded orders. This reduces revenue; it is not an expense.
- Net sales —
= Gross sales − discounts − refunds. This is your honest top line.
Cost of goods sold block
- Supplier production cost — what Printify, Printful, or Gelato charged to make and ship the units you sold.
- Payment processing fees — the percentage plus per-transaction fee your processor takes.
- Gross profit —
= Net sales − COGS. - Gross margin % —
= Gross profit ÷ Net sales. This measures your product economics.
Operating expense block
- Ad spend — Meta, Google, and any other paid acquisition.
- Platform and apps — Shopify plan, apps, email tool.
- Software and tools — design, analytics.
- Contractors and owner pay.
- Operating profit —
= Gross profit − total OpEx. This is the number that tells you the business works, not just the product.
If you want a version built to project these lines forward month by month, our projected profit and loss statement template walks through the forecasting layer.
Worked example: one month in the template
Say you run a t-shirt store doing 340 orders a month at a $31 average order value, with $2,800/month in Meta spend and a little Google on top. Here is what the filled template looks like. Every number below is either entered from your own store or computed with the formula shown — the only outside figure is the processing rate, which runs about 2.9% plus 30¢ per online transaction on standard Shopify Payments plans, per A2X's breakdown of Shopify fees.
| Line | Formula | Amount |
|---|---|---|
| Gross sales (340 × $31) | entered | $10,540 |
| Less: discounts | entered | −$420 |
| Less: refunds (11 orders) | entered | −$341 |
| Net sales | subtotal | $9,779 |
| Supplier production (340 × $12.50) | entered | −$4,250 |
| Processing fees (2.9% × $10,540 + $0.30 × 340) | computed | −$408 |
| Gross profit | Net sales − COGS | $5,121 |
| Gross margin % | Gross profit ÷ Net sales | 52.4% |
| Ad spend (Meta $2,800 + Google $600) | entered | −$3,400 |
| Platform and apps | entered | −$150 |
| Software and tools | entered | −$90 |
| Owner draw / contractor | entered | −$500 |
| Operating profit | Gross profit − OpEx | $981 |
| Operating margin % | Operating profit ÷ Net sales | 10.0% |
Reading it: the product is healthy at a 52.4% gross margin, but ad spend of $3,400 swallows two-thirds of your $5,121 gross profit. The store nets $981 on $9,779 of net sales — a per-order profit of about $981 ÷ 340 = $2.89.
That last number is the one generic templates can never surface, because they don't carry costs down to the order level. And it's fragile: if your ad costs rise 20%, that's another $680 out, and operating profit more than halves. This is exactly why ad spend has to sit visibly in OpEx — so the template screams "your risk is customer acquisition cost," which it can't do if that cost is hidden inside COGS.
Why the processing-fee line matters more than it looks
Two gotchas worth building into the template from day one.
First, refunds don't return the processing fee. When you refund a $31 order, the processor generally keeps the roughly $1.20 it took on the original sale, as A2X documents. So a refunded order isn't zero — it's a small negative. Track refunds as a reduction of revenue and leave the fee where it was recorded.
Second, disputes carry their own cost. A chargeback on Shopify Payments in the US costs you a $15 dispute fee, refunded only if you win, again per A2X. If disputes are a recurring line for you, add a row for them in the operating-expense block.
Reading the template: the three margins that matter
Once the formulas are in, your template gives you three gauges, not one:
- Gross margin % — is the product itself profitable after making and shipping it? Below roughly the mid-40s for POD apparel and your price or supplier choice needs work.
- Operating margin % — does the business work after you pay to acquire the customer? This is where most "profitable-looking" stores quietly bleed.
- Per-order profit — net profit divided by orders. This is the number you can actually make decisions with: it tells you how much headroom a single sale has before an ad-cost increase wipes it out.
A proper template surfaces all three. A generic one shows you a single "net income" cell and leaves you guessing which lever moved it. For deeper template mechanics and alternative layouts, see our rundown of Excel templates for a profit and loss statement.
The one thing even a perfect template won't show you: cash
Here is the limit of any P&L template, no matter how well built: it shows profit, not cash. Your $981 operating profit is booked on the sale date. The cash behaves on its own schedule — ad spend leaves your card daily, supplier charges hit at production, and Shopify payouts arrive on a delay.
A growing, ad-funded store can show a profitable P&L every month and still run short of cash, because it is continuously pre-funding ad spend before the matching payouts land. The template can't see that gap. To model it, pair this sheet with a small business cash flow statement template, which tracks money as it actually moves.
Building it by hand vs. having it kept current
A template is a snapshot you re-key every month. The real work is pulling clean numbers out of Shopify, your suppliers, and your ad platforms — and keeping them reconciled so the gross-sales line isn't secretly your net payout.
That reconciliation is what Victor, the AI employee from PodVector AI, does continuously. Victor connects to Shopify, Meta Ads, Google Ads, Printify, Printful, Gelato, and Klaviyo, computes your true per-order profit from the live data, and delivers the P&L straight to your Google Drive — so the structure in this article stays current without you re-keying it. Every write action Victor takes is approval-gated: he drafts, you approve. Victor isn't a dashboard you log into; he's an operator who does the pull-and-reconcile work for you.
If you've outgrown re-keying a spreadsheet every month, you can put Victor to work on your store. And if a spreadsheet no longer scales at all, compare the options in our guide to cash flow software for small business.
FAQs
What's the difference between a profit and loss statement and an income statement?
None — they are two names for the same report. "P&L" is common in day-to-day business talk; "income statement" is the formal accounting term. Both show revenue, costs, and profit over a period. Your Excel template can be titled either way.
Should payment processing fees go in COGS or operating expenses?
It's a judgment call, but for a POD store, putting them just below supplier production cost — inside or adjacent to COGS — keeps your per-order economics honest, because processing scales directly with each sale. The rule that matters is consistency: pick one spot and keep it there every month, or your trend lines become meaningless.
Why shouldn't I put ad spend in COGS?
Because ad spend is the cost of acquiring a customer, not the cost of making the product. If you bury it in COGS, your gross margin looks inflated and the template hides that customer acquisition cost is your real risk. Ad spend belongs in operating expenses, below the gross-profit line, where you can see it eating into profit.
My Shopify payout doesn't match my gross sales — which number goes in the template?
Gross sales goes at the top. Your payout is a net settlement — sales minus fees minus refunds, on a delayed schedule — so it will almost never equal your gross sales for the same window. Book gross sales as revenue and record fees and refunds on their own lines; the payout is a cash consequence, not a revenue figure.
How often should I update the template?
Monthly, at minimum. A P&L is a period report, and monthly cadence is granular enough to catch a rising-ad-cost or shrinking-margin problem before it compounds, without drowning you in daily noise. Close out each month, lock it, and start a fresh column.
Can a template compute true per-order profit automatically?
Only if you feed it clean, reconciled inputs — and that's the hard part. The template arithmetic (net profit ÷ orders) is trivial; pulling accurate supplier, fee, and ad numbers out of multiple platforms every month is the labor. That reconciliation is what an AI employee like Victor handles, so the per-order number stays accurate without manual re-keying.