Skip to content
Log in

Theory

Contribution margin per unit: what one lesson leaves

Contribution margin per unit, step by step: price minus tutor payout, fees and video minutes, and what a lesson and a package really earn.

~9 min read · 9 exercises · 250 points

Before you start

Where you work

You've just joined the product team at Klasna, an online tutoring school and marketplace from Kyiv. It teaches English, exam maths and programming to teenagers and sells prepaid packages of 8, 16 or 32 lessons to families in Ukraine and the EU. Sales are growing, but not every sale earns what it seems to.

In this course Hanna, head of finance, and Leo, the co-founder and CEO, bring you real decisions on prices, costs, cash and investments, and you back each answer with numbers. This first lesson follows the money from a single lesson: what the family pays and what actually stays with Klasna.

Contribution margin per lesson

Contribution margin per unit is what one unit leaves after the costs that come with it. At Klasna the unit is one lesson.

  1. Price per lesson = package price ÷ lessons. An English 16-pack: 9,920 / 16 = 620 UAH.
  2. Payment fee = 2.5% of that price: 0.025 × 620 = 15.50.
  3. Subtract the variable costs: tutor payout (390), the fee (15.50), video minutes and AI practice (30).

620 − 390 − 15.50 − 30 = 184.50 UAH. That is what one English lesson contributes to salaries, the office and marketing, and, once those are covered, to profit.

CM=P−T−0.025×P−VCM%=CMP×100CM = P - T - 0.025 \times P - V \qquad CM\% = \frac{CM}{P} \times 100
CM: contribution margin per lesson; P: price per lesson (package price ÷ lessons); T: tutor payout; V: video + AI per lesson.

The price list has one row per subject and package, so the same steps work for every product. The family's payment is only the starting point: 620 UAH looks like a lot until you follow it out the door. Always work per lesson, not per package: the fee is taken from the price of a lesson, and the tutor is paid for each lesson delivered.

Dataset · 9 rows

Klasna's price list: packages and the costs of one lesson

One row per subject and package size. Prices and costs are in UAH; the fee is a percentage of what the family pays.

subjectlessonspackage_price_uahtutor_payout_per_lesson_uahvideo_ai_per_lesson_uahpayment_fee_pct
english85200390302.5
english169920390302.5
english3218560390302.5
maths85600420302.5
maths1610720420302.5

First 5 of 9 rows

Download CSV
  • Do
    Maths 16-pack: 10,720 / 16 = 670; 670 − 420 − 16.75 − 30 = 203.25 UAH per lesson.
  • Don't
    Maths 16-pack: 670 − 420 − 30 = 220 UAH per lesson.

    The 2.5% fee is a variable cost too: forgetting it overstates the margin by 16.75.

  • Don't
    Fee = 2.5% of the package price, 268 UAH, taken off one lesson.

    Work per lesson: the fee is 2.5% of the price per lesson.

Variable or fixed: the one-more-lesson test

To decide whether a cost belongs in contribution margin, ask one question: if Klasna delivers one more lesson, does this cost grow?

  • Variable costs grow with every lesson: the tutor's payout, the payment provider's 2.5% fee, video minutes and AI practice. These are subtracted from the price.
  • Fixed costs stay the same when one more lesson happens: salaries of the in-house team, office rent and tools, this month's ad budget. These stay out of contribution margin on purpose; they are what contribution margin has to cover.

Why not spread salaries across lessons? Because the result would move by itself. Divide the same payroll by few lessons in July and many in May, and the "cost per lesson" looks awful in summer and great in spring, while nothing about a lesson changed. Fixed costs come back later, when we ask how many lessons it takes to cover them.

  • Do
    Tutor payout, 2.5% fee, video + AI: they grow with each lesson, so subtract them.
  • Don't
    Subtract a slice of salaries and rent from every lesson.

    The slice changes with volume, so the margin would swing for no real reason.

What one more lesson adds

Contribution margin answers a narrow question on purpose: what does one more lesson add? One more English lesson in the 16-pack brings 620 UAH and triggers three costs: the tutor's 390, the 2.5% fee of 15.50 and 30 for video and AI. It adds 184.50 UAH, and that number is the same in a quiet July and a busy May, as long as prices and payouts don't change.

The tempting alternative is a "full" cost per lesson that also carries a share of salaries and rent. It answers a different question ("what did a lesson cost on average this month?") and it moves with volume: the same payroll spread over fewer lessons makes each lesson look worse, though nothing about the lesson changed.

So keep two numbers apart: contribution margin for decisions about more or fewer lessons, and fixed costs as a separate total that contribution has to cover.

  • Do
    "One more English lesson adds 184.50 UAH to cover fixed costs."
  • Don't
    "In July a lesson loses money because salaries per lesson went up."

    The lesson still adds 184.50; fewer lessons just cover less of the same fixed costs.

Contribution margin ratio

The contribution margin ratio puts contribution margin as a share of the price:

ratio = contribution margin ÷ price × 100%

For an English lesson in the 16-pack: 184.50 / 620 = 0.2976, or 29.76%. Out of every hryvnia the family pays for this lesson, about 30 kopiykas are left to cover fixed costs.

Hryvnias and percentages answer different questions. Hryvnias per lesson tell you what one more lesson brings. The ratio tells you what one more hryvnia of sales brings. They can disagree: a programming lesson in the 16-pack leaves 206 UAH, more than English, yet that is only 28.61% of its 720 UAH price, a smaller share than English.

Use the ratio when products have different prices and you want to compare how much of each sale stays. Use hryvnias when you plan in lessons, for example when you count how many lessons a month you need. Both numbers are useful as long as you remember which question each one answers.

  • Do
    184.50 / 620 × 100 = 29.76%
  • Don't
    184.50 / 390 × 100 = 47.31%

    The ratio divides by the price the family pays, not by the tutor payout or any other cost.

Where a package discount goes

A package discount lowers the price per lesson, but most variable costs don't move: the tutor is paid the same per lesson and video costs the same. Only the fee shrinks a little, because it is 2.5% of a lower price. So almost the whole discount comes straight out of contribution margin.

Maths at Klasna, from the price list:

Dataset: Klasna's price list: packages and the costs of one lesson · shown above

  • 16-pack: 10,720 / 16 = 670 UAH; fee 16.75; margin 670 − 420 − 16.75 − 30 = 203.25 UAH.
  • 32-pack: 20,160 / 32 = 630 UAH; fee 15.75; margin 630 − 420 − 15.75 − 30 = 164.25 UAH.

The discount is 40 UAH a lesson; the margin falls by 39. Per package the bigger pack still earns more, 32 × 164.25 = 5,256 UAH against 16 × 203.25 = 3,252 UAH, because it sells twice as many lessons.

Always finish with the multiplication by lessons: margin per lesson alone hides what one sale is worth.

  • Do
    Maths 32-pack: (630 − 420 − 15.75 − 30) × 32 = 5,256 UAH.
  • Don't
    Maths 32-pack: (630 − 420 − 30) × 32 = 5,760 UAH.

    The fee was skipped: 32 × 15.75 = 504 UAH of costs disappeared.

Judging a package: the order of steps

To decide whether a package is worth promoting, each step needs the result of the one before:

  1. Price per lesson = package price ÷ lessons. Everything else is per lesson.
  2. Payment fee = 2.5% of the price per lesson. It depends on the price, so it comes second.
  3. Contribution margin per lesson = price − tutor payout − fee − video + AI.
  4. Contribution per package = margin per lesson × lessons in the package.
  5. Compare with the buyer's alternative: what would this family have bought without the promotion?

For English this gives 213.75 / 184.50 / 145.50 UAH per lesson and 1,710 / 2,952 / 4,656 UAH per package. A discount comes almost entirely out of contribution margin: the 32-pack is 40 UAH a lesson cheaper than the 16-pack, the fee shrinks by one hryvnia, and the other 39 are lost margin. Step 5 is the one that decides; the first four only prepare it.

  • Do
    Price per lesson → fee → margin per lesson → per package → compare with the alternative.
  • Don't
    The 32-pack earns 4,656 UAH per package, so push it.

    Stops at step 4: without the alternative you do not know what the push gains.

Compared with what?

Whether a bigger package is good for Klasna depends on what the family would have bought otherwise. The package's own total is not the answer; the difference from the alternative is.

  • A family that would have bought one 16-pack and left and now buys a 32-pack adds lessons: 4,656 UAH instead of 2,952. Klasna gains.
  • A family that would have bought two 16-packs anyway now gets the same 32 lessons cheaper: 4,656 instead of 2 × 2,952 = 5,904 UAH. Klasna loses 1,248 UAH, the 39-hryvnia gap per lesson times 32.

The same holds one step down. Two English 8-packs leave 2 × 1,710 = 3,420 UAH; one 16-pack leaves 2,952. Moving that family to the 16-pack costs 468 UAH.

So a discount is a gift to families who would stay anyway and a win only with those who would otherwise buy less. Before a push, find out how many families already buy repeatedly.

  • Do
    Two 16-packs (5,904) vs one 32-pack (4,656): the switch costs 1,248 UAH.
  • Don't
    The 16-pack earns 2,952, more than an 8-pack’s 1,710, so moving families up always pays.

    Not if the family would have bought two 8-packs: then Klasna loses 468 UAH.

Per lesson or per package

A bigger package has a lower price per lesson, so it leaves less per lesson but, because there are more lessons, more per package.

English at Klasna:

Package
Margin per lesson
Per package
8 lessons
213.75
1,710
16 lessons
184.50
2,952
32 lessons
145.50
4,656

Both views are true at once, and each answers a different question. Per lesson tells you how much the discount costs on every lesson delivered: 39 UAH between the 16-pack and the 32-pack, because the tutor still gets 390 and video still costs 30. Per package tells you what one sale is worth.

Neither says whether promoting the bigger package is a good idea. That depends on what the family would have bought instead, which is the next step. So when you talk to Leo, always give both numbers, per lesson and per package, so nobody mixes one up with the other.

  • Do
    The 32-pack: 145.50 per lesson, 4,656 per package. Lower per lesson, higher per sale.
  • Don't
    The 32-pack leaves less per lesson, so one 32-pack earns less than one 16-pack.

    Multiply by the lessons: 4,656 is more than 2,952.

Ready to practise?

Answer the lesson's exercises and earn 250 points the first time you finish it.

Start the exercises