Cost of goods sold (COGS) is what you pay to produce and deliver the exact item a customer bought — the product itself and its shipping. Operating expenses are everything else it takes to run the store — ad spend, apps, payment fees, and your time. The split matters because COGS sets your gross margin and operating expenses set your operating margin, and most print-on-demand sellers quietly bleed profit in the gap between the two.

If you run an operating store — real orders, real ad spend, a Printify or Printful account that bills you every week — you already know the two numbers are different. What trips people up is where the line falls, and getting it wrong makes a 45% gross-margin store look healthy while it earns almost nothing. This is a decision you make once and then apply to every order, so it's worth getting exactly right.

The one-line difference

COGS is tied to a specific sale. No sale, no COGS. If a customer buys a shirt, you pay your supplier to print and ship that shirt — that cost exists because of that order.

Operating expenses keep running whether or not anyone buys. Your Shopify subscription, your Meta campaign budget, your email tool — all of it bills on a schedule, not per order. The accounting world calls these "period costs" because they attach to a time period, not a unit.

That single test — does this cost appear only when an order does? — settles almost every question. For a deeper mechanical treatment of the per-unit side, our guide to how print-on-demand sellers should record cost of goods sold walks the bookkeeping step by step.

Cost of goods sold: what a POD seller actually counts

For a print-on-demand store, COGS is unusually clean because you don't hold inventory. There's no warehouse, no beginning-and-ending-inventory math most accounting articles drill you on. Your COGS is simply what the supplier charges you to fulfill the order.

For a typical order, that's two line items:

  • Product cost — what Printify, Printful, or Gelato charges to produce the item (the blank plus the print).
  • Fulfillment shipping — what the supplier charges to ship that item to your customer.

Say you sell a $31 shirt. Your supplier charges $12 to print it and $5 to ship it. Your COGS on that order is $17, full stop. Everything else you spend that month — ads, apps, your Monday-morning hours — is not COGS.

One POD-specific wrinkle: because the item is printed to order, a refund doesn't return that $17 to you. A refunded shirt can't be restocked, so the COGS is gone even though the revenue reverses. That asymmetry is why POD margins punish refunds harder than inventory businesses — and it's covered in depth in the ecommerce ops-economics hub.

If you sell the same product across several suppliers at different prices, your per-unit cost isn't a single number — you blend it. That's exactly what a weighted-average cost of goods sold calculation does, and it's the honest way to book COGS when your fulfillment cost moves around.

Operating expenses: everything it takes to keep selling

Operating expenses (OpEx) are the cost of being open for business. For a POD store they cluster into a few buckets:

  • Marketing — your Meta Ads and Google Ads spend. This is almost always the biggest line, and it's never COGS.
  • Software and platform — Shopify subscription, Klaviyo, design tools, any app with a monthly charge.
  • Payment processing — the per-transaction cut your gateway takes.
  • Your labor and overhead — the hours you put in, contractors, a home-office slice.

Payment processing is the one line sellers argue about, so pin it down. Shopify Payments on the Basic plan charges 2.9% plus 30¢ per online transaction, according to Shopify's own pricing. It's triggered by a sale, which makes it feel like COGS — but accountants book it as a selling/operating expense, not product cost. The practical reason: it scales with your price, not your production, so keeping it in OpEx keeps your gross margin a clean read on fulfillment efficiency.

Chargebacks live here too. A disputed order pulls the sale back and adds a $15 chargeback fee on Shopify Payments for US merchants, per chargeback.io's 2026 fee breakdown — refunded only if you win. That's an operating cost of doing business online, not a cost of the good itself.

Why the split decides your real margin

Here's where the two numbers earn their keep. COGS gives you gross margin; operating expenses take you from gross margin down to operating margin. Confusing the two is how a store "feels" profitable and isn't.

Say you run an operating store doing 340 orders a month at a $31 average order value, spending $2,800/month on Meta. Revenue is 340 × $31 = $10,540. Walk the two layers (the only sourced number below is the Shopify processing rate linked above; the rest are your store's own figures):

Line Classification Monthly amount
Revenue (340 × $31) — $10,540
Product + shipping ($17 × 340) COGS −$5,780
Gross profit — $4,760
Meta ad spend OpEx −$2,800
Payment processing (2.9% + 30¢ × 340) OpEx −$408
Shopify + Klaviyo subscriptions OpEx −$84
Operating income — $1,468

Gross margin is $4,760 ÷ $10,540 = 45.2%. That's the number a seller brags about. But operating margin is $1,468 ÷ $10,540 = 13.9% — and that's the number that actually pays rent.

The gap between 45% and 14% is entirely operating expenses, and almost all of it is one line: ad spend. If you only track COGS, you'd price your products off a 45% margin and wonder why your bank balance never grows. The split is what reveals that ads, not production, are your real constraint.

True per-order profit: the number both layers feed

Operators don't run their business off a monthly income statement — they run it off per-order profit, which pulls from both COGS and OpEx at once. Using the same store:

  • Revenue per order: $31.00
  • COGS per order: −$17.00
  • Processing per order (2.9% + 30¢): −$1.20
  • Ad cost per order ($2,800 ÷ 340): −$8.24
  • Fixed cost per order ($84 ÷ 340): −$0.25
  • True profit per order: $4.31

That $4.31 is the number that tells you whether a new campaign is worth running, whether a 15%-off code still leaves you in the black, and how much you can afford to pay to acquire a customer. It only exists when you've split COGS from OpEx correctly — mislabel ad spend as COGS and your per-order math collapses. The same unit-economics discipline shows up in capital-heavy businesses too; see how it scales in this breakdown of Joby Aviation's cost per aircraft.

The tax reason to get the line right

The split isn't just managerial — the IRS treats the two categories differently. COGS is subtracted from your gross receipts to figure gross profit, while operating expenses are deducted separately as business expenses, and you cannot deduct the same cost in both places, per the IRS.

For a Schedule C filer, that means fulfillment costs flow through the COGS section and ad spend, apps, and fees flow through the expenses section. Put a cost in the wrong bucket and you either double-count a deduction (an audit risk) or miss one entirely. Larger sellers studying the mechanics at scale can see how it's handled in our look at Amazon's cost of goods sold.

How to keep the split honest without a spreadsheet

The theory is simple; the discipline is not. Supplier invoices, ad platforms, payment fees, and refunds all land in different places, and reconciling them by hand every month is exactly the chore that slips.

This is the work Victor does. Victor is the AI employee inside PodVector AI: it connects your Shopify store, Meta Ads, Google Ads, and your Printify, Printful, or Gelato account, pulls the real supplier cost and the real ad spend behind every order, and computes your true per-order profit — the $4.31 number above — with COGS and operating expenses kept on their correct sides of the line. It delivers the breakdown as a report to your Google Drive, and every write action it takes is approval-gated, so nothing happens until you say so.

If you want that split computed on your live data instead of estimated in a spreadsheet, start with PodVector AI.

FAQs

Is shipping cost of goods sold or an operating expense?

The shipping your supplier charges to fulfill an order is COGS — it's part of delivering that specific item. Outbound shipping you pay on your own (rare in POD, since the supplier ships) would also be COGS. But shipping supplies, warehouse costs, or a flat monthly logistics tool are operating expenses, because they aren't tied to a single order.

Are payment processing fees COGS or operating expenses?

Operating expenses. Even though a fee only hits when a sale happens, it scales with your price, not your production, so accountants book it as a selling expense. Keeping it out of COGS keeps your gross margin a clean measure of fulfillment efficiency rather than a mix of two different things.

Is advertising ever part of cost of goods sold?

No. Ad spend is the clearest operating expense there is — it runs whether or not any single order converts, and it isn't tied to producing a specific item. Folding ad spend into COGS is the single most common mistake operating sellers make, and it inflates gross margin while hiding the fact that acquisition is eating the profit.

Why does the COGS vs. operating expenses split matter more for POD than for a normal retailer?

Because a printed item can't be restocked, so a refund destroys the COGS with no recovery, and because most POD profit pressure comes from ad spend — an operating expense. A retailer holding inventory can lean on gross margin; a POD seller has to watch operating margin, which means the split has to be exact.

What's the fastest way to check if I've classified a cost correctly?

Ask one question: does this cost exist only because a specific order exists? If yes, it's COGS. If it would bill anyway this month with zero sales — ads, apps, subscriptions, your time — it's an operating expense.