Skip to content
Log in

Theory

Deferred revenue: when prepaid lessons are earned

A deferred revenue example: prepaid money is a liability until the lesson happens, then recognition as lessons are delivered or a subscription runs, and what to do with lessons nobody takes.

~9 min read · 9 exercises · 250 points

Before you start

A record March

Back at Klasna, March was the best month ever for package sales, and yet the March P&L doesn't show it. Leo is puzzled. Hanna reminds him that on the day a family pays, Klasna hasn't given them anything yet.

In this lesson you'll follow prepaid money from the day it arrives to the lessons it pays for: when it becomes revenue, what Klasna owes in the meantime, and what happens to lessons nobody ever takes.

Deferred revenue: a prepayment is a debt

Revenue recognition follows one rule: money becomes revenue when the promised service is delivered, not when it is paid.

When a family prepays a package, Klasna has not given anything yet. It owes lessons, or the money back. Until the lessons happen, the prepayment is deferred revenue (also called unearned revenue): a liability.

In March 2026 Klasna sold 530 packages for 6,279,600 UAH, its best month ever for cash. Its March revenue from them was a small part of that.

One package, step by step: a maths 16-pack for 10,720 UAH is 670 a lesson. The family uses 5 lessons in March.

  • Delivered: 5 × 670 = 3,350 leaves the liability.
  • Still owed: 11 × 670 = 7,370 UAH of deferred revenue.
  • Klasna's March revenue: its commission, 5 × (670 − 420) = 1,250; it owes the tutor 2,100.

Klasna tracks the liability at the full price, because all of it is owed to the family until the lessons happen.

  • Do
    Maths 16-pack, 5 used: 11 × 670 = 7,370 UAH still deferred.
  • Don't
    10,720 − 1,250 = 9,470 UAH still deferred.

    A delivered lesson removes its full price (670) from the liability, not only the commission.

What one delivered lesson moves

When a prepaid lesson happens, no money moves into Klasna: that happened when the package was paid. The lesson moves numbers on paper, three at once.

An English 16-pack bought in March: 620 UAH a lesson, tutor 390. A lesson in June:

  1. Deferred revenue falls by 620, the full price: Klasna no longer owes that lesson.
  2. Revenue grows by 230, Klasna's commission: 620 − 390.
  3. A payout of 390 becomes due to the tutor, paid on the next payout date.

What does not happen:

  • The bank balance does not grow by 620. The cash came in March.
  • Revenue does not grow by 620. For 1:1 lessons Klasna is an agent, so only its commission is revenue; the tutor's share was never Klasna's.

This is why a month with many lessons from older packages can show healthy revenue and little new cash, and a month of record sales can show the opposite.

  • Do
    Lesson delivered: liability −620, revenue +230, owed to tutor +390.
  • Don't
    Lesson delivered: bank +620, revenue +620.

    The cash came at purchase, and only the commission is Klasna’s revenue.

A record month for cash, a modest one for revenue

Leo's puzzle: March 2026 brought 6,279,600 UAH for 530 packages, the best month ever, yet the March P&L did not show it. The answer is revenue recognition.

In March only the lessons used in March turn into revenue, and for 1:1 lessons only Klasna's commission counts: (price per lesson − tutor payout) × lessons used.

From the March packages dataset, March lessons row by row: English 210 × 260 + 520 × 230 + 360 × 190; maths 110 × 280 + 380 × 250 + 370 × 210; programming 80 × 290 + 130 × 260 + 60 × 220. Total 516,300 UAH of revenue in March.

Dataset · 9 rows

Packages sold in March 2026 and how they were used

One row per subject and package size. From March 2026 a package is valid for six months: the March packages expired on 30 September. Prices in UAH.

subjectlessons_per_packagepackages_soldpackage_price_uahtutor_payout_per_lesson_uahused_marused_aprused_mayused_junused_julused_augused_sepexpired
english860520039021019070000010
english161409920390520600560340110502040
english327018560390360450440380210150120130
maths83056004201101003000000
maths16901072042038047041014000040

First 5 of 9 rows

Download CSV

The rest of the money waits as deferred revenue and is earned month by month: 612,900 in April, 524,400 in May and so on. Over seven months the March packages brought 2,130,900 of commission plus 277,700 of breakage: 2,408,600 UAH of revenue out of 6,279,600 paid.

So a record cash month is not a record revenue month. Read both lines, each for its own question.

  • Do
    English 16-pack, March: 520 lessons × (620 − 390) = 119,600 UAH of revenue.
  • Don't
    English 16-pack, March: 140 packages × 9,920 = 1,388,800 UAH of revenue.

    That is cash received; most of it is still owed as lessons.

Breakage: lessons nobody takes

Breakage is prepaid service that customers never use. From March 2026 a Klasna package is valid for six months, so the March packages expired on 30 September with 440 lessons never taken.

When a package expires, Klasna stops owing those lessons. No tutor will be paid for them, so their full price, not just the commission, becomes revenue on the day they expire:

breakage = Σ expired lessons × (package price ÷ lessons per package)

Row by row: English 10 × 650 + 40 × 620 + 130 × 580; maths 40 × 670 + 140 × 630; programming 40 × 720 + 40 × 680. Total 277,700 UAH, for 440 of 9,880 lessons sold (4.45%).

Dataset: Packages sold in March 2026 and how they were used · shown above

Why only at expiry? This was the first cohort of packages to expire at all. Once Klasna has a few cohorts of history and can expect breakage reliably, it may recognize the expected part gradually, in step with the lessons families do use. Until then, it waits for expiry. Never on the day of sale.

  • Do
    Expired maths 32-pack lessons: 140 × 630 = 88,200 UAH of breakage revenue.
  • Don't
    Expired maths 32-pack lessons: 140 × (630 − 420) = 29,400 UAH.

    No tutor is paid for an expired lesson, so its full price is Klasna’s.

Breakage and trust

The March packages left 440 lessons unused: 277,700 UAH of breakage revenue, recognized on 30 September. Leo's reaction, "money for doing nothing", leads straight to an idea: shorten validity from six months to three, and breakage grows.

Why that is a poor plan:

  • It is money for value the family did not get. Families notice when lessons they paid for disappear, and they buy accordingly next time.
  • It hides a product problem. In maths 32-packs 140 of 1,920 lessons, 7.29%, expired, because the exam was in June and nobody needed lessons after it. That is a mismatch between the package and the family's real need.
  • It is not repeatable growth. It shifts revenue earlier and costs trust later.

The better response: report breakage honestly, track it as a warning signal and fix the cause: smaller packs before exams, or packages that run until exam day. A falling breakage line with happy families is worth more than a rising one.

  • Do
    "Breakage was 277,700 UAH; 7.29% of maths 32-pack lessons expired after the exam. Let’s sell smaller exam packs."
  • Don't
    "Let’s cut validity to three months and grow breakage."

    It earns from lessons families did not get and erodes trust.

Breakage is reported, not planned on

Once a company has history, it is tempting to book expected breakage early. Suppose Klasna learns that about 4% of lessons go unused. Can it record 4% of a package's price as revenue on the day of sale? No. On the day of sale nothing has been delivered.

The acceptable paths are:

  • No reliable history: recognize breakage when the packages expire, as Klasna did with the March packages.
  • Reliable history across several cohorts: recognize the expected breakage gradually, in proportion to the lessons families do use. If a family uses half its lessons, half of the expected breakage can be recognized.

And a business warning on top of the accounting rule: breakage is money for value the family did not get. In maths 32-packs 7.29% of lessons expired, because the exam was in June and nobody needed lessons after it. A growing breakage line calls for a product fix, such as smaller packs before exams, not for a target.

  • Do
    With reliable history: recognize expected breakage as the other lessons are used.
  • Don't
    Book 4% of every package as revenue the day it is sold.

    Nothing is delivered on the day of sale, so nothing is earned yet.

Subscriptions: revenue follows time

For a subscription the promise is access for a period, so revenue follows time, month by month.

Klasna Club has two plans:

  • monthly, 450 UAH: revenue in the month it covers;
  • annual, 4,320 UAH paid up front: recognized at 4,320 ÷ 12 = 360 a month for twelve months, counting the month of purchase.

The unrecognized part is deferred revenue. To find it at a date, count the months still owed for each batch of plans:

At the end of November: September plans have used 3 months and owe 9; October plans owe 10; November plans owe 11.

60 × 9 × 360 + 25 × 10 × 360 + 15 × 11 × 360 = 194,400 + 90,000 + 59,400 = 343,800 UAH.

Check it from the other side: Klasna was paid 100 × 4,320 = 432,000 and has earned 88,200 of it so far (60 × 3 + 25 × 2 + 15 × 1 = 245 plan-months × 360). 432,000 − 88,200 = 343,800.

  • Do
    September plan at the end of November: 9 months still owed, 9 × 360 = 3,240 UAH deferred.
  • Don't
    September plan at the end of November: 10 months still owed.

    The month of purchase counts: September, October and November are all used.

Subscription revenue in a month

For annual subscriptions, a month's revenue depends on how many plans are active, not on how many were sold that month.

Klasna Club's annual plan: 4,320 UAH up front, recognized at 360 a month for twelve months, counting the month of purchase. Sales: 60 in September, 25 in October, 15 in November.

November revenue from annual plans: all 100 plans are active, so 100 × 360 = 36,000 UAH. September brought 60 × 360 = 21,600; October 85 × 360 = 30,600.

The cash pattern is very different: September received 60 × 4,320 = 259,200 from annual plans, November only 15 × 4,320 = 64,800. Revenue grows smoothly with the number of active plans; cash jumps with each month's sales.

Add the monthly plan, 450 UAH, recognized in its own month: in September 420 monthly plans and 60 annual ones brought 448,200 UAH of cash but 210,600 of Club revenue. Two lines, two different questions.

  • Do
    November: (60 + 25 + 15) × 360 = 36,000 UAH of annual-plan revenue.
  • Don't
    November: 15 × 4,320 = 64,800 UAH of annual-plan revenue.

    That is November’s cash from new plans, not its revenue from all active plans.

Ready to practise?

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

Start the exercises