Insights
Average CPG COGS by platform: what 10 public 10-Ks show about Shopify vs Amazon vs wholesale in 2026
COGS as a percent of revenue ranges from 26% on Shopify-led DTC to 67% on wholesale, based on 10 public CPG and DTC 10-K filings for 2026. The channel you sell through is the single biggest driver of your COGS rate, more than category or product type. If your COGS is higher than your peer set, the first question is whether you are comparing brands with the same channel mix.
Key Takeaways
- Shopify-led DTC and telehealth brands print 26 to 31 percent COGS in their FY2025 10-Ks. Hims and Hers (26.2%), e.l.f. Beauty (29.3%), Olaplex (30.6%). Full MSRP flows back to the seller, minus payment processing and pick-pack.
- Wholesale-dominant CPG prints 58 to 67 percent COGS. Edgewell (58.4%), Vita Coco (63.5%), BellRing (66.7%), Honest Company (66.7%). Retailer net pricing, trade spend, and freight allowances absorb 30+ points of gross profit margin versus the same product sold DTC.
- Amazon-mixed beverage lands at 49 to 50 percent COGS regardless of brand age. Celsius printed 49.6% in FY2025 (improved from 52.0% in FY2023). The improvement is Pepsi distribution scale, not channel mix.
- Honest Company is the rare DTC-to-retail re-pivot you can read in the 10-K. COGS went 70.6% (FY22) to 70.8% (FY23) to 61.8% (FY24) to 66.7% (FY25) as channel mix swung from ~58/42 retail/digital to ~67/33.
- Walmart's own COGS is 75.8 percent. When your wholesale-channel gross margin looks like 35%, the retailer is taking another 24 points before the consumer ever sees the price. Operators forget the retailer side of the margin pool.
Public CPG and DTC companies report cost of goods sold (COGS) as one consolidated line on the income statement, but inside that number sit three very different unit economics depending on where the SKU actually sold. We pulled the FY2025 10-Ks for 10 public consumer brands plus Walmart as a retailer benchmark to build the channel-level COGS read a private operator at $5M to $50M can hold up next to their own P&L.
The headline: Shopify-led DTC and telehealth brands print COGS in the 26 to 31 percent range. Wholesale-dominant CPG brands print 58 to 67 percent. Same product category, same fiscal year, 30 plus points of gross-margin difference driven by where the unit sold and which platform took its cut. ("Shopify-led DTC" is our operator framing, not a 10-K disclosure: public issuers report a consolidated DTC channel without naming the platform, and we map the DTC mix to Shopify when context supports it.)
What the 10 public 10-Ks actually say about COGS by channel
The dataset below is every 10-K we pulled from SEC EDGAR for fiscal year 2025 (some companies have December year-ends, others September, March, or January). The pattern across the 10 brands is consistent enough that the channel-mix grouping organizes the table better than category.
The data table below shows the underlying revenue and COGS figures behind the chart, ordered low-to-high COGS.
Company Ticker Channel mix Revenue (FY25 USD M) COGS (USD M) COGS % Gross margin % Hims and Hers HIMS Subscription DTC + own pharmacy 2,347.6 614.3 26.2% 73.8% e.l.f. Beauty ELF Mass retail + Amazon + DTC (FY26) 1,636.5 479.1 29.3% 70.7% Olaplex OLPX Pro hair + Sephora/Ulta + Amazon + DTC 423.0 129.3 30.6% 69.4% BARK BARK DTC subscription + retail (FY25 Mar) 484.2 182.2 37.6% 62.4% Grove Collaborative GROV DTC pivoting to retail 173.7 80.4 46.3% 53.7% Celsius CELH Wholesale beverage + Amazon 2,515.3 1,247.9 49.6% 50.4% Edgewell EPC Wholesale personal care 2,223.5 1,298.6 58.4% 41.6% Vita Coco COCO Wholesale beverage 609.8 387.2 63.5% 36.5% BellRing Brands BRBR Wholesale nutrition + Amazon 2,316.6 1,546.2 66.7% 33.3% Honest Company HNST 67% retail / 33% digital 371.3 247.6 66.7% 33.3% Walmart (retailer) WMT Pure retailer 706,413.0 535,395.0 75.8% 24.2%
Read the table top to bottom and you can almost watch the channel-mix slider move. The top three brands (Hims, ELF, Olaplex) all run a Shopify or owned-platform front door with a beauty or healthcare price point. The middle three (BARK, Grove, Celsius) are mixed DTC plus retail. The bottom four (Edgewell, Vita Coco, BellRing, Honest) sell predominantly through grocery, club, and mass retail where the wholesale discount eats the gross margin.
One number that does not fit the channel narrative: e.l.f. at 29.3% COGS with a heavy mass-retail mix (Walmart, Target, Ulta, Amazon). That is the high-water mark for the mass channel because ELF owns its manufacturing in China and runs a value-price-point construction, so the brand keeps a higher gross margin even at Walmart's wholesale discount. Most CPG operators do not have that lever.
Why Shopify DTC prints 70 percent plus gross margin while wholesale CPG prints 35 percent
Same product, three places to sell it, three completely different P&Ls. The chart below models a $30 CPG SKU with $9 of landed product cost and walks it through Shopify, Amazon FBA, and a wholesale sell-in to Target.
The retained gross profit per channel: $9.60 on Shopify, $7.50 on Amazon, $2.40 wholesale. The exact numbers will vary by category and brand, but the pattern is what matters.
Cost line Shopify DTC Amazon FBA Wholesale to Target Sell price (consumer or retailer) $30.00 $30.00 $13.50 Product COGS (30% of MSRP) $9.00 $9.00 $9.00 Payment processing (2.9% + $0.30) $1.20 $0.00 $0.00 Platform fees $1.50 (Shopify Plus) $4.50 (15% referral) $0.00 Fulfillment cost $4.20 (3PL pick-pack) $5.40 (FBA large-standard) $0.60 (freight allowance) Ad spend or trade spend $4.50 (15% TACoS) $3.60 (12% TACoS) $1.50 (5% net + slotting) Retained gross profit $9.60 $7.50 $2.40 Retained gross as percent of sell price 32% 25% 18%
The takeaway most operators miss: the wholesale row is not penalized by product cost. It is penalized by the wholesale ASP. When Target buys at $13.50 and resells at $30, the brand has already given away half the consumer price before any fees land. Channel COGS percent is mostly a pricing decision, not a cost decision.
On Shopify, the seller keeps the full MSRP minus payment processing, platform fee, fulfillment, and acquisition spend. On Amazon, the 15 percent referral and FBA fulfillment compress the retained gross by roughly 2 points versus Shopify. On wholesale, the discount itself drives the gap, and trade spend plus slotting add another 5 to 10 percent of net pricing on top.
The Honest Company case study: watching channel mix move COGS in real time
If you want to see channel mix move COGS within a single company, Honest is the cleanest example. Their disclosed retail-versus-digital mix moved from roughly 58/42 in FY2022 to 67/33 in FY2025, and the COGS line tracked it.
The FY2023 to FY2024 step-down from 70.8% to 61.8% COGS is the one to pay attention to. It is not a sudden retail-mix shift. It is the SKU rationalization Honest ran in late 2023 (cutting underperforming items, cleaning up promotional pricing on owned-digital). The FY2024 to FY2025 climb back to 66.7% is partly retail-mix growth and partly tougher trade terms with mass-retail accounts as Honest pushed harder into the channel.
For private operators, the pattern is the read. If your COGS line jumps 5 to 9 points year over year and your channel mix barely moved, look at SKU mix and promotional pricing first. If your COGS climbs 5 points and your retail mix grew from 40% to 60%, the channel is doing the moving and there is no operational fix on the product side.
How private CPG operators should benchmark their own COGS line
Use the public 10-K reads as anchors and then run the channel split on your own books. The recipe:
Pull your trailing 12-month P&L and tag every dollar of revenue by channel. The clean buckets for most $5M to $50M CPG brands: Shopify DTC, Amazon FBA, Amazon 1P (Vendor Central), Faire and other B2B marketplaces, brick-and-mortar wholesale (Target, Walmart, regional grocery), Costco and club, owned retail. Most ecommerce accounting tools (A2X, Synder, Webgility) can split Shopify and Amazon for you. For wholesale and retail you usually have to tag manually by customer.
Compute COGS as a percent of revenue inside each channel using receipt-level data, not the consolidated GL line. This is the step most operators skip because their chart of accounts books everything to one cost-of-sales line. The fix is a class or location dimension in QuickBooks (QBO) or Xero or NetSuite, which lets you carry the channel tag from revenue into COGS without changing the underlying accounts.
Compare each channel to the public benchmark band. Shopify-led DTC should land 25 to 40 percent COGS. Amazon FBA channel typically lands 25 to 40 percent at the COGS line if you book FBA fees in selling expense (or 40 to 55 percent if you book them as cost of sales, both are common). Wholesale and retail should land 55 to 70 percent COGS once the wholesale discount is in.
If a channel is more than 10 points outside the band, your channel is either overpriced (driving the COGS percent down artificially), under-fee-loaded (you are missing storage, returns, or PPC), or has an SKU-mix problem versus the benchmark set. Diagnose in that order.
The accounting trap most operators fall into
The single biggest mistake we see on $10M to $30M CPG P&Ls is blending Amazon channel economics into the same gross-margin line as Shopify. The result: a brand running 55 percent revenue through Amazon and 45 percent through Shopify reports a 65 percent gross margin that looks Shopify-clean, with the entire Amazon fee load buried in SG&A as "marketplace fees" or "fulfillment expense" or "ad spend."
That accounting is technically defensible under US GAAP. Public CPG and DTC issuers vary on where Amazon marketplace fees land (some inside cost of sales, some in SG&A as "fulfillment" or "selling expense"), and the 10-K itself rarely breaks the line out. Our 10-issuer set does not disclose a clean Amazon-versus-Shopify fee split for any single brand, which is why we triangulate to the channel-mix groupings in the table rather than quote per-issuer fee attribution. The practical read for a private operator: the leak hides in whichever line your auditor lets you book it to, and you have to look for it.
The fix is not to change your statutory accounting. The fix is to track channel-level unit contribution margin (revenue minus product COGS minus payment and platform fees minus fulfillment minus directly attributable ad spend) as the operating KPI you actually steer the business by. Gross margin tells your auditor a story. Channel contribution margin tells you which channel is profitable.
Channel COGS percent is mostly a pricing decision, not a cost decision. When Target buys at $13.50 and resells at $30, the brand gave away half the consumer price before any fees landed. Most operators look at their 38 percent wholesale gross margin and forget the retailer is taking another 24 points before the SKU crosses a checkout.
What to do this week if you run a $5M to $50M CPG brand
Three things.
Re-class one quarter of your P&L by channel. Pick Q1 2026 and tag every revenue and COGS dollar by channel using your accounting software's class or location feature. Most QBO instances need a one-time chart-of-accounts cleanup of 4 to 6 hours plus a Shopify or A2X sync that maps per-channel revenue automatically. You will know within a week whether your channel COGS bands match the public benchmark.
Compute channel contribution margin, not just gross margin. Pull payment fees, platform fees (referral, FBA), pick-pack, and directly attributable ad spend out of SG&A and into a channel-level contribution-margin line. Compare across channels. The channel with the lowest contribution margin is the one to negotiate first (Amazon PPC budget cut, wholesale price increase, 3PL renewal).
Stress-test a 10-point channel-mix swing. If your current mix is 60 percent Shopify, 30 percent Amazon, 10 percent wholesale, model what your COGS line and consolidated gross margin do at 40/30/30. The Honest Company case study suggests a 5 to 9 point COGS climb is the realistic range. That maps to a similar drop in consolidated gross margin, and you should know it before the first Target purchase order lands, not after.
For deeper reads on related CPG benchmarks, see our Amazon versus DTC margin gap teardown, the CPG lead-time benchmark, and the CPG stock-out rate benchmark.
Sources and methodology
Source. All 11 figures were taken from each company's most recent annual report filed with the SEC, using the reported revenue, cost-of-goods, and gross-profit lines, and cross-checked against each filing's income statement. CIKs: HIMS 1773751, ELF 1600033, OLPX 1868726, BARK 1819574, GROV 1841761, CELH 1341766, EPC 1096752, COCO 1482981, BRBR 1772016, HNST 1530979, WMT 104169.
Channel-mix attribution. The one-line channel mix in the table is an operator-friendly summary, not verbatim 10-K language. Most companies disclose "Direct-to-Consumer" versus "Retail" or "Domestic" versus "International" in their segment reporting, and we mapped that disclosure plus MD&A commentary to the Shopify versus Amazon versus wholesale framing this post uses. Honest Company is the only brand in the set that publishes a clean retail-versus-digital revenue split.
Honest Company time series. The four-year COGS series uses the same XBRL feed with the FY2022, FY2023, FY2024, and FY2025 10-K periods. Revenue and cost figures: FY22 $313.65M revenue / $221.34M COGS (70.6%); FY23 $344.37M / $243.83M (70.8%); FY24 $378.34M / $233.68M (61.8%); FY25 $371.32M / $247.56M (66.7%).
Walmart as retailer benchmark. Walmart's FY2026 ended January 31, 2026, so its 10-K covers a period overlapping the calendar-FY2025 issuers in the table. We used it as a retailer-side benchmark to show what gross margin a brand's wholesale partner is keeping after the brand sells in at roughly 50% off MSRP. Walmart's consolidated gross margin includes Sam's Club and international, so the US-only retail margin pool may differ by 100 to 200 bps either direction.
Unit-economics model (Chart 3 and Table 2). Illustrative, not financial-statement data. Assumes a $30 MSRP CPG SKU with $9 of landed product cost (30% COGS at MSRP), $13.50 wholesale sell-in (45% off MSRP), Shopify Plus pricing tier, Amazon US large-standard FBA fees per the January 2026 fee schedule (15% referral, $5.40 FBA fulfillment), 3PL pick-pack at $4.20 per unit (ShipBob and ShipHero 2025 rate cards), and TACoS of 12 to 15 percent for paid channels. Real brand numbers will vary by category (Amazon referral runs 8% on some grocery and 17% on select beauty), pack format, and individual brand 3PL terms.
Limitations. COGS line definitions vary across issuers. Some include warehousing, some do not. Some brands net trade spend at the revenue line (Vita Coco, BellRing) while others book it in SG&A (Honest Company), so the 33.3% gross margins at BRBR and HNST are not directly comparable without a 5 to 7 point trade-spend adjustment. Channel mix is point-in-time: ELF's mass mix today is different from its DTC-first mix in 2018, and HNST's mix has flipped DTC to retail since its IPO. Amazon-only or Shopify-only public comps are rare in CPG, which is why we triangulate to the closest available channel-mix proxy and disclose the limitation rather than overclaim a pure-play comp.
Update cadence. This benchmark is refreshed quarterly when new 10-Q and 10-K filings land. Next update target: August 2026 once Q2 2026 reports for the calendar-FYE issuers in the table come through EDGAR.
Frequently asked questions
what is a normal cogs as a percent of revenue for a cpg brand selling on shopify in 2026?
For Shopify-led DTC and subscription brands, healthy COGS lands in the 25 to 40 percent range, which yields a 60 to 75 percent gross margin. The public reads from FY2025: Hims and Hers at 26.2%, e.l.f. Beauty at 29.3%, Olaplex at 30.6%. Below 25% is unusual unless you own manufacturing or run a software-adjacent product. Above 45% on Shopify means either expensive inputs (cold chain, premium materials) or you are pricing too low for your unit cost.
how does amazon fba change my cogs line versus selling on shopify direct?
Same product COGS, different platform tax. The 15 percent referral fee plus FBA fulfillment (roughly $3.45 to $7.20 per unit) plus storage typically lands Amazon's all-in take at 30 to 45 percent of topline before ads. If you book those fees in COGS, your Amazon channel will look 15 to 25 points worse than Shopify even though the underlying product cost is identical. If you book them in selling expense, your gross margin looks the same and the leak hides in SG&A.
should i book amazon referral fees in cogs or in selling expense?
Under US GAAP both are defensible, but most CPG brands and public 10-Ks put referral and FBA fees in cost of sales or as contra-revenue, and book PPC ad spend in selling expense. The key is consistency across periods so you can read trends. For internal management reporting, the cleaner setup is to compute channel-level contribution margin (revenue minus product COGS minus payment and platform fees minus fulfillment minus directly attributable ad spend) and use that as the operating KPI instead of blended gross margin.
what gross margin do public dtc brands actually report in their 10-ks?
Wide range, driven by channel mix more than category. The FY2025 reads: Hims and Hers 73.8%, e.l.f. Beauty 70.7%, Olaplex 69.4%, BARK 62.4%, Grove Collaborative 53.7%, Celsius 50.4%, Edgewell 41.6%, Vita Coco 36.5%, BellRing 33.3%, Honest Company 33.3%. The 40-point spread between Hims and BellRing is mostly the difference between subscription DTC plus owned pharmacy and pure mass-retail wholesale, not the difference between healthcare and protein powder.
why is my gross margin lower than my competitor when we sell the same kind of product?
Three likely reasons in order of frequency. First, channel mix: your competitor probably has a heavier owned-DTC mix and you probably have heavier wholesale or marketplace exposure. Second, accounting policy: they may book trade spend as contra-revenue while you book it in SG&A, or vice versa for Amazon fees. Third, real product cost: scale, sourcing geography, or pack size. Diagnose in that order before you blame your manufacturer.
how do i know if it is my channel mix or my product cost that is killing my margin?
Run the test on your own books. Take your 12-month P&L, tag every dollar of revenue by channel (Shopify, Amazon, Faire, Target, Costco, owned retail). Compute COGS as a percent of revenue inside each channel using receipt-level data, not the consolidated GL line. If the same SKU shows 28% COGS on Shopify and 55% COGS on Amazon, the channel is loading the cost and product cost is fine. If every channel reads 50%+, your unit economics need work.
if i pivot my brand from dtc to retail (target, walmart, amazon 1p), how much gross margin do i lose?
The single-company evidence is roughly 5 points of COGS per 10-point retail-mix shift, based on how Honest Company moved: 61.8% COGS in FY2024 to 66.7% in FY2025 as retail grew from the low-60s to 67% of revenue. The cross-company spread is wider once you reach steady state, on the order of 30+ points: a pro-channel plus DTC brand like Olaplex prints 31% COGS while a wholesale-led nutrition brand like BellRing prints 67% even though both run scale operations. Plan for the gross-margin step-down before you sign the first Target purchase order, and use the Honest pacing (5 to 9 points per major mix shift) as the realistic single-year delta.
what is the actual gross margin pool walmart and target capture on my product after they buy it from me?
Walmart's own FY2026 10-K reports 24.2% gross margin (COGS 75.8%). When your brand sells to Walmart at roughly 50% off MSRP and they resell at MSRP, you and Walmart split the full margin pool. Your 35 to 40% gross margin plus Walmart's 24% gross margin together compose the consumer-facing economics. Most operators look at their own 38% GM and forget the retailer is pulling another 24 points before the SKU ever crosses a checkout.
how should i set up my chart of accounts to see cogs by channel instead of one blended line?
Create a class or location dimension in your accounting software (QuickBooks Online, Xero, NetSuite) for each channel: Shopify DTC, Amazon FBA, Amazon 1P, wholesale, Faire, Costco, owned retail. Tag revenue, product COGS, payment fees, platform fees, fulfillment, and directly attributable ad spend to each class. Most QBO instances need a one-time chart-of-accounts cleanup of 4 to 6 hours and a Shopify or A2X sync that maps per-channel revenue automatically. After 60 days you have a clean channel P&L without re-engineering anything else.
