TL;DR
- Include in COGS: unit cost (landed, not ex-factory), inbound freight, import 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.
- 43% of small businesses track inventory manually, per 2025 industry data. Manual tracking produces an average inventory accuracy of 83%, meaning 17% of records contain errors that cascade into incorrect COGS.
- Use landed cost, not ex-factory price, as the unit-cost input. The supplier invoice is one input to landed cost, not a substitute for it.
- Refresh weekly, not annually. A 3-point margin drift on a $10M brand is $300,000 of contribution margin hiding in plain sight.
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 $300,000 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.
This distinction matters because COGS is the foundation of gross margin, and gross margin is the foundation of contribution margin. When COGS is wrong, every metric that sits on top of it is wrong too. ROAS looks healthy. Contribution margin looks positive. The operator scales spend. The business bleeds cash.
Why COGS accuracy matters now
The margin environment for DTC brands has tightened. According to 2025 industry data, 43% of small businesses still track inventory manually or not at all. Those that do track manually report an average inventory accuracy of 83%. That 17% gap in record accuracy translates directly into COGS errors: overstated inventory understates COGS, producing a falsely high gross margin. Understated inventory overstates COGS, making profitable SKUs look like losers.
The operators who catch these errors weekly protect margin. The operators who discover them at year-end write off surprises they could have prevented.
Three forces are making COGS harder to track accurately in 2026:
Supplier price volatility. Raw material costs, freight rates, and tariff schedules have moved faster in the past 24 months than in the prior decade. A PO placed in January can have a materially different landed cost than a PO placed in June for the same SKU.
Multichannel complexity. A brand selling on its own Shopify store, Amazon, and wholesale has three different fulfilment cost structures. The same SKU has a different all-in COGS on each channel. Blending them into one number hides the channel that is destroying profitability.
Return rate inflation. Apparel and footwear categories now see return rates of 20% to 40% on paid acquisition orders, per the National Retail Federation's 2024 returns report. A brand that does not build a returns reserve into COGS reports healthy margins in month one and discovers the damage in month three.
What to include in COGS: 8 line items
Here are the eight costs that belong in ecommerce COGS, in the order they are typically incurred from supplier to customer.
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% to 35% to ex-factory cost.
3. Import duties and tariffs
HS-code based duties, antidumping fees, and the de minimis and 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% to 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% to 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% to 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.
The rule is consistency, not creativity. If a cost is fixed, it stays out of COGS. If it is variable but unrelated to product delivery, it stays out too. Only costs that scale directly with units shipped and are necessary to get the product to the customer belong in COGS.
One common objection: "My accountant says advertising is part of COGS." Your accountant may be following a tax convention, not an operating convention. For tax purposes, some jurisdictions allow certain costs to be included in inventory valuation. For operating purposes, the question is different: does including this cost help you make better decisions about pricing, ad spend, and product mix? If the answer is no, keep it out of your operating COGS model. Run two views if needed: one for the tax return, one for the weekly operating review.
COGS benchmarks by product category
COGS as a percentage of revenue varies widely by category. A supplement brand with 65% gross margin has a very different COGS structure than an electronics brand at 25%. The table below shows typical COGS composition by category.
| Category | COGS % | Gross margin | Primary cost driver |
|---|---|---|---|
| Beauty and skincare | 30%–45% | 55%–70% | Premium formulations, packaging |
| Apparel and fashion | 45%–60% | 40%–55% | Returns (20%–40% rates) |
| Food and beverage | 50%–65% | 35%–50% | Shipping (weight, perishability) |
| Home and furniture | 55%–70% | 30%–45% | Fulfilment (bulky items) |
| Electronics and accessories | 55%–75% | 25%–45% | COGS and returns |
| Supplements and wellness | 25%–40% | 60%–75% | Ad spend (competitive category) |
| Pet products | 40%–55% | 45%–60% | Shipping (weight, subscription model) |
Use these ranges as a sanity check, not a target. A beauty brand with 80% gross margin is either in a premium niche with genuine pricing power, or its COGS is understated. A furniture brand with 20% gross margin is either operating at scale with supplier leverage, or its shipping costs are not fully captured.
Worked example: the $68 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 item | Per unit | Source |
|---|---|---|
| Unit cost (FOB) | $12.40 | Supplier PO |
| Inbound freight + insurance | $1.80 | Freight invoice, weight allocation |
| Import duties + tariffs | $0.95 | Customs broker entry summary |
| 3PL pick + pack | $2.10 | 3PL monthly invoice |
| Packaging + inserts | $0.85 | Mailer + insert amortised |
| Outbound shipping (net) | $5.20 | Carrier invoice minus $3 collected |
| Payment processing | $2.27 | 2.9% + $0.30 on $68 |
| Returns reserve (28% rate) | $8.40 | Refund + reverse shipping reserve |
| Total ecommerce COGS | $33.97 | Sum |
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. At 28% contribution margin, the brand needs 3.6x ROAS just to break even on the first order. The campaign that looked profitable was burning cash on every sale.
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
COGS is not a set-it-and-forget-it number. It drifts. Supplier prices change. Freight rates move. Tariff schedules update. Return rates shift by season. The operator who refreshes COGS once a year at tax time is flying blind for 11 months.
- 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.
The cadence above sounds demanding. It is. But the alternative is worse: discovering in December that your bestselling SKU has been unprofitable since March because the supplier raised prices in April and nobody updated the model. The operators who treat COGS as a living number, not a tax-time calculation, are the ones who scale with margin intact.
Common COGS mistakes that destroy margin
After reviewing COGS models for dozens of DTC brands, the same mistakes appear repeatedly. Here are the four most destructive.
Mistake 1: Using ex-factory price as unit cost. The supplier invoice shows $12.40. The real landed cost is $15.15 after freight and duties. The $2.75 gap is 22% of the stated cost. On a $10M revenue business, that gap alone is $275,000 of understated COGS.
Mistake 2: Ignoring the returns reserve. A brand with 30% return rate that does not reserve for returns reports 30% higher gross margin than reality. In month three, when the returns hit, the margin collapses. The operator who reserved correctly knew the truth in month one.
Mistake 3: Using blended averages across channels. The same SKU sold on Shopify, Amazon FBA, and wholesale has three different COGS profiles. Amazon FBA includes pick-and-pack and storage. Wholesale has no outbound shipping but includes a discount. Blending them into one number hides the channel that is profitable and the one that is not.
Mistake 4: Relying on rate cards instead of actual invoices. 3PL rate cards are starting points, not truths. Actual invoices include overages, storage surcharges, peak-season adjustments, and dimensional-weight corrections. The difference between rate card and invoice can be 10% to 20% of stated fulfilment cost.
How Fairview tracks ecommerce COGS automatically
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.
The connection layer normalises data across sources. Revenue in Stripe matches orders in Shopify. Ad spend in Meta Ads maps to the same campaigns that generated the orders. Cost data in QuickBooks or Xero is allocated to the SKU level, not kept at a rolled-up category. This matters because most brands have their revenue in one system, their costs in another, and their ad data in a third. Fairview reads from all three and produces one per-SKU COGS number.
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."
Fairview's Margin Intelligence calculates contribution margin by channel, campaign, and SKU. It pulls cost data from your accounting integration and applies attribution logic to allocate ad spend correctly. The result: you see profit per Meta campaign, per Google Ads keyword group, per product line. Not a blended number that hides the channel losing money.
The Weekly Operating Report arrives every Monday with revenue versus prior week, margin versus prior period, and the top 3 anomalies detected. The operator arrives at the Monday review already briefed, not building the report.
When Fairview detects a margin signal, the Next-Best Action Engine generates a specific recommendation. Not a generic alert. A named action: which campaign to review, which SKU to audit, which channel to rebalance. The action is assigned, not left to inference.
Fairview does not replace your e-commerce platform, your accounting tool, or your ad manager. It reads from all of them and produces one operating view. You spend Monday acting on your COGS, not assembling it.
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. If it stays flat when orders stop, exclude 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 to 30 percentage points of reserve.
- Track COGS by channel, not just by SKU. The same product has different economics on Shopify, Amazon, and wholesale.
- Refresh weekly, not annually. A 3-point margin drift on a $10M brand is $300,000 hiding in plain sight.
What should be excluded from ecommerce COGS?
Exclude advertising and paid media, warehouse rent and utilities, salaries for operations and marketing teams, and software subscriptions. These are operating expenses, not variable costs tied to units sold. Mixing them into COGS destroys the contribution margin signal and makes it impossible to tell whether a product is profitable or just subsidised by low overhead.
Is shipping included in COGS for ecommerce?
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, which is the carrier fee minus any shipping revenue collected from the customer, is the correct number to use, not the rate-card rate.
Are payment processing fees part of COGS?
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% to 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.
How often should an ecommerce brand update COGS?
Recalculate weighted-average landed cost per SKU weekly and whenever a new PO clears customs. Reconcile 3PL, packaging, and processing fees monthly against actual invoices, not rate cards. Rebuild the returns reserve quarterly using a rolling 90-day return rate. Annual-only refreshes miss the drift that accumulates between supplier quotes, freight rate changes, and tariff updates.