Contribution Margin by Channel

Contribution margin by channel tells you which places you sell are worth more spend. It only works when every fee and cost lands on the right channel, once.

The short answer

Contribution margin by channel is net revenue minus product cost, fulfillment, and payment and marketplace fees, for each place you sell. It goes wrong when fees are read from one field, costs sit with the company that billed them instead of the channel that caused them, and recent days are reported before late fees post. Rebuild five real orders per channel from sale price to payout before trusting the report.

Sound familiar?

  • One channel looks far more profitable than the others, and nobody can say why.
  • Yesterday always looks better than last week.
  • Revenue goes up when fee detail is added to the report.
  • Old orders carry today's product cost.

Why it happens

Fees sit in several fields
Shipping, affiliate commission, referral fees, and promotion costs can come out before payout in separate fields. One traced TikTok Shop order showed 0.00 platform commission and 8.55 in other fees on a 25.50 sale.
Costs land on the channel that billed them
In one multi-brand build, Amazon billed shipping fees for orders not sold on Amazon. Left on the Amazon side, they made Amazon look more expensive and the Shopify store more profitable than either was.
Pack sizes and costs are mapped loosely
A two-pack selling for $30 with an $8 item cost has a $14 margin. Mapping it to one unit of cost reports $22. A single static cost field also gives old orders today's cost.

How we fix it

  1. 1

    Keep a fee ledger beside the orders

    Store each fee as its own row with the order ID, fee type, amount, and posting date. Keep revenue in an order-level table so splitting fees into rows never repeats a sale.

  2. 2

    Assign costs by the order's sales channel

    List each cost line by who bills it and which channel sold the order, and write a rule wherever those differ. Decide every platform subsidy on purpose: revenue, a cost reduction, or its own line. Map SKUs with pack quantities and dated costs.

  3. 3

    Label what is still incomplete

    Compare a day's margin at two days old and at two weeks old to see how long costs take to post, then label those days provisional. Show known-cost margin with its coverage, since unknown cost is not zero.

What you end up with

  • A fee ledger with one row per fee
  • Contribution margin by channel and product
  • Labels for provisional days and estimated fees
  • A review list of unmapped SKUs and missing costs

Common questions

What goes into contribution margin by channel?

Net revenue for the channel minus product cost, fulfillment, and payment and marketplace fees for that channel's orders. If you also subtract ad spend, call the result contribution after marketing so it is not confused with contribution margin.

Is a marketplace settlement the same as profit?

No. Settlement is what the platform pays you. Product cost, packaging, fulfillment you pay for outside the platform, ad spend on other channels, and overhead all still come after it.

Why does recent margin drop a week later?

Some costs post days after the sale, so the most recent days show revenue with only part of the cost. Measure how long your costs take to post by channel and label that many days as provisional.

How do we check whether our channel margin is right?

Rebuild five real orders per channel by hand from sale price to payout: full price, discounted, free shipping, and affiliate-credited. If you land on the platform's number, the fee logic is sound. Most teams can run this check in a day with exports and a spreadsheet.

Bring the numbers that don't add up

We'll trace them to the source with you and say where we'd start. No pitch deck.

Book a Call