Most guides on "pnl accounting" stop at the dictionary definition: revenue minus expenses equals profit. That is technically true and practically useless. If you run a Shopify or print-on-demand store, the interesting questions are harder: Where does ad spend go on the statement? Why doesn't your Shopify payout match your sales? How do you calculate contribution margin — and why do top-performing brands now track it alongside gross margin? And how can you be profitable on paper and still short on cash? This guide answers all of those.
What "PnL accounting" actually means
PnL is shorthand for P&L — profit and loss. In accounting it is one and the same as the income statement. It answers a single question over a period of time: did the store make money, and where did the money go?
The key word is period. A P&L covers a span — a month, a quarter, a year — not a single moment. For a small store, monthly is the right cadence: short enough to catch problems early, long enough to smooth out the lumpiness of daily orders.
One thing a P&L is not: a bank statement. Profit is booked when a sale happens, not when cash lands in your account. Hold that distinction — it comes back later, and it is where most small stores get burned.
PnL vs P&L — same thing
"P&L" is the traditional accounting term you will see in financial statements; "PnL" is the shortened version commonly used in dashboards, trading tools, and analytics software. The difference is formatting, not meaning — both refer to the profit and loss statement. Traders tend to write "PnL"; accountants tend to write "P&L." For a Shopify store, the term you use matters far less than knowing how to read the statement.
Gross PnL vs net PnL
Two versions of PnL appear in ecommerce dashboards and it is worth knowing which one you are looking at before acting on it. Gross PnL is profit after subtracting direct product costs (COGS), showing how healthy your product economics are before overhead. Net PnL is the true bottom line after every cost — operating expenses, fees, interest, and taxes — is deducted. For ecommerce sellers the gap between the two is usually dominated by ad spend. Always confirm which figure a tool or report is showing you.
How to build a Shopify P&L, line by line
Every proper income statement follows the same skeleton. Build yours in this order and it will reconcile cleanly at tax time.
- Gross sales — the total value of orders placed in the month, before anything is subtracted. Measure this on the sale date, not the payout date.
- Less discounts — coupon codes, automatic discounts, sales.
- Less returns and refunds — the value of refunded orders. This reduces revenue ("contra-revenue"), it is 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 actually sold. For print-on-demand that is the supplier's production charge plus their shipping to the customer, and often payment processing.
- = Gross profit — net sales minus COGS. Divide it by net sales and you get gross margin %, the core measure of your product economics.
- Variable acquisition costs — ad spend (Meta, Google) plus any variable selling fees. Separating this layer from fixed OpEx lets you calculate contribution margin (gross profit minus variable acquisition), the number that tells you whether each incremental order makes money before fixed overhead.
- Operating expenses (OpEx) — fixed costs that keep the business running regardless of order count: Shopify plan and apps, software, contractors, your own pay.
- = Operating profit — contribution margin minus fixed OpEx. This is the number that tells you if the business works, not just the product.
Below operating profit sit interest and taxes, which get you to net profit — the true bottom line.
Contribution margin: why it matters now
Gross margin measures your product. Contribution margin measures your order economics — what's left after paying to produce and acquire each sale. According to ottit.com, a Shopify P&L that doesn't show contribution margin on a single line makes it impossible to answer the only question that matters: does each order make money before overhead? Rising acquisition costs across Meta and Google make this layer more important than ever: a brand can double revenue while contribution margin goes negative. Build the line into your template from day one.
A worked example: one month at a t-shirt store
Say you run a print-on-demand tee store and did 300 orders last month at about $32 each. Here is a full illustrative P&L. The processing fee line uses Shopify Payments' rate range of 2.4–2.9% plus 30¢ per transaction, per Syncost's Shopify P&L guide; everything else is your own arithmetic.
| Line | Amount |
|---|---|
| Gross sales (300 × $32) | $9,600 |
| Less: discounts (a 10%-off code) | −$480 |
| Less: refunds (9 orders) | −$290 |
| Net sales | $8,830 |
| COGS — production (300 × $12) | −$3,600 |
| COGS — payment processing (2.9% + 30¢ × 300, per Syncost) | −$346 |
| Gross profit | $4,884 |
| Gross margin % ($4,884 ÷ $8,830) | 55.3% |
| Variable acquisition — ad spend (Meta + Google) | −$3,000 |
| Contribution margin | $1,884 |
| Fixed OpEx — Shopify plan + apps | −$180 |
| Fixed OpEx — email/design tools | −$90 |
| Fixed OpEx — owner draw / contractor | −$500 |
| Operating profit | $1,114 |
| Operating margin % ($1,114 ÷ $8,830) | 12.6% |
(All figures illustrative.) Read it and the story jumps out: the product is healthy at a 55% gross margin, but ad spend eats most of the gross profit. The store nets about $1,114 on $8,830 of net sales. The contribution margin line — $1,884 — shows how much was left after paying to make and acquire each sale, before the fixed cost layer. If ad costs rose and pushed that contribution margin close to zero, no amount of "profitable product" would save the business. That is why the contribution margin layer has to be visible in your template.
The one placement rule that matters: COGS vs OpEx
The single most common P&L mistake after payout confusion is putting ad spend in COGS. Don't. Ad spend is paid acquisition and it belongs in operating expenses (or the variable acquisition layer above fixed OpEx), even though it scales with revenue.
The reason is diagnostic. Gross margin is supposed to measure your product — can you make and ship the thing for less than you sell it for? Bury blended ad cost inside COGS and you inflate gross margin and hide the real risk. As ottit.com notes, the standard accounting-software template mixes acquisition cost into overhead instead of treating it as the variable cost it actually is — and that makes blended CAC invisible. In the example above, folding the $3,000 of ads into COGS would drop "gross margin" to around 21% and make the healthy product look broken, while making the acquisition problem invisible.
The rule of thumb: direct, per-unit costs go in COGS; acquisition costs go in the contribution margin layer; fixed costs that run regardless of any single sale go in fixed OpEx. Where payment processing lands is a judgment call — just pick one spot and stay consistent month to month, or your trends become meaningless.
Why your Shopify payout never matches your sales
Here is the trap that ruins more small-store books than any other: treating the payout that hits your bank as your revenue. It isn't.
A Shopify Payments payout is a net settlement. As ottit.com explains, Shopify payouts arrive in the bank as a single net deposit, but the P&L needs gross sales, fees, refunds, and taxes shown separately. The payout bundles all of those — and it arrives on a rolling delay, covering orders from a prior window rather than the calendar month. It will almost never equal your sales total.
Book the deposit as "sales" and you understate revenue, erase your fees from the books entirely, and produce a P&L that can't be reconciled. The fix is the skeleton above: gross sales at the top, fees and refunds on their own lines, and the net payout as a cash consequence at the bottom.
A couple of fee details worth knowing, both confirmed in A2X's Shopify fees guide: a chargeback (when a customer disputes a charge) carries a $15 fee in the US on Shopify Payments, refunded to you if you win the dispute. And when you refund a customer, the original processing fee is generally not returned — so a refunded $32 order still costs you the processing fee you paid. Track refunds as contra-revenue and leave that fee where it sits.
Five P&L leaks your monthly statement misses
A monthly P&L is a compliance document — it closes the books and feeds your tax return. But according to bloomanalytics.io, five leaks tend to compound inside the reporting window that a static monthly statement is structurally blind to. Know them before they hit your margin:
- Aggregated marketing spend hiding product-level losses. A blended ROAS number can look acceptable while specific products or ad sets quietly lose money on every order. You need per-product and per-channel contribution margin to catch this.
- Carrier surcharges that land after delivery. Shipping surcharges from your supplier — especially for dimensional weight or remote-area delivery — often post days after the order closes, missing the period they belong to.
- Refund-driven margin erosion. Refunds remove revenue but not the processing fee, and the cost of the item already produced is rarely recovered. According to bloomanalytics.io, return rates in ecommerce have averaged roughly 19–20% of online orders heading into 2026, making this leak significant at any real volume.
- Leaked discount codes. Codes shared beyond their intended audience or scraped by deal sites inflate discount volume without a corresponding customer acquisition benefit.
- Payment processor fee creep. Processing rates can shift — Shopify Payments charges between 2.4% and 2.9% plus 30¢ per transaction depending on your plan, per Syncost — and plan downgrades or high-risk flags can bump you to a worse tier without a notice you'll easily notice in the P&L.
The fix is to pair your monthly P&L with a real-time profit view that catches these leaks as they happen, not 15–45 days after the period closes.
Profit isn't cash: the float problem
Return to that $1,114 profit. You can earn it and still be unable to cover next week's ad card. Profit is an opinion booked on the sale date; cash is a fact that moves on its own schedule.
Here is why the two diverge for an ad-driven store:
- Ad spend leaves daily. Meta and Google charge your card as you spend, often before the orders those ads generate are even placed.
- Payouts arrive on a delay. Shopify settles on a rolling schedule — commonly a couple of business days in the US, longer over weekends and for newer accounts.
- Supplier charges hit at production. For print-on-demand, your supplier bills you when the order is made, which is usually before the matching payout lands.
Money goes out faster than it comes back, and the faster you grow, the wider that gap gets. Picture spending $100 a day on ads while payouts settle every two business days: by day two you are $200 out of pocket with nothing yet deposited, and a Friday-to-Sunday ad run is three days of cash out with zero cash in until Tuesday. Every cohort of ad spend can be profitable while the bank balance still runs dry — because you are continuously pre-funding growth.
The defense is a cash buffer sized to your worst-case gap: roughly your daily ad plus supplier spend, multiplied by the payout delay in days plus a weekend cushion. Don't scale ad spend faster than payouts can refill the tank.
PnL for print-on-demand: the cost lines that matter most
Print-on-demand stores have a cost structure that looks different from a traditional inventory business. Understanding where each cost sits on your P&L prevents the most common margin illusions.
Production and shipping (COGS)
Your supplier's production charge and the shipping fee they bill you to deliver to the customer are direct, per-unit costs — they belong in COGS. Every order either incurs them or doesn't. If you use Printful, its pricing model includes both base production costs and shipping, which vary by product and destination; see our Printful international shipping rates and costs for the full picture. If you use Printify, the fulfillment cost depends on which print provider you route to — our Printify free shipping breakdown shows how shipping treatment affects your margin line.
For a deeper comparison of both platforms' cost structures, our complete Printify review covering quality, costs, and real margins gives an independent breakdown including what landed COGS actually looks like across product categories.
Platform fees and membership costs
Shopify's monthly plan belongs in fixed OpEx as overhead. Printify offers membership tiers that unlock lower production prices; whether a membership saves you money depends on your order volume — see our Printify Premium cost breakdown for the math. If the membership pays for itself in reduced COGS, it is effectively a COGS reduction — model it both ways and pick whichever view your accountant prefers, then stay consistent. Our Printify sample order coupon code breakdown also covers how sample orders feed into your pre-launch cost testing.
Ad spend, contribution margin, and OpEx
Meta and Google ad spend go in the variable acquisition layer — not in COGS, not in fixed OpEx. Knowing the total spend number is not enough; you need to know whether each channel is contributing positive contribution margin. Our guide to Google Ads vs Facebook Ads for POD sellers covers channel-level economics and how to evaluate each platform's contribution to your P&L. For connecting your ad data to a live profit view, our Shopify, GA4, and Meta Ads setup guide for POD sellers walks through the integration layer.
Common PnL mistakes — and how to avoid them
- Booking the Shopify payout as revenue. As covered above, always book gross sales first and treat the payout as a cash event, not a revenue event.
- Ignoring refund costs. A refunded order removes revenue but usually does not recover the processing fee. Track refunds as contra-revenue and leave the fee in COGS.
- Missing supplier shipping in COGS. Many sellers record only the production cost and forget the shipping line that appears on Printful/Printify invoices. Both must be in COGS for gross margin to be meaningful.
- Skipping the contribution margin layer. Running a two-section P&L (gross profit then operating profit) buries acquisition cost inside overhead and makes it impossible to see whether individual orders are profitable before fixed costs. Add the contribution margin line between gross profit and fixed OpEx.
- Mixing periods. Always match your revenue and costs to the same period. If an order was placed in July but the supplier charged you in August, decide on a consistent rule (most small stores use accrual — book it when the order was placed) and apply it every month.
- Forgetting owner pay. If you do not pay yourself a salary, your P&L will overstate the business's true profitability. Put a market-rate owner draw in fixed OpEx so the numbers reflect a real, transferable business.
A quick word on taxes
Your P&L feeds your tax return, so two things are worth flagging. First, you owe income tax on your profit whether or not a payment processor sends you a 1099-K. For the 2025 and 2026 tax years the federal 1099-K reporting threshold reverted to gross payments over $20,000 and more than 200 transactions, per the IRS's FAQ on the One Big Beautiful Bill. Not getting the form does not make the income tax-free.
Second, the 1099-K reports gross dollars — before fees, refunds, and COGS — so it is not your taxable income. Your taxable income is your net profit, which is much lower, and clean reconciled books are how you prove it.
This is general information, not tax advice. Rules change and vary by situation — consult a licensed CPA or tax professional before acting.
How to read your P&L and act on it
A P&L is only useful if it drives decisions. Here is a simple reading sequence for a monthly review:
- Check gross margin first. If it moved more than a couple of points, something changed in your product cost, pricing, or refund rate — find it before blaming ads.
- Check contribution margin next. This is the layer acquisition cost lives in. If it is shrinking while gross margin holds, your ad spend is rising faster than revenue — either improve conversion or cut spend on the underperforming channel.
- Look at ad spend as a % of net sales. If that ratio is rising while revenue is flat, you are paying more to acquire the same customers.
- Compare operating profit month over month. A rising gross margin with flat operating profit means fixed OpEx is expanding alongside gross profit — find the leak.
- Check cash vs profit. If operating profit is positive but your bank balance dropped, the float gap widened. Size your buffer accordingly before the next ad push.
For a deeper walkthrough of how profit tracking connects to operational decisions in a POD business, see our POD seller's guide to AI and ecommerce.
Where PodVector fits
The hard part of PnL accounting for a Shopify store isn't the arithmetic — it's stitching together the pieces that live in different places. Your sales sit in Shopify, your ad spend in Meta and Google, and your product costs in Printify or Printful. PodVector connects Shopify, Meta Ads, Google Ads, Printify, and Printful into a live data warehouse, then computes true per-order profit so you can see which orders actually made money after every fee and every ad dollar.
It also comes with Victor, an AI employee that reads your connected data across all those sources and proposes concrete profit moves — reprice your worst-margin SKUs, adjust your free-shipping threshold, raise your Shopify prices in bulk, or set up a Klaviyo abandoned-cart flow — then executes the approved action Shopify-side. Victor reads your Meta and Google ad data and proposes moves based on it, but ad-platform writes are executed separately: Victor can propose pausing or reactivating a Meta campaign and execute that specific action; broader ad rewrites, bid changes, and Google Ads writes are not yet built. Every material action waits on your approval via an approve/reject card showing the old and new values — Victor never acts without it.
PodVector is built for intermediate-to-advanced POD sellers on Shopify who advertise on Meta and Google and fulfill through Printify and/or Printful. It is not a dashboard you have to read and translate yourself; it is the layer that does the reconciling and then tells you the next move. If you want your profit picture assembled automatically — and acted on with your approval — start with PodVector.
FAQs
What is the difference between PnL and P&L?
None. "PnL" and "P&L" both stand for profit and loss, and both refer to the same document — the income statement. P&L is the traditional accounting term used in financial statements; PnL is the shortened version common in dashboards, trading tools, and analytics software. They are interchangeable.
Is a P&L the same as an income statement?
Yes. Profit and loss statement, P&L, and income statement are three names for one report: a summary of revenue, costs, and profit over a period of time. It is one of the three core financial statements, alongside the balance sheet and the cash flow statement.
What is contribution margin and how does it differ from gross margin?
Gross margin is net sales minus COGS — it measures your product economics before any acquisition cost. Contribution margin goes one step further: it subtracts variable acquisition costs (primarily ad spend) from gross profit. The result tells you whether each incremental sale makes money before fixed overhead. For ad-driven POD stores, contribution margin is the more actionable number because it makes your real acquisition cost visible rather than buried in a blended OpEx line.
Should ad spend go in COGS or operating expenses?
Neither — it belongs in a variable acquisition layer between gross profit and fixed operating expenses so you can calculate contribution margin. If your template only has two sections, put it in operating expenses. Ad spend is paid customer acquisition, not a direct product cost, even though it scales with sales. Putting it in COGS inflates gross margin and hides the fact that acquisition cost is usually your biggest risk.
Why doesn't my Shopify payout match my sales?
Because a payout is a net settlement, not a sales figure. It bundles your sales minus processing fees, minus refunds, plus or minus adjustments and chargebacks, and it arrives on a delayed rolling schedule. Always book gross sales at the top of your P&L and treat the payout as the cash result at the bottom.
How can I be profitable but still out of cash?
Timing. Profit is recorded on the sale date, but cash moves on its own schedule — ad spend leaves your account daily while Shopify payouts settle days later. A growing, ad-driven store continuously pre-funds its growth, so it can show a profit on the P&L and still run short in the bank. A cash buffer sized to your payout delay is the fix.
How often should a small Shopify store build a P&L?
Monthly. A month is short enough to catch a rising ad cost or a margin slip early, and long enough to smooth out day-to-day order swings. Reconcile each month against your Shopify payout reports so the statement ties out and stays defensible at tax time. Pair the monthly P&L with a real-time profit view to catch leaks — like carrier surcharges, fee creep, and refund erosion — in the 15–45 day window before the period closes.
What costs go in COGS for a print-on-demand store?
The supplier's production charge, the shipping fee they bill you per order, and — depending on your preference — payment processing fees. Ad spend goes in the variable acquisition layer (above fixed OpEx) to preserve a clean contribution margin line. Fixed costs (Shopify plan, apps, contractor pay, your own compensation) go in fixed OpEx. Consistency is more important than perfection: pick a treatment for each line and apply it every month.
How does a P&L relate to a cash flow statement?
The P&L shows profit earned in a period; the cash flow statement shows how cash actually moved. For an ad-driven store the two diverge because ad spend exits your bank before orders and payouts land. Run both, but use the P&L to diagnose margin and the cash flow statement to plan your ad budget and supplier float.
What is a 1099-K and does it equal my taxable income?
No. A 1099-K reports gross payment volume before fees, refunds, and COGS — it is not your taxable income, which is far lower. For the 2025 and 2026 tax years, a processor issues one only when gross payments exceed $20,000 and transactions exceed 200, per the IRS. Clean, reconciled books are how you demonstrate the difference between the gross 1099-K figure and your actual net profit.