Commerce · Cluster 1 Spoke

COGS Tracking for Ecommerce: What to Include (and What to Leave Out)

Eight line items belong in ecommerce COGS. Four common ones do not. Here is the operator view, with a worked example per unit and a Monday-morning cadence that stops COGS from drifting.

SGBy Siddharth Gangal · Founder, Fairview · Updated April 12, 2026 · 11 min read
Ecommerce COGS tracking hero: six labeled cost slabs stacked into a tower totalling $18.70 per unit

TL;DR

  • Include in COGS: unit cost, inbound freight, duties, 3PL pick-and-pack, packaging, outbound shipping, payment processing fees, and a returns reserve.
  • Exclude from COGS: advertising, rent, salaries, software. These are operating expenses. Mixing them destroys your contribution margin signal.
  • Use landed cost, not ex-factory price, as the unit-cost input.
  • Refresh inputs monthly, recalculate weighted-average landed cost weekly, rebuild the returns reserve quarterly.
  • Fairview pulls Shopify, Stripe, QuickBooks, and 3PL data into one per-SKU COGS so the number stops drifting between year-ends.

Ecommerce COGS is the sum of every variable cost that moves with units sold. Get the line items right and contribution margin becomes a reliable number you can act on. Get them wrong and you will scale campaigns that are quietly losing money.

Most DTC brands under $20M revenue track COGS as a single percentage of revenue handed to the accountant at year-end. That gap between the real per-SKU cost and the annual estimate is where margin drift hides. A 3-point drift on a $10M business is $300k of contribution margin nobody on the team can find.

This is an operator's guide to what belongs in ecommerce COGS tracking, what does not, and the weekly habits that keep the number honest.

If you are trying to use COGS to diagnose where margin is leaking, start with our profit leak framework. Per-SKU COGS feeds directly into contribution margin by channel and into true ROAS, so the inputs below are the same ones those models need.

What is COGS in ecommerce?

Definition

Ecommerce COGS: the total variable cost of getting one unit from the supplier into the customer's hands. Includes landed cost, fulfilment, packaging, payment processing, and a returns reserve. Excludes anything that exists even when you do not ship a single order.

The test is simple. If you sell zero units next month, does the cost still get incurred? If yes, it is an operating expense, not COGS. If no, it belongs in COGS.

What to include in COGS: 8 line items

COGS tracking ecommerce checklist: 8 line items to include versus 4 common mistakes to exclude
If it scales with units, it belongs in COGS. If it stays flat when orders stop, it does not.

1. Unit cost (ex-factory)

The price the supplier charges per unit on the PO. For private-label brands this is the FOB price. Pull it from the most recent PO, not an average across the year, because raw-material and tariff moves happen between orders.

2. Inbound freight and insurance

Ocean or air freight from the supplier to your warehouse, plus marine insurance. Allocate freight across the units on the shipment by weight or volume, whichever the carrier invoices on. For air-freighted SKUs this can add 18–35% to ex-factory cost.

3. Import duties and tariffs

HS-code based duties, antidumping fees, and the de minimis / Section 301 layer for US imports from China. US Customs publishes the active Section 301 schedule which operators should reread before every quarterly PO, since rates change.

4. 3PL pick-and-pack plus receiving

The per-order fulfilment fee, plus any per-unit receiving or put-away fee the 3PL charges on inbound pallets. Do not forget long-term storage surcharges on slow-moving SKUs. Pull these from the 3PL's monthly invoice, not the rate card.

5. Packaging and inserts

Mailers, boxes, tape, void fill, thank-you cards, and any SKU-specific inserts. Packaging runs 1–4% of revenue for most DTC brands and gets ignored because it is ordered months apart in bulk. Amortise the purchase price over the units it will pack.

6. Outbound shipping (to customer)

The carrier fee to deliver the order, minus any shipping revenue collected from the customer. If you offer free shipping above a threshold, this is the number most commonly understated because teams use the rate-card price, not the 3PL-negotiated price.

7. Payment processing fees

Stripe, Shopify Payments, PayPal, Affirm, or Klarna fees per order. Stripe is 2.9% plus $0.30 on US cards; BNPL runs 4–6%. Pull from the processor fee export, not an estimate.

8. Returns reserve and reverse logistics

A per-unit reserve for the expected return rate, plus the cost of the return label, restocking labour, and any refurbishment. Apparel and footwear run 20–40% return rates on paid acquisition, per the National Retail Federation's 2024 returns report. A reserve stops the P&L from looking healthy in month one and then hemorrhaging in month three.

Key insight

Landed cost, not ex-factory price, is the unit-cost input. The supplier invoice is one input to landed cost, not a substitute for it.

What to leave out of COGS

These costs are real and they hit the P&L, but they are not COGS. Keeping them separate is what lets contribution margin tell you anything useful.

  • Paid advertising. CAC, not COGS. Rolling ads into COGS hides your acquisition efficiency inside your product economics.
  • Warehouse rent, lease, utilities. Fixed cost. Whether you ship 500 orders or 5,000, the rent is the same.
  • Salaries (ops, marketing, support). OpEx. Frontline warehouse labour is usually priced through the 3PL invoice, which is already in line 4.
  • Software (Shopify, Klaviyo, email). OpEx.
  • Influencer fees and sponsorships. Usually CAC. The exception is pay-per-sale affiliate commissions, which are variable and do belong in COGS.

Worked example: the $34 apparel SKU

A DTC apparel brand sells a $68 retail tee. The supplier invoice says $12.40 ex-factory. The team uses $12.40 as COGS, declares 82% gross margin, and approves a Meta campaign with a 2.0x blended ROAS target.

Here is the real landed and delivered COGS on that tee:

Line itemPer unitSource
Unit cost (FOB)$12.40Supplier PO
Inbound freight + insurance$1.80Freight invoice, weight allocation
Import duties + tariffs$0.95Customs broker entry summary
3PL pick + pack$2.103PL monthly invoice
Packaging + inserts$0.85Mailer + insert amortised
Outbound shipping (net)$5.20Carrier invoice minus $3 collected
Payment processing$2.272.9% + $0.30 on $68
Returns reserve (28% rate)$8.40Refund + reverse shipping reserve
Total ecommerce COGS$33.97Sum

Real gross margin on the $68 tee: 50%, not 82%. Contribution margin after a 22% blended CAC drops to 28%. A 2.0x ROAS target that looked comfortable in the old model is now below break-even (2.5x needed at 40% margin; 3.6x at 28%).

Quote-ready

A 32-point gross-margin overstatement is not a rounding error. It is the difference between scaling an ad campaign and starting a margin fire.

How often to refresh COGS

Weekly cadence: Monday review, Tuesday adjustments, Friday reconciliation, applied to COGS tracking
Annual refreshes miss the drift; the Monday cadence catches it in seven days.
  • Weekly: recalculate weighted-average landed cost per SKU using the most recent PO plus freight and duty invoices that landed that week.
  • Monthly: reconcile 3PL charges, packaging, and processing fees from actual invoices (not rate cards).
  • Quarterly: rebuild the returns reserve on a rolling 90-day return rate per category; update any FX assumptions.
  • Per PO: re-price every SKU on the PO the day it clears customs, so the next week's margin reports use the new cost.

How Fairview tracks ecommerce COGS automatically

Fairview operating dashboard showing per-SKU ecommerce COGS broken into landed cost, fulfilment, fees, and returns reserve
Per-SKU COGS built from Shopify, Stripe, 3PL, and customs-entry data in one model.

Fairview connects to Shopify, Stripe, QuickBooks, Xero, and the major ad platforms via native OAuth, then pulls PO and freight data from accounting. Once connected, the operating view rebuilds per-SKU landed cost weekly, fulfilment and processing costs daily, and returns reserves quarterly.

When a SKU's landed cost drifts more than 5% against the last period, Fairview surfaces it in the Monday operating report — not a dashboard to interpret, a sentence: “SKU TEE-003 landed cost rose from $14.20 to $15.85 after the April PO cleared customs. Current retail pricing implies a 4-point margin drop. Review price or supplier terms.”

See pricing and tiers for the plan that fits your stack.

8

COGS line items tracked per SKU

Weekly

Landed-cost refresh cadence

5%

Drift threshold that triggers an alert

Key takeaways

  • Ecommerce COGS is the variable cost of delivering a unit. If it scales with orders, include it.
  • Use landed cost (FOB + freight + duties + receiving), not supplier invoice price, as the unit-cost input.
  • Keep advertising, rent, salaries, and software out of COGS. They are OpEx and they distort contribution margin if mixed in.
  • Build a returns reserve per category. Apparel and footwear need 15–30 percentage points of reserve.
  • Refresh weekly, not annually. A 3-point margin drift on a $10M brand is $300k hiding in plain sight.

Get per-SKU ecommerce COGS, automatically.

Connect Shopify, Stripe, and your accounting tool. Fairview rebuilds landed cost per SKU and flags every margin drift within 7 days of the PO clearing. 14-day trial, no card.

Book a demoStart free trial

Frequently asked questions

Include every cost that scales with units sold: unit cost ex-factory, inbound freight and insurance, import duties and tariffs, 3PL pick-and-pack fees, packaging and inserts, outbound shipping, payment processing fees, and a returns reserve. Together these make the all-in variable cost per order — which is what ecommerce COGS should measure.

Yes. Both inbound and outbound shipping belong in ecommerce COGS. Inbound freight is part of landed cost; outbound shipping is a direct cost of fulfilling the order. If either is missing, unit economics will look healthier than they are. Net outbound shipping (carrier fee minus shipping revenue collected) is the number to use, not the rate-card rate.

Yes. Stripe, Shopify Payments, PayPal, and BNPL fees are variable costs per order. They do not exist without the sale, so they belong in ecommerce COGS. Typical US card processing is 2.9% plus $0.30; BNPL runs 4–6%. On a low-AOV order, processing can reach 5% of revenue — material enough that rate-card estimates are not a substitute for the processor's fee export.

No. Advertising spend is customer acquisition cost (CAC), not COGS. CAC pays to bring a customer to the site; COGS pays to deliver the product once they buy. Rolling CAC into COGS collapses two separate unit-economics questions — how efficient is acquisition, and how profitable is the product — into a single blurry margin number that hides both signals.

Recalculate weighted-average landed cost per SKU weekly and whenever a new PO clears customs. Reconcile 3PL, packaging, and processing fees monthly against the actual invoice, not the rate card. Rebuild the returns reserve quarterly using a rolling 90-day return rate. Annual-only refreshes miss the drift that accumulates between supplier quotes.

Landed cost is the all-in cost of getting one unit into your warehouse, ready to sell. It is the supplier price plus inbound freight, insurance, import duties, and any receiving or inspection fees. Landed cost — not the ex-factory price on the supplier invoice — is the correct unit-cost input for ecommerce COGS. For brands that sell air-freighted SKUs, landed cost can be 20–40% higher than ex-factory.

Tags

COGSecommercelanded costunit economicsDTC

Keep reading

Related posts

Ready to see your data clearly?

Stop reporting on last week.
Start acting on this week.

10 minutes to connect. No SQL. No engineering team. Your first dashboard is built automatically.

No credit card required · Cancel anytime · Setup in under 10 minutes