SKU-Level Contribution Margin Calculation for Ecommerce Catalogs

UNIT ECONOMICS & FINANCE9 min read

Compare variants using a consistent variable-cost stack, and keep contribution dollars separate from margin percentage and net profit.

Table of Contents
  1. Choose a revenue basis
  2. SKU-level contribution margin formula and cost stack
  3. Worked example: a variant with a discount and acquisition cost
  4. Compare catalog rows fairly
  5. Use contribution for decisions, not as a verdict
  6. Reconcile and maintain the model
  7. FAQs

Contribution margin per SKU = (net sales − included variable costs) ÷ net sales.

  • Define the revenue basis and cost scope before comparing products.
  • Keep contribution dollars per unit visible beside the margin percentage.
  • Separate pre-ad contribution from post-ad contribution, and document how ad cost is assigned.
  • Reconcile a sample of rows to orders, payout records, fulfillment invoices, and product costs.

For an ecommerce catalog, a SKU-level contribution margin calculation shows what share of sales remains after a defined set of variable costs. The Bulk SKU Profit Auditor applies your price, discount, product cost, fulfillment, percentage and fixed fees, other costs, and optional CPA assumptions to its supported SKU economics CSV. It reports contribution and acquisition planning metrics; verify the source data and keep company overhead separate.

Choose a revenue basis

Start with a defined denominator. “Revenue” might mean list-price sales, gross sales before discounts, net sales after discounts, or net sales after returns. For order economics, use the amount actually retained for the product under your chosen treatment, and decide consistently how shipping charged to the customer, sales tax, gift cards, refunds, and chargebacks appear.

A common management definition is:

Net product sales = product sales after discounts and refunds, excluding sales tax collected for remittance and excluding customer shipping revenue unless shipping revenue is explicitly modeled.

This is not a universal accounting definition. Match your finance team's reporting policy and avoid mixing order-level gross sales with payout-level net receipts. If shipping revenue is included, include the corresponding shipping and fulfillment costs in the same model.

SKU-level contribution margin formula and cost stack

A transparent SKU model can use these layers:

  1. Product contribution before acquisition = net product sales − product cost − variable fulfillment − transaction and platform fees − other variable costs.
  2. Contribution after acquisition = pre-ad contribution − assigned customer acquisition cost.
  3. Contribution margin = the selected contribution amount ÷ the matching net-sales denominator.

Product cost can mean factory cost or landed cost. State which. Variable fulfillment can include pick-and-pack, postage, packaging, and order-specific handling. Payment fees may include a percentage and fixed transaction charge; platform or marketplace fees should match the actual sales channel. Duties, payment reserves, returns processing, and discounts need a documented treatment. Avoid double counting: if landed COGS already includes inbound freight, do not deduct it again as a separate per-unit cost.

Fixed overhead such as salaries, software subscriptions, office rent, and general marketing labor is normally outside a unit contribution view. You may allocate it to estimate a fully loaded product result, but show that as a separate layer because allocations can change rankings without changing the cash generated by one more order.

Worked example: a variant with a discount and acquisition cost

Suppose an illustrative variant has a $60 list price and a 10% discount, producing $54 net product sales. Use these example cost assumptions: $16 landed product cost, $7 fulfillment, payment fees of 2.9% + $0.30, a 1% platform fee, and $1.50 for another variable order cost. The example fee rates are assumptions for arithmetic, not a statement of current merchant pricing.

  • Payment fee = $54 × 2.9% + $0.30 = $1.866, or about $1.87.
  • Platform fee = $54 × 1% = $0.54.
  • Pre-ad contribution = $54 − $16 − $7 − $1.866 − $0.54 − $1.50 = $27.094, or about $27.09.
  • Pre-ad contribution margin = $27.094 ÷ $54 × 100 = 50.2%.

With a documented $20 acquisition cost assigned to the order, post-ad contribution is $7.09 and post-ad contribution margin is 13.1%. The contribution dollars matter because two products can have the same margin percentage but very different dollars to cover overhead. Conversely, a low-volume item can show a strong percentage while contributing little total cash.

Compare catalog rows fairly

Calculate per-unit economics and period totals. For period contribution, multiply unit contribution by net units sold under a consistent returns treatment. If baskets contain multiple SKUs but fulfillment is charged per order, allocate order costs using a reasonable, repeatable driver such as shipped units, weight, or actual SKU-level handling. Label the allocation; do not imply it is directly observed when it is modeled.

Use one row per variant when price, cost, or fulfillment differs. Normalize identifiers and check duplicate SKUs before joining order and cost files. Keep currency consistent. If conversion is necessary, retain the original amount, exchange rate, and conversion date. Missing values should remain flagged rather than silently becoming zero.

The bulk auditor can make a first-pass row comparison, but its CPA field is a single per-row assumption. It does not understand campaign targeting, multi-item orders, repeat-purchase cohorts, refund timing, or channel attribution. Use the catalog contribution comparison to shortlist rows, then validate them against actual realized costs and treat the output as a screening model.

Use contribution for decisions, not as a verdict

Use pre-ad contribution to estimate the maximum first-order acquisition cost the entered model can support before contribution reaches zero. This is a break-even ceiling, not a recommended bid or guaranteed allowable CAC. A business may set a lower target to preserve overhead coverage and cash. A higher first-order CAC may be a deliberate choice if repeat contribution is evidenced and modeled over a defined horizon.

For product decisions, combine contribution with demand, availability, stock age, returns, customer fit, and strategic role. For price tests, model a range and record assumptions about demand response; arithmetic cannot tell you whether conversion will hold after a price increase. For promotions, use the discounted price and likely basket, not the undiscounted list price. For acquisition, compare assigned CAC to contribution under a consistent attribution window and monitor incrementality separately.

Reconcile and maintain the model

Validate a sample of high-volume, low-margin, and negative rows against source records. Compare realized prices with discounts and refunds; product cost with current supplier or landed-cost files; fees with statements; fulfillment with invoices; and ad spend with the chosen attribution source. Investigate large differences before applying actions to the full catalog.

Update assumptions when suppliers, shipping contracts, fee schedules, product prices, discounting, or channel mix change. Preserve the model date, period, currency, source files, and exclusions. That makes month-to-month movement explainable and prevents a revised definition from looking like a sudden operating improvement.

FAQs

What is a good contribution margin for an ecommerce SKU?

There is no universal target. The required margin depends on product economics, acquisition costs, fixed overhead, return rates, cash needs, and business goals. Set a threshold from your own cost structure and validate it against actual results.

Should shipping charged to the buyer count as revenue?

Choose a consistent policy. If you include customer shipping revenue, include the related fulfillment or postage cost. If you exclude it, use a product-sales denominator and track shipping economics separately.

Can contribution margin include fixed overhead?

A classic contribution view excludes fixed overhead from unit-variable costs. You can also build an allocated, fully loaded product view, but show the allocation separately so it is not confused with the incremental economics of another sale.

How do I allocate ad spend by SKU?

Use a documented attribution method and window, and distinguish attributed from incremental sales. When campaign spend promotes multiple products, a single blended CAC may not identify the causal cost for each SKU; report the limitation instead of implying precision.