What "COGS on returns" actually means
Cost of goods sold is the direct cost of the units you actually sold in a period. A return breaks that "actually sold" assumption. The customer sent the product back, so the sale reverses — and the cost tied to that sale has to reverse with it.
In bookkeeping terms, a refund is a contra-revenue entry (it reduces revenue), and the matching COGS reversal is a contra-COGS entry (it reduces cost). Both sides move together so your margin stays honest. If you only reverse the revenue and forget the cost, your gross profit looks worse than reality. If you reverse neither, your margin looks better than reality.
The standard periodic formula still holds: COGS equals beginning inventory plus purchases minus ending inventory. Returns just feed into that math through inventory and through direct per-order costs. Our full ecommerce P&L guide walks the whole statement top to bottom if you want the wider picture.
Where returns hit the P&L
A single returned order can touch four different lines. Keeping them separate is what makes the books reconcile.
- Revenue goes down via the returns/refunds line (contra-revenue). This is not an expense; it reduces your top line.
- COGS goes down by that unit's direct cost — but only if the goods are recovered or the cost is genuinely no longer yours.
- Inventory goes up if the item is resellable and you actually restock it.
- Fees usually stay put. The original payment processing fee is generally not refunded to you when you refund the customer, according to A2X's guide to Shopify fees.
That last point is the quiet one. A refunded order costs you the processing fee even though you kept none of the sale, so a return is never fully "free" to reverse.
The two return scenarios, and why they differ
Not every return reduces COGS the same amount. It depends on what happens to the physical goods.
Scenario 1: resellable return (traditional inventory)
You hold stock, a customer returns a shirt in perfect condition, and you put it back on the shelf. Here the full unit cost comes out of COGS and goes back into inventory. Your COGS for the period drops by that unit cost, and you can sell the item again with no new production cost.
Scenario 2: print-on-demand or destroyed goods
For print-on-demand (POD), the economics flip. Your supplier already produced and shipped the item, so you already paid the production cost. If a POD customer returns the product, you usually cannot resell a custom-printed item, and the supplier does not refund your production charge.
So the cost does not "come back." You still refund the customer, you still eat the supplier charge, and you often eat the return shipping too. The COGS does not reverse — it converts into a pure loss on that order. This is why POD returns hurt margin far more than a returned unit of stocked inventory.
A worked example: stocked inventory
Say you sell a $40 mug that costs you $9 landed. In March you sell 200 mugs and 12 come back resellable.
- Gross COGS booked: 200 × $9 = $1,800
- Returns recovered to inventory: 12 × $9 = $108
- Net COGS for March: $1,800 − $108 = $1,692
Your net units sold are 188 (200 − 12), and 188 × $9 = $1,692. The two methods tie out, which is the check you want. The 12 returned mugs are back in inventory ready to resell, so their cost simply left the period rather than vanishing.
A worked example: print-on-demand returns
Now say you sell a $32 POD t-shirt. Your supplier charges $12 to produce and ship it, and Shopify Payments takes roughly 2.9% plus 30 cents per online transaction, a rate A2X documents for lower-tier plans (verify your own plan's rate on Shopify's pricing page). You sell 300 shirts and 9 are returned as non-resellable.
Per healthy order, the math is straightforward:
- Revenue: $32.00
- Processing fee: $32 × 2.9% + $0.30 = $1.23
- Supplier production and shipping: $12.00
- Contribution before ads and overhead: $32 − $1.23 − $12 = $18.77
Now the 9 returns. You refund $32 each, the supplier keeps the $12 production charge, and the original processing fee is not returned:
- Refunds (contra-revenue): 9 × $32 = $288 off the top line
- Supplier cost you cannot recover: 9 × $12 = $108 stuck in COGS
- Processing fees kept by the processor: 9 × $1.23 = $11.07
So nine returns wipe out roughly $18.77 × 9 = $168.93 of contribution you would have earned, plus they drag $108 of unrecoverable production cost and $11.07 of dead fees across the finish line. Unlike the mug example, none of that $108 goes back into inventory — there is nothing to restock. That gap between "COGS reverses" and "COGS becomes a loss" is the single most important thing to model for POD.
Why Shopify's built-in field won't do this for you
Shopify has a "Cost per item" field on each product, and its reports can multiply that by units sold. But that field only tracks the number you type in — typically the base product cost. It does not include supplier shipping, payment processing, packaging, or return handling, and it does not automatically reverse cost when an order is refunded.
That means the COGS figure in a raw Shopify report is a starting point, not a finished number. To get true cost of goods sold you have to layer in fees and returns yourself, either in a spreadsheet, in accounting software, or with a tool that connects the data for you. If you are moving your books into accounting software, our rundown of Shopify-to-QuickBooks COGS integration options covers how the sync approaches differ.
Don't forget the resale-certificate angle
For POD sellers there is a related cost leak worth fixing while you are cleaning up COGS. If you have not filed a valid resale certificate with your supplier, they charge you sales tax on every production order — and you already collect sales tax from your own customer, so you pay it twice.
Both major suppliers let you submit one; the Printful resale certificate process reviews it in about two business days, and there is a similar path if you need a Printify resale certificate instead. Getting this right lowers the supplier charge that flows straight into your COGS. This is general information, not tax advice. Rules change and vary by situation — consult a licensed CPA or tax professional before acting.
From COGS to true per-order profit
Reversing COGS on returns gets your gross margin honest. But margin is not profit. Once you add ad spend, subscriptions, and the fees that returns leave behind, the per-order picture can look very different from the tidy $18.77 contribution above.
That is the gap PodVector is built to close. It connects Shopify, Meta Ads, Google Ads, Printify, and Printful, then computes true per-order profit — refunds, supplier charges, processing fees, and ad cost included, not just the base product cost Shopify stores. Victor, its AI operator, reads that live data and can propose Shopify-side moves for you to approve; he reads your ad data but does not touch your ad account. It is not a dashboard you have to babysit — the point is to see what each order actually earned after a return takes its bite.
FAQs
Do product returns reduce cost of goods sold?
Yes, when the goods are recovered. If a returned item is resellable and you restock it, you reverse that unit's cost out of COGS for the period and add it back to inventory. If the item cannot be resold — common with custom print-on-demand goods — the cost stays in COGS and becomes a loss on that order because you already paid your supplier to make it.
What is contra-COGS on Shopify?
Contra-COGS is the adjustment entry that reduces cost of goods sold to account for returns, allowances, or supplier credits. It mirrors contra-revenue, which reduces your sales line for the same refund. Booking both together keeps your gross margin accurate: the sale reverses and the matching cost reverses in the same period.
Does Shopify automatically adjust COGS when I issue a refund?
No. Shopify's "Cost per item" field stores a single cost number and its reports multiply it by units. It does not reverse cost on a refund, and it does not include shipping, processing fees, or return handling. You have to reconcile returns yourself in a spreadsheet, in accounting software, or with a connected profit tool.
Do I get my payment processing fee back on a refund?
Generally no. Per A2X, the original processing fee is typically not returned when you refund a customer. So a refunded order still costs you that fee even though you kept none of the sale — track the refund as contra-revenue and leave the already-recorded fee in place.
How is COGS on returns different for print-on-demand versus stocked inventory?
With stocked inventory, a resellable return puts the unit cost back into inventory, so COGS simply drops. With print-on-demand, the supplier already produced and shipped the item and does not refund the production charge, and you usually cannot resell a custom item. The cost does not return to inventory — it converts into a direct loss on that order.
Where do returns show up on my P&L?
Refunds reduce revenue through a returns/refunds contra-revenue line near the top of the statement. Any recovered product cost reduces COGS just below it. Fees that were not refunded stay in place. For the full line-by-line layout, see the ecommerce P&L guide, and if you are sorting out tax forms, our note on where to find your 1099 on Shopify may help.