If you already run a store — real orders, real ad spend, a supplier invoice landing every week — the question isn't "what is COGS?" It's where the number goes and what belongs in it, because that one line decides whether your profit reporting is honest.
Most guides on this keyword stop at a textbook journal entry and a beginning-plus-purchases-minus-ending formula. That's fine for a shop holding shelves of inventory. It quietly misleads a POD operator, whose inventory is almost always zero and whose real cost is a per-order supplier charge. Here's how to record it correctly for the store you actually run.
The core journal entry: debit COGS, credit inventory
Recording cost of goods sold is a two-account move. You debit the Cost of Goods Sold account (an expense, which increases with a debit) and credit Inventory for the same amount (an asset, which decreases with a credit).
That's the entry every accounting reference agrees on: COGS up, inventory down, by the cost of what left the building. The disagreement is only about when you post it and what dollar figure you use.
The result is what matters. COGS lands on your income statement directly beneath revenue, and revenue minus COGS is your gross profit. Get the number wrong and every margin figure below it is wrong too.
Periodic vs. perpetual: which timing fits a POD store
There are two standard ways to time the entry, and they map cleanly onto two kinds of store.
Periodic — one entry at period close
In a periodic system, you don't touch COGS on every sale. You wait until month-end, total up what it cost to fulfill everything you sold, and post one summary entry.
The classic formula fills in the number: beginning inventory + purchases − ending inventory = COGS. For a stocked retailer that math genuinely matters, because unsold goods sit in ending inventory.
For POD, both inventory figures are usually zero — nothing is printed until an order comes in, and nothing is left over. So the formula collapses to something simpler: your COGS is the total your suppliers charged you for the period. Add up your Printify, Printful, and Gelato invoices for units that actually shipped, and that sum is your entry.
Perpetual — an entry per order
In a perpetual system, you post a small COGS entry the moment each order is fulfilled. Sell a $31 tee whose supplier cost is $17, and at that instant you debit COGS $17 and credit inventory $17.
This is what Shopify and most connected accounting tools do automatically once you map a per-product cost. It keeps gross profit accurate in real time instead of only at month-end — which is the whole point if you're deciding on ad budgets mid-week, not mid-quarter.
Either method lands at the same monthly total. Perpetual just gives you the number continuously instead of in one lump.
What belongs in COGS — and the mistake that inflates your "profit"
This is where operators lose money on paper without realizing it. COGS is only the direct cost of producing and delivering the units you sold. For POD that's a short, specific list:
- The product cost your supplier charges per unit.
- The fulfillment shipping the supplier bills you to get it to the customer.
- Any per-unit printing, embroidery, or add-on charges on the order.
What does not go in COGS is just as important, because miscategorizing it silently overstates gross profit:
- Ad spend (your Meta and Google Ads budget) is a selling expense, not COGS. It belongs below the gross-profit line.
- Your Shopify subscription, apps, and payment-processing fees are operating overhead, not cost of goods.
- Design software, VA hours, and your own time are overhead too.
If you're unsure which bucket a cost falls in, the distinction between direct production cost and everything else is exactly what our breakdown of overhead vs. operating expenses is built to settle. And if you want the underlying arithmetic before you record anything, the cost of goods sold formula walkthrough covers the calculation step by step.
Worked example: recording a month of COGS for a 340-order store
Say you run a store doing 340 orders a month at a $31 average order value, spending $2,800/month on Meta ads. Your supplier charges you $12 in product cost plus $5 in shipping per order — $17 all in.
Here's the month, recorded correctly:
| Line | Calculation | Amount |
|---|---|---|
| Revenue | 340 × $31 | $10,540 |
| Cost of goods sold | 340 × $17 | $5,780 |
| Gross profit | $10,540 − $5,780 | $4,760 |
| Ad spend (NOT in COGS) | given | $2,800 |
| Contribution before overhead | $4,760 − $2,800 | $1,960 |
Your journal entry for the month is one line each way: debit Cost of Goods Sold $5,780, credit Inventory $5,780.
Now watch what happens if you wrongly fold the $2,800 in ad spend into COGS. Your "gross profit" reads $1,960 instead of $4,760 — and every margin ratio you calculate off it is distorted. That's why the boundary is worth guarding.
The per-order view is the one that should drive decisions. Each order earns $31 − $17 = $14 in gross profit, then carries $2,800 ÷ 340 = $8.24 of ad cost, leaving roughly $5.76 in true per-order profit before overhead. Recording COGS cleanly is what makes that $5.76 knowable at all — and it's the same logic behind our guide to unit economics.
The POD twist: recorded COGS doesn't reverse
For a stocked retailer, a returned item usually comes back into inventory, so a chunk of the COGS is recoverable. For POD there is no restock — the item was printed for one order and can't be resold.
That changes what your recorded COGS means. When you refund a POD order, the customer's money goes back, but the supplier cost you already recorded stays spent. You're out the refund and the production cost.
It gets worse on a chargeback. A lost dispute typically costs a merchant 2x to 2.5x the order value once you add the unrecoverable product cost, shipping, ad spend, and fees on top of the clawed-back amount, according to chargeback.io. Accurate COGS recording is what lets you see that full hole instead of only the refund line.
This is the operator's reason to record cost of goods sold precisely rather than approximately: it's the number that tells you what a refund, a defect, or a fraudulent order truly costs. For the step-by-step bookkeeping mechanics — accounts, timing, and reconciliation — see the deeper walkthrough on recording cost of goods sold.
Where Victor fits in
PodVector AI's Victor is an AI employee that works over your live store data, not a dashboard you have to read. He connects to Shopify, Meta Ads, Google Ads, Printify, Printful, Gelato, and Klaviyo, pulls the supplier cost on every order and the ad spend behind it, and computes true per-order profit — the $5.76-type figure above — without you exporting a spreadsheet.
Every write action he takes is approval-gated, so you stay in control, and he can deliver the resulting profit reports straight to your Google Drive. If manually reconciling supplier invoices against orders is eating your month-end, put Victor on it.
To see how COGS sits inside the wider picture of margins, fees, and fulfillment costs, start with the hub on ecommerce ops economics.
FAQs
Do I debit or credit cost of goods sold?
You debit COGS. It's an expense account, and expenses increase with debits. The matching credit goes to your Inventory account, reducing it by the cost of what you sold. In a periodic system you may credit a Purchases account instead as part of the period-end adjustment.
When exactly should I record COGS?
It depends on your system. In a perpetual system you record it at the moment each order ships. In a periodic system you post one summary entry at the end of the month or quarter. For most POD stores, a monthly periodic entry that totals supplier invoices for shipped orders is the simplest accurate option.
Is shipping part of cost of goods sold?
The shipping your supplier charges to fulfill and deliver the unit is a direct production cost, so it belongs in COGS. Shipping you pay for returns, or marketing-driven "free shipping" promotions absorbed as a selling cost, are treated as overhead — keep them out of COGS.
Does ad spend go into COGS?
No. Advertising is a selling expense that sits below the gross-profit line, not a cost of producing the goods. Folding Meta or Google Ads spend into COGS overstates your gross margin and hides your real acquisition cost. Keep the two separate so per-order profit stays honest.
How do I record COGS when a POD order is refunded?
You reverse the sale's revenue, but you do not get the supplier cost back — a printed item can't be restocked. The COGS you already recorded stays as a real expense. Record the refund against revenue and leave the production cost booked, because that's money genuinely gone.
What's the Shopify chargeback fee I should account for?
Shopify Payments charges US merchants a $15 fee per chargeback, deducted immediately along with the disputed amount, and refunded only if you win the dispute, per chargeback.io. It's a separate operating cost, not part of COGS, but it compounds the unrecoverable production cost on any lost dispute.
Do POD stores need to track inventory for the COGS formula?
Rarely in any meaningful way. Because items are printed on demand, beginning and ending inventory are typically zero, so the beginning-plus-purchases-minus-ending formula reduces to "total supplier charges for units shipped." Your COGS is effectively your fulfillment invoices for the period.