If you already run a store, you don't need another dictionary definition of cost of goods sold. You need to plug in your real supplier invoices and see what's left. This walkthrough does that with operating numbers, then shows why COGS alone still hides whether an order made you money.
The cost of goods sold formula
The standard formula every accounting source agrees on is:
COGS = Beginning Inventory + Purchases − Ending Inventory
- Beginning inventory — the cost value of unsold stock you were holding at the start of the period.
- Purchases — everything you paid to produce or acquire sellable goods during the period.
- Ending inventory — the cost value of what's still unsold when the period closes.
The logic is simple: what you started with, plus what you added, minus what's left, equals what went out the door. Subtract that from revenue and you have gross profit. This is why COGS sits directly under revenue on every income statement.
Where POD sellers diverge from the textbook
Most COGS guides assume you buy stock, warehouse it, and count what's left. A print-on-demand store barely holds inventory — the supplier prints each unit only after a customer orders it.
So for a pure POD store, beginning and ending inventory are both roughly zero, and the formula collapses to this:
COGS ≈ Purchases = (supplier product cost + supplier shipping) for every unit you sold
That's cleaner than a traditional retailer's math, but it comes with a trap covered further down: because there's no stock to restock, a refunded or disputed POD unit's COGS is gone for good.
Worked example: monthly COGS for an operating store
Say your store does 340 orders a month at a $31 average order value. That's $10,540 in monthly revenue.
Your Printify or Printful invoice per order breaks down like this:
- Product (blank + print): $12.00
- Supplier shipping: $5.00
- Per-order COGS: $17.00
Now run the formula for the month:
| Line | Amount |
|---|---|
| Beginning inventory (POD) | $0 |
| Purchases: 340 orders × $17 | $5,780 |
| Ending inventory (POD) | $0 |
| COGS for the month | $5,780 |
Gross profit is revenue minus COGS: $10,540 − $5,780 = $4,760, a gross margin of about 45%. That 45% is the number most sellers stop at — and it's where the trouble starts.
COGS is not your profit — the per-order truth
Gross margin makes the store look healthy. But COGS deliberately excludes two costs that quietly eat that $4,760: payment processing fees and advertising.
Say your payment processor keeps roughly 3% plus a small flat fee, and you're spending $2,800 a month on Meta ads. Layer those onto a single $31 order:
| Line | Per order |
|---|---|
| Revenue | $31.00 |
| COGS (product + supplier shipping) | −$17.00 |
| Payment fee (~3% + $0.30) | −$1.23 |
| Ad spend ($2,800 ÷ 340 orders) | −$8.24 |
| True per-order profit | $4.53 |
Across 340 orders that's about $1,540 in real monthly profit — not the $4,760 gross profit suggested. The gap is the whole reason to separate COGS from operating costs instead of dumping everything into one "costs" bucket. If you want the full mechanics of that per-order stack, our ecommerce ops economics guide breaks down every line.
What belongs in COGS (and what doesn't)
Getting the formula right depends entirely on which costs you put in "purchases." For a POD store:
Include in COGS:
- Supplier product/print cost per unit
- Supplier fulfillment and shipping charged to you
- Any per-unit customization or add-on fees your supplier bills
Keep out of COGS (these are operating expenses):
- Meta and Google ad spend
- Payment processing fees
- Your Shopify subscription and app fees
- Design tools, VA hours, and your own time
Marketplace selling fees blur this line for multichannel sellers. If you also sell on Etsy, its combined take — listing, transaction, payment, and Offsite Ads fees — runs roughly 10–13% of every sale and can climb to 22–28% on ad-attributed orders once the mandatory Offsite Ads fee applies above a revenue threshold. Those are selling fees, not COGS, but you still have to subtract them to see real profit. For the bookkeeping side of separating these buckets cleanly, see how to record cost of goods sold correctly.
Periodic vs perpetual: which method fits you
The formula above is the periodic method — you calculate COGS at the end of a period by counting inventory. It's the natural fit for POD, where "inventory" is negligible and you can just sum supplier invoices for orders shipped.
The perpetual method updates COGS after every single sale in real time. It's built for stocked retailers with warehouse systems. If you hold blanks in bulk or pre-buy seasonal stock, you drift toward this model and need inventory tracking to keep the number honest.
FIFO, LIFO, and average cost
When your unit cost changes over time, you need a rule for which cost to assign to a sold unit:
- FIFO (first-in, first-out): the oldest inventory cost is expensed first. Most common and usually required for POD-adjacent bookkeeping.
- LIFO (last-in, first-out): the newest cost is expensed first. Rare, and not permitted under many accounting standards.
- Average cost: blends all unit costs into one weighted average.
For a make-to-order POD store the choice barely moves the needle, because you're expensing the exact supplier cost tied to each order. It matters far more if you stock inventory whose price swings between restocks.
The POD trap: unrecoverable COGS on refunds and chargebacks
Here's the operating reality generic COGS articles never mention. A traditional retailer who refunds an order usually gets the item back and returns it to stock, so only shipping is lost.
A printed-on-demand item can't be restocked — it was made for one customer. When you refund it, the COGS you already paid your supplier is simply gone, on top of the refund.
It's worse on a dispute. A lost chargeback typically costs a merchant two to two-and-a-half times the order value once you add the unrecoverable product cost, shipping, ad spend, and the dispute fee. That's why accurate COGS tracking isn't just tax hygiene — it tells you how much every refund and dispute actually vaporizes.
Turn the formula into a live number
Doing this once in a spreadsheet is easy. Doing it every day, per order, across changing supplier prices and ad spend, is where operators fall behind — and where a stale COGS number leads to scaling an unprofitable product.
This is exactly the kind of work PodVector AI was built for. Victor is an AI employee that connects to your Shopify store, your Meta and Google Ads accounts, and your Printify, Printful, or Gelato supplier — then computes true per-order profit, not just gross margin, from your live data. Every action he takes is approval-gated, so nothing runs without your sign-off. Put Victor to work on your numbers and stop guessing which orders actually made money.
For a deeper look at the discipline behind these figures, our breakdown of unit economics and the role of an ecommerce operations manager both build on the COGS foundation. When you're ready to formalize the books, move on to recording cost of goods sold.
FAQs
What is the basic formula to calculate cost of goods sold?
COGS = Beginning Inventory + Purchases − Ending Inventory. You take the value of stock you started the period with, add what you spent producing or buying goods, and subtract what's left unsold. The result is the cost of the goods you actually sold.
How do I calculate COGS for a print-on-demand store?
Because POD carries almost no inventory, beginning and ending inventory are effectively zero, so COGS equals your supplier's product-plus-shipping cost for every unit shipped in the period. If you sold 340 units at $17 each in supplier costs, your COGS is 340 × $17 = $5,780.
Does COGS include shipping and advertising?
Supplier shipping charged to produce and deliver the unit belongs in COGS. Advertising, payment processing, and your Shopify subscription do not — those are operating expenses you subtract after gross profit to reach true per-order profit.
Is cost of goods sold the same as my profit?
No. COGS only tells you gross profit (revenue minus COGS). A store can show a healthy 45% gross margin and still make only a few dollars per order once ad spend and fees come out, which is why per-order profit matters more than gross margin alone.
What's the difference between the periodic and perpetual COGS method?
Periodic calculates COGS at the end of a period by summing purchases and counting inventory — ideal for POD. Perpetual updates COGS after every sale in real time and suits stocked retailers with inventory-management systems.
Why does a refunded POD order cost me more than a stocked product?
A printed item can't return to inventory, so its COGS is unrecoverable when you refund it — you eat the refund and the production cost. On a lost chargeback the total hit runs even higher, which makes accurate COGS tracking essential for judging how much refunds and disputes really cost.