The Shopify Margin Myth
Every e-commerce founder has experienced this: you log into Shopify, check your product analytics, and see healthy margins. Your best-selling product has a $20 wholesale cost and a $65 retail price. Shopify reports a 69% margin. You feel good about the business.
Then you check your bank account, or worse, your P&L. The profit is a fraction of what those margins suggest. Somewhere between the factory and the customer's doorstep, 20 to 30 percentage points of margin evaporated.
The problem is not that Shopify is lying to you. It is that Shopify only knows what you told it. You entered a product cost of $20, and it calculated margin based on that single input. It does not know about the $4.50 in inbound freight per unit, the $2.80 in customs duties, the $1.20 in branded packaging, the $0.75 in prep and labeling fees, the $3.00 in pick-pack-ship fulfillment costs, or the fact that 15% of orders come back as returns, each costing $8 to process.
When you stack all of those costs on top of the $20 wholesale price, your true cost per unit sold is closer to $36. Your real margin is not 69%. It is 44%. And that is before you account for payment processing, advertising, and platform fees.
The Seven Layers of True COGS
Layer 1: Wholesale Product Cost
This is the starting point and usually the only cost e-commerce brands track accurately. It is the price you pay your manufacturer or supplier for the product itself, typically on a per-unit basis. For brands that manufacture their own products, this is the bill of materials plus direct production labor.
Even here, there are nuances. If your manufacturer offers volume discounts at different MOQ (minimum order quantity) tiers, your per-unit cost depends on how much you order. If you order 500 units at $22 each instead of 1,000 units at $20 each because you lack the cash to place the larger order, your actual product cost is $22, not the $20 you used in your pricing model.
Layer 2: Inbound Freight
Getting the product from the manufacturer to your warehouse (or your 3PL) costs money. For domestically sourced products, inbound freight might be $1 to $3 per unit via LTL (less-than-truckload) shipping. For products sourced from Asia, inbound freight includes ocean freight, drayage (trucking from port to warehouse), and potentially air freight for rush orders.
Ocean freight costs are highly volatile. A container that cost $3,500 to ship from Shenzhen to Los Angeles in early 2020 cost over $15,000 at the peak of the supply chain crisis. Even in normalized markets, ocean freight fluctuates based on fuel surcharges, demand, and carrier capacity.
Calculate your inbound freight cost per unit by dividing the total shipping cost of each purchase order by the number of units in that shipment. Include customs brokerage fees in this calculation.
Layer 3: Customs Duties and Tariffs
If you import products, you pay duties based on the product's HTS (Harmonized Tariff Schedule) classification. Duty rates vary widely by product category, from 0% to over 25%. Section 301 tariffs on goods from China add additional layers of cost that change with trade policy.
Many e-commerce brands either ignore duties in their COGS calculation or apply a rough estimate. Neither approach is acceptable. Your customs broker provides detailed duty statements for each shipment. Use the actual duty paid, allocated per unit, as a cost layer in your landed cost calculation.
Layer 4: Packaging and Inserts
Branded packaging (custom boxes, tissue paper, stickers, thank-you cards, inserts) is a marketing expense disguised as a product cost. It is a real cost that goes into every unit shipped and should be included in COGS.
Calculate the per-unit packaging cost by summing the cost of all packaging components for a standard order. If your branded box costs $1.80, the tissue paper is $0.30, and the insert card is $0.15, your packaging cost per unit is $2.25.
Layer 5: Labeling and Prep Fees
If your 3PL (or your in-house team) applies labels, barcodes, hang tags, or performs any prep work before the product is shelf-ready, that labor and material cost belongs in COGS. 3PLs typically charge $0.25 to $1.00 per unit for labeling and prep services. If you do it in-house, calculate the labor cost per unit based on the time required.
For brands selling on Amazon FBA, prep fees include poly-bagging, bubble-wrapping, labeling with FNSKU barcodes, and any other requirements specified by Amazon's prep guidelines. These fees are real costs of making the product sellable on the platform.
Layer 6: Warehousing
Storing inventory costs money, whether you use a 3PL, rent your own warehouse, or stack boxes in your garage. 3PLs charge storage fees on a per-pallet, per-shelf, or per-cubic-foot basis, typically billed monthly. Amazon FBA charges monthly storage fees that increase dramatically during Q4 (October through December).
Allocate warehousing costs to individual SKUs based on the space each SKU occupies and the duration it is stored. A bulky product that sits in the warehouse for 90 days before selling consumes significantly more warehousing cost per unit than a compact product that turns over in 15 days.
Layer 7: Return Processing
Returns are the hidden margin killer of e-commerce. The average return rate across e-commerce is 15% to 30% depending on the category (apparel is at the high end; consumables are at the low end). Each return generates costs: inbound return shipping (if you offer free returns), inspection labor, repackaging (if the item can be resold), restocking, and disposal or liquidation (if it cannot).
A return that costs $8 to process on a product with a $20 wholesale cost effectively increases the average cost of goods sold for that SKU. If your return rate is 20%, one in five units sold generates a return cost. Spread that $8 return cost across five units, and it adds $1.60 per unit sold to your effective COGS.
Calculating Landed Cost Per SKU
Landed cost is the sum of all seven layers above, expressed on a per-unit basis. Here is a worked example for a product sourced from China:
Wholesale product cost: $20.00. Inbound freight (ocean + drayage, allocated per unit): $4.50. Customs duties (8% on declared value): $1.60. Packaging: $2.25. Labeling and prep: $0.50. Warehousing (allocated based on 45-day average inventory hold): $1.20. Return processing (20% return rate, $8 per return, allocated across all units): $1.60. Total landed cost: $31.65.
At a $65 retail price, the true gross margin is ($65 minus $31.65) / $65 = 51.3%. This is significantly different from the 69% margin that Shopify would report.
From Gross Margin to Contribution Margin
Landed cost tells you how much it costs to get a product ready to sell. But it does not tell you whether the product is profitable once you account for the variable costs of selling it.
Contribution margin subtracts variable selling costs from gross profit. These variable costs include payment processing fees (typically 2.9% plus $0.30 per transaction for Shopify Payments, or 15% referral fee for Amazon), outbound shipping costs (either absorbed by the brand or partially offset by shipping charges to the customer), advertising cost per unit (total ad spend allocated by SKU or by channel), and marketplace fees (Amazon FBA fulfillment fees, Shopify transaction fees, etc.).
Using our example at a $65 price point: landed cost of $31.65 produces a gross profit of $33.35. Subtract payment processing ($2.19), outbound shipping ($5.50), allocated advertising cost ($8.00 per unit acquired), and the contribution margin is $17.66, or 27.2% of revenue.
That 27.2% is what actually pays for your overhead (team salaries, software subscriptions, office costs, insurance) and generates profit. If your overhead runs $30,000 per month, you need to sell approximately 1,700 units per month at this contribution margin to break even.
The SKU Profitability Audit
Most e-commerce brands have never performed a SKU-level profitability analysis using true landed costs. When they do, the results are often surprising.
Step 1: Calculate the landed cost for every SKU in your catalog, using actual costs from your most recent purchase orders, freight invoices, duty statements, and 3PL invoices.
Step 2: Calculate the contribution margin for every SKU, subtracting variable selling costs from the gross profit.
Step 3: Rank SKUs by contribution margin percentage and by total contribution dollars.
Step 4: Identify the unprofitable SKUs. These are SKUs where the contribution margin is negative or negligible, meaning they do not cover their variable costs. They are losing money on every unit sold.
In our experience, 20% to 30% of a typical e-commerce catalog is unprofitable once all cost layers are included. These are often products with high return rates, high advertising costs, low selling prices, or excessive warehousing costs due to slow turns.
The decision for unprofitable SKUs is straightforward: raise the price, reduce costs (negotiate better freight, switch to cheaper packaging, find a domestic supplier to eliminate duties), or discontinue the product. Selling more of an unprofitable product does not make it profitable. It makes you more unprofitable, faster.
Keeping Landed Costs Current
Landed costs are not static. Freight rates fluctuate with fuel prices and carrier capacity. Duties change with trade policy. Packaging costs rise with paper and resin prices. Return rates shift with product design changes and seasonal patterns.
Recalculate your landed cost per SKU quarterly. Compare the new calculation to the prior quarter and investigate any significant changes. If your landed cost on a key SKU increased by $3 per unit over the past six months, your pricing, advertising budget, and inventory strategy all need to be reassessed.
Build a landed cost tracker (spreadsheet or integrated into your inventory management system) that pulls from actual supplier invoices, freight bills, and duty statements rather than estimates. The more accurate your cost data, the more accurate your pricing and profitability decisions.