To find out which sales channel actually makes money, look past revenue and gross margin to contribution margin: what each channel keeps per sale after the product cost, the platform's fees, fulfillment, returns, and the advertising it took to make the sale. Measured that way, the channel with the biggest sales is often not the one carrying the business, and a channel with a thin gross margin can quietly be one of your most profitable.
Here's how to calculate it, a worked example across Shopify, Amazon, and wholesale, and how to get the numbers out of your books every month instead of a one-off spreadsheet.
Why Revenue and Gross Margin Mislead You
Gross margin only subtracts the cost of the product. That's useful, but it treats a sale on your own site, a sale on Amazon, and a case shipped to a retailer as if they cost the same to make. They don't. Amazon takes a referral fee and charges for fulfillment and storage. Your own site pays card processing, shipping, and usually most of your ad spend. Wholesale has almost none of those costs, but a much lower price.
Contribution margin is usually measured in three layers:
- CM1 (gross margin): price minus landed product cost.
- CM2: CM1 minus channel fees, fulfillment and shipping, and returns, the costs of getting a sale delivered.
- CM3 (contribution): CM2 minus the advertising spent to win the sale. This is what each channel actually contributes toward your overhead and profit.
Use landed product cost (the supplier's price plus freight, duties, and receiving), not the invoice price alone, or every channel looks more profitable than it is.
A Worked Example: One Product, Three Channels
Take one product with a landed cost of $15.50. It sells for $40 on your Shopify store and on Amazon, and for $20 to a wholesale retailer. Here's what each channel keeps per unit:
| Per unit | Shopify | Amazon FBA | Wholesale |
|---|---|---|---|
| Price | $40.00 | $40.00 | $20.00 |
| Landed product cost | ($15.50) | ($15.50) | ($15.50) |
| Gross margin (CM1) | $24.50 · 61% | $24.50 · 61% | $4.50 · 23% |
| Channel fees | ($1.46) | ($6.00) | ($0.40) |
| Fulfillment and shipping | ($6.00) | ($6.00) | ($0.75) |
| Returns | ($1.20) | ($1.20) | — |
| CM2 | $15.84 | $11.30 | $3.35 |
| Advertising per unit | ($12.00) | ($4.00) | — |
| Contribution (CM3) | $3.84 · 10% | $7.30 · 18% | $3.35 · 17% |
What's in each line: Shopify's fee is card processing (2.9% plus 30¢). Amazon's is a 15% referral fee, with FBA fulfillment and storage under fulfillment. Wholesale's is retailer deductions and chargebacks, with freight and pallet prep as its fulfillment. Returns are an allowance of 3% of the price. Your numbers will differ, but the structure is the same.
Gross margin says Shopify and Amazon are equally good and wholesale is barely worth doing. Contribution says something different: Amazon keeps the most per unit, wholesale keeps almost as much as Shopify despite half the price, and Shopify, after paying to acquire the customer, keeps the least.
Now Add Volume
Per-unit numbers tell you which channel is efficient. Volume tells you which one is carrying the business. Say a typical month looks like this:
| Channel | Units | Revenue | Share of revenue | Contribution | Share of contribution |
|---|---|---|---|---|---|
| Shopify | 1,500 | $60,000 | 37% | $5,760 | 24% |
| Amazon FBA | 2,000 | $80,000 | 49% | $14,600 | 60% |
| Wholesale | 1,200 | $24,000 | 15% | $4,020 | 16% |
| Total | 4,700 | $164,000 | 100% | $24,380 | 100% |
Shopify is more than a third of revenue but less than a quarter of contribution. If overhead (payroll, rent, software) runs $18,000 a month, the business makes about $6,400. Without a channel view, it would be easy to keep pouring ad budget into the channel doing the least to cover that overhead.
Before You Cut a Channel: Two Things to Check
- Repeat customers. Direct-to-consumer ad spend often buys customers who come back without being re-acquired. If a big share of Shopify orders come from returning customers, judge it on blended or cohort contribution over 6–12 months, not on first orders alone.
- Don't spread overhead across channels for this decision. Rent and salaries don't go away if you drop a channel. Allocating them makes channels look less profitable than they are and can talk you out of a channel that's helping pay those fixed costs.
What to Do With the Answer
A channel view turns vague worries into specific decisions:
- Low contribution with high ad spend usually means ads, not the channel, are the problem. Check cost per order and repeat rate before cutting the channel.
- Low contribution with high fees points to pricing or product mix. Some products work on Amazon and some don't once referral and fulfillment fees are in.
- Steady wholesale contribution often makes it the most predictable channel to grow, especially if it smooths out your inventory and cash flow.
- Inventory allocation follows contribution. When stock is tight, send it where each unit contributes most.
How to Get Channel Profitability From Your Books
Most brands build this once in a spreadsheet and never update it. The better approach is to build it into your monthly books so it arrives with every close:
- Record revenue by channel, at gross. Book Shopify, Amazon, and wholesale sales separately, before fees, using a connector like A2X or Link My Books, not the net payout that lands in the bank.
- Put each fee on the channel that caused it. Amazon referral and FBA fees, Shopify payment fees, and wholesale deductions each belong to their own channel.
- Tag fulfillment and shipping by channel. 3PL invoices often mix channels; split them by order source.
- Assign ad spend to the channel it drives. Meta and Google ads to your site; Amazon PPC to Amazon.
- Track it in QuickBooks with classes or locations per channel, so a channel-level P&L comes straight out of the books.
Once that structure is in place, a contribution report by channel takes minutes each month rather than a weekend. It's part of the KPI reporting in our Controller Services for ecommerce brands, and the starting point for the pricing and inventory decisions a fractional CFO helps you make. If your books don't yet separate channels or count inventory correctly, start with the inventory accounting mistake that drains ecommerce cash.
FAQ
What is contribution margin in ecommerce?
Contribution margin is what a sale contributes toward your overhead and profit after its variable costs: product cost, platform fees, fulfillment, returns, and the advertising spent to make the sale. Unlike gross margin, it reflects what each channel actually costs to sell through.
What's the difference between CM1, CM2, and CM3?
CM1 is gross margin: price minus landed product cost. CM2 also subtracts channel fees, fulfillment and shipping, and returns. CM3 also subtracts advertising, showing what each channel truly contributes.
Is Amazon or Shopify more profitable?
It depends on your fees, fulfillment costs, and ad spend. Amazon's referral and FBA fees are higher, but direct-to-consumer stores often spend much more on advertising per order. Compare contribution margin per channel, and account for repeat customers on your own site.
How do I track profitability by sales channel in QuickBooks?
Record revenue by channel at gross, map each fee to the channel that caused it, split fulfillment and ad spend by channel, and use QuickBooks classes or locations for each channel so a channel-level P&L comes straight from your books.
This article is general guidance, not personalized financial or accounting advice. The example is illustrative; your fees, costs, and ad spend will differ — talk to us about yours.