If you already run an operating store, you don't need another textbook definition of COGS. You need to determine a number that matches how a print-on-demand (POD) business actually spends money — and then use it to see whether each order makes you money.
This guide covers the standard method every ranking page repeats, shows why it breaks for POD, and then walks a real monthly calculation for a store doing hundreds of orders a month. It ends where the other articles stop: turning COGS into true per-order profit.
The formula everyone quotes — and why POD bends it
The standard accounting formula, as Shopify lays it out, is: beginning inventory + purchases − ending inventory = COGS. It works because a normal retailer buys stock up front, holds it on a shelf, and expenses it only as units sell.
A POD store has no shelf. Nothing is bought before the sale — your supplier prints the item only after a customer orders it. So your beginning inventory is zero and your ending inventory is zero.
Plug that in and the formula reduces to a single term: COGS = purchases during the period. And "purchases" for POD means exactly one thing — what Printify, Printful, or Gelato billed you to make and ship the orders that sold. That's the whole trick. You determine COGS by summing supplier charges, not by counting stock.
What actually counts as COGS for a POD order
Because there's no inventory to value, determining COGS becomes a line-item question about each order. Here's what belongs in the number and what doesn't.
What's in
- The supplier's base product cost — the blank plus the print/embroidery charge. This is the piece most sellers already track.
- The supplier's shipping charge to send that order to the customer. Shopify's own COGS breakdown counts freight and shipping into fulfillment as direct costs, and for POD the supplier's shipping fee is a direct cost of making the sale happen.
- Per-order production add-ons — a second print location, a premium label, gift packaging the supplier charges for.
What's out
Operating expenses stay out of COGS. Your Shopify subscription, design apps, your own salary, and marketing are period costs, not per-order production costs — the same line the standard guides draw between direct and indirect costs.
Two edge cases trip people up. Payment processing fees are usually treated as an operating expense, not COGS — but you still need them for profit math (below). And ad spend is never COGS; it's customer acquisition. Keeping ad spend out of COGS is correct accounting, and it's exactly why COGS alone can't tell you if an order was profitable.
Worked example: determining COGS for an operating store
Say you run a store doing 340 orders a month at a $31 average order value, spending $2,800/month on Meta ads. Monthly revenue is 340 × $31 = $10,540.
Your bestseller is a unisex tee. The supplier bills you a $12.00 base cost plus $4.50 shipping = $16.50 landed per order. To keep the example clean, assume every order is one tee.
Determine COGS for the month with the per-order method:
| Line | Math | Result |
|---|---|---|
| Supplier base cost | 340 × $12.00 | $4,080 |
| Supplier shipping | 340 × $4.50 | $1,530 |
| Monthly COGS | $4,080 + $1,530 | $5,610 |
Now reconcile it against the classic formula to prove they agree: beginning inventory $0 + purchases $5,610 − ending inventory $0 = $5,610. Same number. For POD, "purchases" is your supplier bill, so the two methods always land in the same place — which is why the per-order roll-up is the faster, more honest way to determine it.
Gross profit is revenue minus COGS: $10,540 − $5,610 = $4,930, a 46.8% gross margin. That looks healthy. Hold that thought — it's about to get more interesting.
For the mechanics of building this from your own order export step by step, our cost of goods sold calculation walkthrough shows the spreadsheet version, and the broader ecommerce ops economics guide puts COGS in context with the other money mechanics that eat POD margins.
Do inventory valuation methods matter for POD?
Every ranking page spends a section on FIFO, LIFO, and weighted average cost. For a stock-holding retailer, these matter because units bought at different prices sit in inventory and the method decides which cost you expense first.
For POD, they mostly don't apply. You expense the exact cost the supplier charged on the exact order, in the period it sold — no layers of inventory to choose from. This is a rare case where matching cost to revenue is automatic.
The one time it resurfaces: if you pre-buy blanks and ship them to a supplier's warehouse, or hold your own stock for a hybrid line, you're back to valuing inventory and picking a method. Pure POD sidesteps it entirely.
From COGS to true per-order profit — the step the SERP skips
Here's what a healthy 46.8% gross margin hides. Gross margin stops before the two costs that decide whether a POD order actually pays: payment fees and ad spend.
Take one $31 order and finish the math:
| Line | Amount |
|---|---|
| Order revenue (AOV) | $31.00 |
| − COGS (base + supplier shipping) | −$16.50 |
| − Payment processing (est. 2.9% + $0.30) | −$1.20 |
| − Ad spend per order ($2,800 ÷ 340) | −$8.24 |
| True per-order profit | $5.06 |
That $4,930 of monthly "gross profit" is really about $5.06 × 340 = $1,720 before your subscription, apps, and your own time. The order margin isn't 46.8% — it's about 16% once acquisition and fees land. Nothing here is a claim about the market; it's arithmetic on the example numbers, and the point is that determining COGS is only step one.
This is also why a lost chargeback hurts POD so much more than it looks. Because a printed item can't be restocked, your COGS on a disputed order is gone for good — and industry guides put the all-in cost of a lost dispute at roughly two to two-and-a-half times the order value once you add back that unrecoverable COGS, shipping, and the ad spend you paid to acquire the buyer.
Determining COGS by hand once a month is doable. Keeping true per-order profit accurate across hundreds of orders, changing supplier prices, and shifting ad costs is where it falls apart — and where PodVector AI helps. Victor is an AI employee that connects your Shopify store, your Printify, Printful, and Gelato fulfillment, and your Meta Ads and Google Ads accounts, then computes true per-order profit — COGS, supplier shipping, fees, and ad spend netted out per order. Victor is not a dashboard; it's an operator that surfaces the number and, with every write action approval-gated, only acts when you say so. You can try it free and see your real per-order margin.
Where sellers get COGS wrong
- Stopping at the base cost. Counting the $12 blank but ignoring the $4.50 supplier shipping understates COGS on every order and inflates margin.
- Sliding ad spend into COGS. It's acquisition, not production. Mixing them buries the gross-margin signal you need to price correctly.
- Assuming a refund only costs the refund. On POD the supplier charge is sunk — the standard guidance is that defects get a reprint or refund with no restock, so the original COGS never comes back.
- Determining it once and never again. Suppliers change base and shipping prices; a stale COGS quietly turns profitable SKUs into losers.
Once you can determine COGS cleanly, the next move is recording it correctly in your books — see how to record cost of goods sold — and, if you want the full margin picture, the unit-economics and FinOps breakdown shows how COGS, CAC, and contribution margin fit together.
FAQs
Is supplier shipping part of COGS for print on demand?
Yes, treat it as COGS. The supplier's shipping charge is a direct cost of fulfilling that specific order — you only pay it because the order sold. Shopify's COGS breakdown counts freight and fulfillment shipping as direct costs, so folding the supplier's per-order shipping into COGS keeps your gross margin honest. The shipping you charge the customer, meanwhile, is revenue.
How do I calculate the cost of goods sold if I hold no inventory?
Sum what your supplier billed you to produce and ship the orders that sold in the period. Because beginning and ending inventory are both zero for pure POD, the classic beginning + purchases − ending formula reduces to just your supplier charges. The per-order roll-up and the formula give the same answer — the roll-up is simply faster and easier to audit.
Should I use FIFO or LIFO for a POD store?
Neither, in most cases. FIFO and LIFO exist to decide which cost layer to expense when you hold stock bought at different prices. Pure POD holds no stock, so you expense the exact supplier charge on the exact order. You only need a valuation method if you pre-buy blanks or run a hybrid stocked line.
Does COGS include my Shopify subscription or app fees?
No. Those are operating expenses — fixed period costs you pay whether you sell one order or a thousand. COGS captures only the direct, per-order cost of producing what you sold. Keeping the two separate is what lets gross margin and net profit each tell you something useful.
Why isn't ad spend in COGS?
Ad spend is the cost of acquiring a customer, not the cost of producing the product, so it stays out of COGS by definition. That's correct accounting — but it's also why COGS alone can't tell you if an order was profitable. You have to subtract acquisition cost and payment fees afterward to reach true per-order profit, as the worked example above shows.
How often should I recalculate COGS?
Re-check it whenever a supplier changes base or shipping prices, and reconcile the full month at close. Supplier pricing drifts, product mix shifts, and a COGS figure that was right in spring can be wrong by fall — quietly flipping SKUs from profitable to break-even without any alarm going off.