Profitability · Practical guide
E-commerce contribution margin: a product and channel example
Subtract the defined product and channel costs from net sales to see what remains for overhead. Compare amounts and percentages under the same rules before changing a price, channel or advertising budget.
Contribution shows what remains to cover overhead
Contribution margin is sales less variable costs. Contribution margin ratio = contribution ÷ sales. Define the included costs before comparing results, because product reports can use different cost and allocation boundaries.
This report uses net sales after discounts and refunds, less COGS, channel/payment fees, fulfilment including return handling, and allocated acquisition cost. It is a management contribution measure. Fixed operating expenses sit below it.
Use one period, currency and product/channel key. A percentage based on gross sales or missing acquisition cost cannot be compared directly with the definition used here.
1. Collect sales and costs under the same rules
Join the sales record to product cost, channel charges, logistics and acquisition spend. Retain the source totals and explain how shared charges are allocated. Begin with one row that you can trace all the way back to its records.
Check discounts and refunds at the gross-to-net stage. Use the cost of the inventory sold during the period, with the applicable treatment of returns, rather than supplier cash paid in that month.
List every cost once. If return handling is included in fulfilment, keep the separate return-handling row at zero. If an export already reports net receipts, recover the underlying sales and deductions before constructing a contribution calculation.
Scroll horizontally if needed to see all columns.
| Cost or deduction | Input to verify | Duplication risk |
|---|---|---|
| Discounts and refunds | Product/order detail, refund period and sign convention | Subtracting a refund from both revenue and costs |
| COGS | Units sold and supported inventory cost | Using both stock purchased and stock sold as expenses |
| Platform/payment fees | Transaction or settlement fee detail and attribution | Subtracting fees already included in another cost row |
| Fulfillment and returns | Shipping/handling records, return logistics and allocation | Adding return handling when already included in fulfillment |
| Ads and affiliates | Period spend, commission records and documented allocation | Treating attributed sales as causal proof of incremental demand |
| Overhead | Fixed operating costs kept below contribution | Allocating overhead into some channels but not others |
2. Follow one product from gross sales to contribution
Hero serum on Shopify DTC starts with $108,000 gross sales. After $6,000 discounts and $5,600 refunds, net sales are $96,400.
Subtract $34,000 COGS, $2,600 fees, $7,200 fulfilment and $16,000 acquisition cost. Contribution is $36,600, or 38% of net sales. The table carries the balance through each deduction so that the row can be reproduced.
The full product table uses the same definition for every row. The useful next question is which cost or channel difference drives the result, rather than whether the largest sales row is automatically the best use of the next dollar.
Scroll horizontally if needed to see all columns.
| Step | Signed change | Running amount |
|---|---|---|
| Gross product sales | $108,000 | $108,000 |
| Less discounts | −$6,000 | $102,000 |
| Less refunds: net sales | −$5,600 | $96,400 |
| Less COGS | −$34,000 | $62,400 |
| Less platform/payment fees | −$2,600 | $59,800 |
| Less fulfillment, including return logistics | −$7,200 | $52,600 |
| Less allocated ads/affiliates: contribution | −$16,000 | $36,600 |
Scroll horizontally if needed to see all columns.
| Product / channel | Net sales | Costs before acquisition | Acquisition | Contribution | CM % |
|---|---|---|---|---|---|
| Starter bundle Shopify DTC | 54,200 | 22,600 | 7,800 | 23,800 | 43.9% |
| Hero serum 30 ml Shopify DTC | 96,400 | 43,800 | 16,000 | 36,600 | 38% |
| Hero serum 30 ml Amazon | 71,900 | 43,300 | 20,000 | 8,600 | 12% |
| Travel kit Amazon | 18,300 | 14,200 | 4,800 | −700 | −3.8% |
| Gift set TikTok Shop | 12,600 | 8,200 | 5,500 | −1,100 | −8.7% |
Contribution = net sales − product cost − fees − fulfilment − acquisition costs; before fixed overhead, interest and tax. Return logistics are included in fulfilment. Acquisition costs are allocated by product and channel.
Inspect the complete cost breakdown3. Compare the same product across channels
The serum generates $36,600 contribution on Shopify DTC and $8,600 on Amazon. Their contribution margins are 38% and 12% respectively.
Work through the amounts in the comparison table. Differences in sales, discounts, refunds, COGS, fees, fulfilment and acquisition all affect the result. Separate costs attached directly to the channel from shared costs assigned by a rule.
Use the comparison to choose an investigation. Verify fee detail, review fulfilment cost, inspect returns or test acquisition spend before changing channel allocation. Historical averages describe the recorded activity; the cost of the next order or advertising increment can differ.
Scroll horizontally if needed to see all columns.
| Row | Shopify DTC | Amazon |
|---|---|---|
| Gross product sales | $108,000 | $79,000 |
| Less discounts | $6,000 | $2,000 |
| Less refunds | $5,600 | $5,100 |
| Net sales | $96,400 | $71,900 |
| Less COGS | $34,000 | $25,500 |
| Less platform/payment fees | $2,600 | $9,500 |
| Less fulfillment, including return logistics | $7,200 | $8,300 |
| Less allocated ads/affiliates | $16,000 | $20,000 |
| Contribution before fixed overhead | $36,600 | $8,600 |
| Contribution / net sales | 38% | 12% |
4. Show which costs are direct and which are allocated
Keep directly traceable costs on their product/channel rows. For shared spend, record the total, allocation driver and reason. Examples of drivers include tracked campaign activity or documented order handling; choose the rule that matches the cost.
Reconcile all allocated rows back to the source total, including any unallocated remainder. Compare a material row under a reasonable alternative driver where the decision is sensitive to allocation. That exposes uncertainty in the decision rather than hiding it in a precise percentage.
Use consistent rules across periods. When a rule changes, explain the effect or restate the comparison so that a reporting change is not mistaken for an operating improvement.
5. Sum the amounts before calculating the overall margin
Across all five rows, net sales are $253,400 and included costs are $186,200. Total contribution is $67,200. The combined ratio is $67,200 ÷ $253,400 = 26.5%. Averaging the five row percentages would give the wrong sales weighting.
Subtracting $42,000 fixed operating expenses gives an operating result of $25,200. Interest and tax sit outside this example, so this is an operating result before those items.
Reconcile net sales and cost totals to the period’s records. Identify costs absent from the analysis before using the overall margin as an operating target.
Use a weak row to define a specific check or test
The Travel kit and Gift set rows have negative contribution on the reported definition. Check the refund, fee, logistics and acquisition inputs first. Then compare a price, offer, cost or campaign change with explicit assumptions about demand.
A positive contribution row still needs overhead coverage and cash capacity. Before expanding it, estimate the cost of incremental activity and test the inventory and collection dates. A strong historical margin alone does not establish that the next commitment fits the cash forecast.
Reproduce one product/channel row from your records
Choose a row with enough volume or cost to affect a decision. Reconcile gross-to-net sales, attach each cost source and write the allocation rule. Record the amount left for overhead and the cost driver that deserves attention.
The bookkeeper validates accounting totals; operations confirms product and logistics costs; marketing explains acquisition allocation. The owner chooses the pricing, channel or spending test and the measure for evaluating it.
Bring that row and its unresolved costs to a profitability discussion. Use the methodology for definitions and the cash-planning guide before committing more inventory or spend.
Sources and calculation notes
- OpenStax — Principles of Accounting, Volume 2: Managerial Accounting, section 3.1
Contribution is sales less variable costs; its ratio measures contribution as a share of sales.
Accessed 2026-10-07.
- IFRS Foundation — IAS 2 Inventories, public overview
Inventory cost recognized with sales differs from the timing of supplier cash payments.
Accessed 2026-10-07.
Your next financial question
Put numbers behind the next move.
Start with the decision ahead and the reporting you have today.