Cost of Goods Sold — COGS — is the most undercounted number in Shopify P&Ls. Operators see "COGS" in their accounting tool, type in what their supplier charged them per unit, and move on. That number is wrong. Often dramatically wrong. And it's wrong in the direction that makes your business look more profitable than it actually is.
This guide walks through what COGS actually means, the four costs every Shopify operator misses, how to handle volume-tier supplier breaks, and the right way to track it without spending three hours per week on a spreadsheet.
What COGS is, in plain English
COGS is the total direct cost of producing and delivering the products you sold during a period. It doesn't include marketing, salaries, rent, software, or anything that doesn't scale 1:1 with units sold. It does include everything that does scale with units sold.
The simplest formula:
Note
Most operators stop at "product cost × units" and call it a day. That's the version that under-states COGS by 30-40% on average. Here's what gets missed.
The five things almost everyone misses
1. Inbound shipping (your supplier → your warehouse)
When your supplier ships you a pallet of inventory, that shipping cost is part of COGS — not a "shipping expense". Distribute it across the units in the pallet. If 1,000 units arrive on a $1,200 freight bill, that's $1.20 per unit added to your true cost.
For dropshippers using AliExpress or CJ, the supplier shipping to the customer is part of the per-unit cost they quote you, but customs delays and re-routing fees often aren't. Track those separately.
2. Duties & tariffs
Anything imported across an international border has duty rates that vary by HS code and country of origin. A $10 product from China can carry $1.50-$3.50 of duties depending on category. If you're drop-shipping from China to a US customer, the customer pays via DDP — but if you're importing in bulk, you pay, and that goes into COGS.
2025-2026 reminder
3. Packaging & insert costs
The branded box, the tissue paper, the thank-you card, the sample sachet, the silica packet, the shipping label, the void fill. Add it all up — most DTC brands run $1.50-$4.00 of pure packaging cost per order before the product even goes in.
This is one of the biggest leaks in operator P&Ls. Operators see packaging as "marketing" or "brand experience" and don't put it in COGS. But every additional unit shipped requires more of it. By definition, that's COGS.
4. Supplier volume-tier breaks
Most factories quote you a tiered price: $8.50 at MOQ 500, $7.20 at 1,000, $6.40 at 2,500, $5.80 at 5,000+. Operators often just record "$8.50/unit" and call it a day, even when they're ordering at the 1,000-unit tier. Or worse, they record "$5.80" because that's the lowest tier — even though they only hit it once a year.
The right approach: record the cost at the tier you actually ordered. If you blend tiers across the year, weight by units. Most ecommerce dashboards (including BeProfit and Triple Whale) force a single COGS number per SKU, which loses this nuance entirely.
Tiered COGS in practice
5. Supplier-side transaction fees
AliExpress takes a percentage. CJ Dropshipping takes a percentage. Wire fees from international suppliers add 1-3%. Stripe charges your supplier on bulk orders. None of these show up in your "supplier cost" line — they show up across multiple invoices and bank statements. Track them by adding 2-4% to your supplier-side cost as a "supplier handling" overlay.
A note on currency
Suppliers quote in their local currency. You sell in yours. If your supplier costs are in CNY (China) or EUR (Europe) and your store currency is USD, exchange-rate movement is part of your real COGS.
A 5% strengthening of the supplier currency against your sale currency means your effective COGS just rose 5% — even though your supplier didn't change their price. Most operators ignore this until annual reconciliation and then wonder where the 4% margin went. The right approach: convert at order time, log the rate, and reconcile against actuals quarterly.
Dropshipping vs stocked: different math, same principle
For dropshipping, COGS is mostly transparent — your supplier charges you per order, that's the cost. The leak is usually refund-driven (you eat the supplier cost on returns the customer doesn't ship back) and dispute-driven (chargebacks where you've already paid the supplier).
For stocked inventory, COGS is more complex but more controllable. The hidden cost is dead stock — inventory that doesn't sell at full price and gets marked down or written off. If 8% of your inventory turns into dead stock per year, your real COGS is 8% higher than your nominal COGS, distributed across the items that did sell.
For dropshippers specifically, our Dropshipping Profit Estimator bakes in refund-as-triple-loss and the supplier-side fees that most calculators skip. Worth a 60-second run with your real numbers.
A complete COGS formula for Shopify
Note
(supplier_cost × units, at the tier matching units)
+ per-unit inbound shipping (freight ÷ pallet units)
+ per-unit duties & tariffs
+ per-order packaging cost
+ supplier-side transaction fees (~2-4% overlay)
+ dead-stock allocation (annual write-off ÷ annual units sold)
+ currency-conversion adjustment (if multi-currency)
For most stocked DTC brands this lands 25-35% higher than the "supplier cost × units" number you probably have today. For dropshippers it's 10-20% higher because more of the cost is bundled into the per-order supplier charge.
How Ecom Forward handles this
Common questions
Does Shopify calculate COGS automatically?
Should COGS include packaging?
What's a healthy COGS percentage for ecommerce?
How often should I update COGS values?
Bottom line
COGS isn't "what your supplier charged you per unit". It's the full cost of producing and shipping the products you sold during the period — at the volume tier you actually ordered, in the currency you actually paid, with the packaging and duties and dead-stock realities baked in.
Get this right and your real margin is visible. Get it wrong and you're optimizing your business based on a fiction. Run your real COGS through the Profit Simulator and see how the contribution margin shifts when you switch from "supplier cost only" to fully-loaded COGS — most operators are surprised by 5-10 percentage points.