COGS in ecommerce: what to include, what to exclude and the per-order calculation.
COGS in ecommerce is the true cost of putting one order in a customer's hands — product, freight in, packaging, and per-order fulfillment. Ads and Shopify fees are not COGS.
For ecommerce, COGS (Cost of Goods Sold) is the total variable cost of fulfilling one order — the product itself, the freight to get it to your warehouse, the packaging consumed per order, and the labour to pick-pack-ship it. Ad spend and Shopify processing fees are not COGS; they live elsewhere on the P&L. nouz takes a COGS snapshot at the moment of sale, so an order placed today is costed against today's landed unit cost — not whatever the cost happens to be next month when the supplier raises prices.
TL;DR
The definition, in shop-owner English
COGS is the cost that exists only because the sale exists. If you sold one fewer unit this month, your product cost drops by one unit, your inbound freight drops by the per-unit share, your packaging drops by one mailer, and your fulfillment labour drops by the minutes that order would have taken. Everything else — rent, salaries, ads, software — stays the same. The four items above are COGS. Everything else is something else.
The clean test: if the order had not happened, would I have spent this money? Yes → not COGS. No → COGS. Ad spend would still have been spent (you ran the ad before the sale). Shopify's monthly subscription would still have been paid. Rent would still have been paid. None of those are COGS for that order.
The formula and what to include
COGS per order = Product unit cost + Inbound freight + Packaging + Per-order fulfillment labour
Include:
- Product unit cost — what you paid the manufacturer or supplier for one unit, plus any tariffs or duties.
- Inbound freight — shipping from supplier to your warehouse, divided per unit.
- Packaging consumed per order — mailer, box, void fill, tissue, stickers, thank-you card.
- Per-order fulfillment labour — the human (or 3PL pick-pack fee) cost of getting that order out the door.
Exclude:
- Ad spend — that is variable marketing cost, tracked separately for CAC.
- Shopify subscription fees — fixed software cost.
- Card processing fees — variable payment cost, not COGS.
- Warehouse rent — fixed cost, allocated separately.
- Salaries (non-fulfillment) — operating expense, not COGS.
The reason the split matters: gross margin is computed as (Net revenue − COGS) ÷ Net revenue. If you stuff non-COGS items into COGS, gross margin drops and EBIT looks better than it should. If you leave true COGS items out (like packaging or freight), gross margin looks higher than reality.
Worked example: €29,50 per €60 order
A small DTC accessories brand selling a €60 leather wallet:
| Component | Cost | Note |
|---|---|---|
| Product unit cost | €25,00 | Supplier invoice |
| Inbound freight | €1,50 | Sea freight allocated per unit |
| Packaging | €1,00 | Mailer + tissue + thank-you card |
| Per-order fulfillment labour | €2,00 | 3PL pick-pack-ship fee |
| True COGS per order | €29,50 | |
| Order value (net of VAT) | €50,00 | €60 gross ÷ 1,20 VAT |
| Gross profit per order | €20,50 | €50,00 − €29,50 |
| Gross margin % | 41% | €20,50 ÷ €50,00 |
Now compare to the version most brands use, where COGS is just the product cost:
| Component | Cost | Note |
|---|---|---|
| "COGS" (product only) | €25,00 | Wrong |
| Order value (net) | €50,00 | |
| Apparent gross profit | €25,00 | |
| Apparent gross margin % | 50% | 9 points overstated |
The product-only version overstates gross margin by 9 percentage points. Plug that into a CLV calculation and customer value comes out 22% too high. Plug it into break-even AOV and you set a free-shipping threshold €8 too low. The pricing decisions, the channel-spend decisions, the bundle decisions all anchor on a number that does not match the bank.
Benchmarks and gross margin targets
| DTC vertical | Healthy gross margin % | Notes |
|---|---|---|
| Apparel | 55-70% | Higher with own-brand manufacturing |
| Beauty / skincare | 65-80% | Highest of any DTC vertical |
| Homewares | 50-65% | Freight is a bigger COGS line |
| Food / beverage | 35-55% | Tight margins, packaging-heavy |
| Accessories (leather, jewellery) | 50-65% | Wide range based on material cost |
These benchmarks assume fully-loaded COGS — product, freight, packaging, and fulfillment labour. A brand reporting 70% margin in apparel using product-only COGS is probably actually at 55-60% on a fully-loaded basis. The difference is exactly the gap between "looks profitable" and "is profitable."
Why getting COGS wrong silently kills margin
COGS is the input to almost every other unit-economics number: gross margin, CLV, break-even AOV, contribution margin, ROAS judgment. Get COGS wrong by 9 points and every downstream metric is wrong by a corresponding amount.
The most common COGS mistakes in small ecommerce:
- Forgetting inbound freight, especially when ordering from overseas.
- Underestimating packaging — a custom mailer + tissue + insert easily runs €1-€2 per order.
- Ignoring fulfillment labour when the founder still picks-and-packs orders themselves.
- Using old supplier prices from six months ago instead of the latest invoice.
- Stuffing ad spend into COGS — that compresses gross margin and inflates EBIT.
Related concepts:
- COGS snapshot explained — why nouz freezes COGS at order time.
- True profit per order on Shopify — the full per-order calculation.
- The Shopify profitability guide — how COGS fits into the full daily P&L.
FAQ
Are Shopify fees part of COGS?
No. Shopify's payment processing fees and platform subscription are not COGS — they are payment processing and software costs respectively. Card processing fees should sit in their own line on the P&L (a deduction from gross revenue to get to net revenue), and the Shopify subscription is a fixed operating expense.
Is ad spend part of COGS?
No. Ad spend is variable marketing cost, tracked separately as part of CAC. Bundling ad spend into COGS makes gross margin look artificially low and inflates EBIT, which produces wildly misleading unit economics. Keep COGS strictly to product + freight + packaging + per-order fulfillment.
Should I include returns processing labour in COGS?
For a daily P&L view, returns processing is typically tracked as a negative against revenue (refunds) plus a returns-handling cost line. Some shops fold it into COGS as a per-return cost. Both are defensible; consistency matters more than which side it sits on. The wrong answer is to ignore it.
How often should I update my COGS numbers?
On every supplier invoice. nouz uses a COGS snapshot — the cost is fixed at the moment of sale, so today's order is costed at today's landed unit cost. When the next supplier shipment arrives at a higher cost, new orders use the new cost; old orders stay at their original cost. That preserves historical margin accuracy.