Most articles on this topic define the P&L for a textbook company and stop there. If you already run a store — real orders, real ad spend, real supplier charges — you need a version that reflects how the money actually moves. That's what this is.
What a profit and loss account statement actually tells you
Your P&L covers a period of time — a month is right for a growing store — and it measures profit on an accrual basis: revenue is booked when the sale happens, not when cash hits your bank. That distinction is the whole game, and it trips up more sellers than any other single thing.
The statement has three profit lines that matter, each answering a different question. Gross profit tells you if the product works. Operating profit tells you if the business works. Net profit is the bottom line after everything, including tax.
Read together, these lines show you where money leaks. A healthy gross margin with a thin operating margin means your product is fine but your acquisition cost is eating you alive — a pattern you cannot see if the statement is built sloppily.
The line-by-line structure
Here is the standard ecommerce layout, top to bottom. This same skeleton appears in more depth in our ecommerce P&L guide, but the short version is enough to build one.
- Gross sales — the total value of orders placed in the period, before any deductions.
- Less discounts — coupon codes, automatic discounts, sitewide sales.
- Less returns and refunds — a contra-revenue line that reduces revenue, not an expense.
- Net sales — gross sales minus discounts minus refunds. Your honest top line.
- Cost of goods sold (COGS) — the direct cost of the units you sold: supplier production, supplier shipping, and (by convention) payment processing.
- Gross profit — net sales minus COGS. Divide by net sales for gross margin percent.
- Operating expenses (OpEx) — everything else it takes to run the store: ad spend, subscriptions, tools, owner pay.
- Operating profit — gross profit minus OpEx. The number that tells you the business is viable.
The one rule that keeps the whole thing honest: direct, per-unit costs go in COGS; costs that keep the business running regardless of any single sale go in OpEx. Put ad spend in OpEx, never COGS — burying acquisition cost inside COGS inflates your gross margin and hides the real risk.
A worked example: one month for an operating store
Say you run a print-on-demand apparel store doing 340 orders a month at a $31 average order value, with $2,800 a month in Meta ad spend. All figures below are illustrative, but they're shaped like a real operating month.
The payment processing assumption — 2.9% plus 30¢ per online transaction — reflects Shopify Payments' commonly quoted rate for lower-tier plans, per A2X's breakdown of Shopify fees (verify your own plan's rate before you rely on it).
| Line | Amount |
|---|---|
| Gross sales (340 orders × $31) | $10,540 |
| Less: discounts (a 10%-off code) | −$540 |
| Less: refunds (11 orders) | −$340 |
| Net sales | $9,660 |
| COGS — production (340 × $12) | −$4,080 |
| COGS — processing (2.9% + 30¢ × 340) | −$408 |
| Gross profit | $5,172 |
| Gross margin | 53.5% |
| OpEx — Meta ad spend | −$2,800 |
| OpEx — Shopify plan + apps | −$180 |
| OpEx — email + design tools | −$110 |
| OpEx — owner draw / contractor | −$600 |
| Operating profit | $1,482 |
| Operating margin | 15.3% |
Now read it. The product is healthy — a 53.5% gross margin ($5,172 ÷ $9,660) means the unit economics work. But ad spend swallows more than half of that gross profit, leaving roughly $1,482 in operating profit on $9,660 of net sales.
Here's the stress test. If your cost per acquisition rises 20% — Meta spend climbs from $2,800 to $3,360 for the same orders — operating profit falls from $1,482 to about $922. A 20% move in one line nearly halves your profit. That is exactly why ad spend has to sit visibly in OpEx: the statement should scream "your risk is CAC," and it can't if that cost is hidden.
The mistake that wrecks most store P&Ls
The single most common error is treating your payout as your revenue. The deposit Shopify drops into your bank is a net settlement — sales, minus processing fees, minus refunds, plus or minus adjustments — batched on a rolling delay. It almost never equals your sales for the same window.
Book that net deposit as "sales" and you understate revenue, erase your fees entirely, and produce a P&L that can't be reconciled at tax time. The fix is the structure above: gross sales at the top, every fee and refund on its own line, and the net payout treated as a cash consequence at the bottom — not a revenue figure.
If you're wondering which tool should own this reconciliation, our comparison of profit and loss statement software walks through the options, and there's a separate guide on building a P&L in QuickBooks if that's your ledger.
Profit on paper is not cash in the bank
Your P&L can show $1,482 in profit and your account can still be short this week. Profit is booked on the sale date; cash moves on its own schedule. Ad spend leaves your card daily, supplier charges hit at production, and Shopify payouts arrive on a delay — so the faster you scale, the wider the gap you must pre-fund.
That timing gap is a cash flow problem, not a P&L problem, and it's the number-one reason profitable stores hit a wall. If it's biting you, start with cash flow software for small business — a healthy P&L and a healthy bank balance are two different reports.
Letting Victor keep the statement honest
Rebuilding this by hand every month is where most sellers give up, and a spreadsheet quietly drifts out of sync with reality. This is the work PodVector AI's AI employee, Victor, does for you.
Victor connects to Shopify, Meta Ads, Google Ads, Printify, Printful, Gelato, and Klaviyo, and computes true per-order profit from your live data — production cost, fees, and ad spend attributed down to the order. Victor isn't a dashboard you have to read; it's an AI employee that assembles the numbers and delivers reports straight to your Google Drive. Every write action it takes is approval-gated, so you approve before anything happens.
Put Victor to work on your store's numbers and see your real operating profit instead of a payout you've mistaken for revenue.
FAQs
What is the difference between a profit and loss account and a balance sheet?
A profit and loss account statement covers a period — it shows revenue, costs, and profit over, say, a month. A balance sheet is a snapshot on a single date, showing what you own and owe. The P&L tells you whether you made money; the balance sheet tells you what you're worth right now.
How often should I build a P&L for my store?
Monthly. An operating store with steady ad spend moves too fast for a quarterly or annual view — by the time a rising CAC shows up in a year-end statement, you've already lost months of margin. A monthly P&L lets you catch a slipping operating margin while you can still act on it.
Should payment processing fees go in COGS or operating expenses?
Either can be defensible, but pick one and stay consistent, or your month-over-month trends become meaningless. Many ecommerce sellers place processing in COGS because it scales per order, like a direct cost. Ad spend is the one that is not a judgment call — it always belongs in OpEx.
Does my Shopify payout equal my revenue?
No. The payout is a net settlement of sales minus fees minus refunds, deposited on a rolling delay, so it rarely matches your sales for the same window. Book gross sales at the top of your P&L and treat the payout as the cash result at the bottom.
Do I owe income tax based on my P&L or my 1099-K?
You owe income tax on your actual profit, which your P&L approximates far better than a 1099-K. A 1099-K reports gross payment volume before fees, refunds, and COGS, and for the 2025 and 2026 tax years the IRS only requires one when gross payments exceed $20,000 and transactions exceed 200, per the IRS. Not receiving the form does not make your profit tax-free. This is general information, not tax advice. Rules change and vary by situation — consult a licensed CPA or tax professional before acting.