The Analyst's Path

Phase 1Accounting: the language of businessFinance trackM1.0615,871 words1 h 28 min of readingabout 20 hours of study6 concept pagesfree

Revenue, Receivables & Inventory

It serves Question 1 of the five-question spine (how it makes money starts with what it may call revenue) and Question 4 (what can kill it?), because receivables and inventory are where trouble shows up first, quarters before it reaches profit.

Phase 1 · Accounting: The Language of Business · Week 10 · ~20 hours (one immersive week)

Where this sits: you've just passed the crown gate, the three-statement linkage. From here to the equity module, Phase 1 walks through the statements line by line and teaches the judgment baked into each one. This week takes the top of the operating cycle. That's revenue, the most manipulated number in accounting, plus the receivables it creates and the inventory it consumes. Long-term assets come next.

It serves Question 1 of the five-question spine (how it makes money starts with what it may call revenue) and Question 4 (what can kill it?), because receivables and inventory are where trouble shows up first, quarters before it reaches profit.

Learning objectives

By the end of the week you can:

  1. Apply the five-step revenue model (ASC 606 / IFRS 15 / Ind AS 115, one converged standard) to any contract: identify performance obligations, set and allocate the transaction price on relative standalone selling prices, and decide point-in-time vs over-time recognition.
  2. Account end-to-end for three archetypal contracts (a simple product sale, a multi-element SaaS deal, and a long-term construction contract, over-time, cost-to-cost), including a mid-life estimate revision with cumulative catch-up.
  3. Decide principal vs agent (gross vs net) from the control indicators, and explain precisely why Zomato's or DoorDash's revenue line is not comparable to DMart's or Costco's.
  4. Distinguish contract liabilities (deferred revenue), contract assets, and receivables; read a contract-balances note; and use deferred revenue and contract-asset trends as early-warning indicators.
  5. Build a receivables allowance under IFRS 9 / Ind AS 109 expected credit losses (both the 3-stage general model and the simplified-approach provision matrix), contrast it with US CECL, and post the provision, write-off, and recovery entries.
  6. Run one inventory dataset under FIFO, LIFO, and weighted average; state the effects on COGS, profit, taxes, and inventory value in a rising-price world; and use the LIFO reserve to restate a LIFO company to FIFO for comparison.
  7. Apply lower of cost and net realisable value (LCNRV), including the IFRS/Ind AS write-down reversal rule vs the US GAAP no-reversal rule.

Advertisement

Prerequisites & connections

Builds on: M1.01 (debits/credits: every treatment here is shown as journal entries), M1.02 (the P&L layers), M1.03 (receivables, inventory, contract balances, allowances, contra accounts), M1.04–M1.05 (how a revenue or provision entry ripples into CFO: accrual revenue with no cash is a working-capital drag).

Feeds into: M1.07, where impairment logic recurs for long-lived assets (compare the NRV reversal rule here). M1.10, where you'll read these same notes in a real 10-K and Indian AR. Phase 2, where DSO/DIO, receivables- and inventory-led red flags and Schilit's revenue shenanigans all stand on this groundwork. Phase 5, for take-rate economics; NBFCs run on ECL machinery now, and banks move to RBI's ECL provisioning from 1 April 2027. Finally the teardown checklist, where the revenue-policy note is a standing stop on the 45 to 60 minute statement read.

Core teaching content

Revenue recognition

The rule that decides when a sale counts as revenue. Under the current standard, revenue is recognised when control of the goods or service passes to the customer, which can be at a moment or spread across time. You'll find the policy in the notes to the accounts, and it's worth reading before any growth number is believed. Two companies with identical cash collections can report very different revenue if their recognition points differ.

6 min read, on its own page

4.2.1 Contract example 1: the simple sale (point in time)

Synthetic company; clean numbers. Meera Appliances Pvt Ltd ships 100 mixer-grinders to a retail chain on 15 March at ₹2,000 each, with payment due in 45 days. Unit cost is ₹1,400. History says about 2% of units come back under the 30-day return right.

  • Walk it through. Step 1: a contract exists and collection is probable. Step 2: there's one PO, delivering the goods. The standard 1-year assurance warranty isn't a PO, so you accrue its cost separately. Step 3: the transaction price is variable because of returns. On expected value, 98 units stay sold, which gives ₹1,96,000. A long return history satisfies the constraint. Step 4 is trivial with one PO. Step 5: control transfers on delivery, when the buyer gets possession, title, risk. Revenue is recognized at a point in time, on 15 March.

Here are the journal entries on 15 March. Think of them as double-entry muscle memory:

EntryDrCr
Trade receivables₹2,00,000
Revenue₹1,96,000
Refund liability (2 units × ₹2,000)₹4,000
COGS (98 × ₹1,400)₹1,37,200
Right-to-recover-returned-goods asset (2 × ₹1,400)₹2,800
Inventory (100 × ₹1,400)₹1,40,000

You book revenue only for what you expect to stay sold. Expected returns are carried as a refund liability plus a recovery asset at cost. If no units come back, the ₹4,000 becomes revenue when the window closes. E-commerce companies with 15 to 30% return rates (apparel especially) have to book sales with this same machinery. That opens a wide gap between gross orders shipped and revenue.

4.2.2 Contract example 2: the multi-element SaaS deal (allocation)

Synthetic. Foglight Software Inc. (US) signs a 24-month contract on 1 January. It bundles a cloud subscription with a one-time implementation plus a training package. All-in, the price is $300,000, billed $150,000 on signing and $150,000 on 1 January of year 2. Sold separately, the subscription would fetch $240,000 for 24 months, implementation $60,000, training $20,000. Implementation is generic configuration, so it's distinct. It's delivered evenly from January to March. Training is delivered in January.

  • Step 2 gives three POs. Implementation doesn't significantly customize the platform, so it's distinct. Step 3: the price is $300,000 with no variable consideration. The billing schedule roughly tracks performance, so there's no significant financing component either. Step 4: allocate on relative SSPs. Total SSP = 240 + 60 + 20 = $320,000, and the allocation ratio is 300/320 = 0.9375:
POSSPAllocated (× 0.9375)Pattern
Subscription$240,000$225,000Over time, 24 months → $9,375/month
Implementation$60,000$56,250As performed, Jan–Mar → $18,750/month
Training$20,000$18,750January (delivered)
Total$320,000$300,000

The $20,000 bundle discount is spread pro rata. No PO gets to "keep" it.

  • Step 5: walk through the year. January revenue = 9,375 + 18,750 + 18,750 = $46,875. Cash received on 1 Jan was $150,000, so at the end of January the contract liability (deferred revenue) = $103,125. By 31 December, cumulative revenue = 12 × 9,375 + 56,250 + 18,750 = $187,500. Only $150,000 has been billed, though. The position flips to a contract asset of $37,500: Foglight has performed ahead of its right to bill. On 1 January of year 2 the second $150,000 becomes unconditionally due. You recognize the receivable and extinguish the contract asset. What's left, $112,500, is carried as a contract liability, and it drains to revenue at $9,375/month through year 2.

So one contract has shown both balance-sheet positions, on different dates. Hold on to that. Contract liabilities and contract assets get their general treatment further down, built from this case.

Point in time vs over time revenue recognition

Point in time and over time are the two ways to recognise revenue. Revenue is recognised over time if any one of three tests is met, for example when the customer controls the asset as it is built. If none is met, it is recognised at a point in time, when control passes. Over-time revenue rests on estimates of progress, so a revised cost estimate can swing a year's profit.

4 min read, on its own page

Principal vs agent revenue recognition

Principal vs agent revenue recognition decides whether a platform reports the full value of a sale (gross) or only its fee (net). The test is control: a principal controls the good or service before it passes to the customer, and an agent does not. The call changes reported revenue and margins without changing the business, so restate both kinds to a common basis before comparing.

3 min read, on its own page

Contract assets and contract liabilities

Contract asset ("unbilled revenue" in Indian ARs): revenue earned by performance, where the right to bill is still conditional on something other than time, such as the next milestone or final acceptance. Contract liability ("deferred revenue", "unearned revenue", "income received in advance"): cash or an unconditional billing received before performance. You settle it by doing the work, and no cash goes back. Deferred revenue is a good liability. It's customers financing the business, and it's one reason quality SaaS and subscription businesses run negative working capital. Its growth is a leading indicator.

3 min read, on its own page

Expected credit loss

The provision Ind AS 109 requires against loans and other financial assets, set from the losses expected rather than only those already incurred. Each loan sits in one of three stages. Stage 1, performing loans, carries twelve months of expected loss. Stage 2, loans whose credit risk has risen significantly, usually signalled by being more than 30 days overdue, carries the loss expected over the loan's whole life. Stage 3, credit-impaired loans, usually more than 90 days overdue, carries lifetime loss as well. Watch the Stage 2 balance. It leads Stage 3.

7 min read, on its own page

FIFO, LIFO and weighted average

You've bought identical units at different prices, so which cost goes to COGS and which stays on the balance sheet? FIFO (first-in, first-out): the oldest costs go to COGS and the newest stay in ending inventory. Weighted average (WAC): every unit carries the average cost of the pool. LIFO (last-in, first-out): the newest costs go to COGS and the oldest stay in ending inventory. It's US GAAP only. IFRS and Ind AS prohibit LIFO outright.

8 min read, on its own page

4.8 Where all of this lives in a real filing: your field guide

You started building a checklist for the 45 to 60 minute statement read back in the statement-linkage capstone, and you'll finalize it in Phase 8. This week adds five standing stops to it:

  1. Significant accounting policies: revenue. Check how they earn it (point in time versus over time, gross versus net) and what judgments they flag. That one paragraph tells you more about the business model than most investor decks.
  2. Revenue disaggregation + RPO. Segments, geographies, timing split (point-in-time vs over-time), remaining performance obligations.
  3. Contract balances note. Contract assets vs receivables vs contract liabilities; how much of opening deferred revenue became revenue.
  4. Receivables note + ageing (Schedule III table in India; allowance roll-forward in the US). Coverage ratio = allowance ÷ gross AR; watch it against ageing drift.
  5. Inventory note. Method (FIFO/WAC/LIFO; LIFO reserve if US), composition (RM/WIP/FG), write-downs and reversals.

Ctrl-F anchors: "performance obligation", "contract asset", "unbilled", "unearned", "expected credit loss", "provision matrix", "LIFO reserve", "net realisable value".

Common mistakes & how experts think differently

1. "Revenue ≈ cash coming in." That's wrong twice over. Revenue can run ahead of cash (credit sales, contract assets) or behind it (deferred revenue). Beginners read the P&L. Analysts read the gap between the P&L and CFO. You built that instinct in the statement-linkage capstone, and this week gives the gap's parts their names.

2. "Deferred revenue is bad: it's a debt." It's a liability you settle by performing, and the customer's cash in advance funds it. Experienced analysts treat growing deferred revenue in a subscription business as a health signal, and its deceleration as the earliest public warning. The mirror error is admiring a services firm's "asset-light balance sheet" while its contract assets balloon. That's revenue sprinting ahead of the right to bill.

3. Comparing marketplace revenue with retailer revenue. Put ₹6,300 crore (Zomato food delivery, net) next to ₹50,000 crore (DMart, gross) and you're looking at agent-versus-principal accounting. It isn't an 8:1 gap in business size. Experts restate to GOV/take-rate economics before they compare scale, margins, or EV/Sales. They also read the principal/agent note skeptically when a company reports gross with agent-like indicators, because grossing up is the oldest growth cosmetic in the book.

4. "Percentage-of-completion profit is real profit." It's an estimate: cumulative cost ÷ estimated total cost, and the denominator is management's guess. Experts read EPC margins as a series of estimate revisions. A clean margin history means either great estimating or smoothed estimating. The contract-assets line and the KAM paragraphs tell you which.

5. Treating the allowance as a prediction of write-offs, or thinking write-offs hit profit. The allowance is a valuation adjustment recognized in advance. The later write-off just uses it up, with no P&L effect. Experts audit the assumptions: loss rates in the provision matrix, SICR criteria, stage-coverage ratios. Then they compare how aggressively peers provide. Between a conservative NBFC and an aggressive one, the difference is often one Excel cell of LGD.

6. "FIFO firms are more profitable than LIFO firms." It's the same business with a different label on the same units. In rising prices LIFO reports less profit but keeps more cash, through tax. Experts convert every LIFO company to FIFO with the reserve before comparing. Then, when they think about value, they remember the LIFO firm's extra cash is real.

7. Missing LIFO liquidation. A LIFO manufacturer shrinking inventories in a downturn can print rising margins from 1990s-cost layers. Experts check the reserve's direction and the liquidation disclosure before applauding "resilient margins."

8. Assuming write-downs work the same everywhere. IFRS/Ind AS reverse inventory write-downs, and other impairments too, as you'll see with long-term assets. US GAAP never does. So cross-border comparisons of gross margin in recovery years are polluted by reversals on one side only. Check which regime you're in before you praise a margin bounce.

If you keep one habit from all this, make it the expert's. Read the revenue-policy note first, before the revenue number. Treat receivables, contract assets, deferred revenue, and inventory as four leading indicators wrapped around one lagging one, reported revenue. And treat every estimate this week (returns, loss rates, cost-to-complete, NRV) as a dial management can turn. Track it over time, and don't take it at face value.

Worked examples

Worked example 1: Restating a marketplace and a retailer to a common basis

Take two companies. Their figures are illustrative and modeled on ~FY24 disclosures (pull the actual Zomato/Eternal and Avenue Supermarts annual reports). Marketplace M is built like Zomato's food delivery, with GOV of ₹32,000 crore and revenue of ₹6,300 crore. Retailer R is DMart-style, with revenue of ₹50,000 crore and COGS of ₹42,750 crore.

Step 1: take rate. M's take rate = 6,300 ÷ 32,000 = 19.7%. R's "take rate" is 100% by construction, because it owns what it sells.

Step 2: put them on one basis. Compare the transaction value each one handles: M ₹32,000 crore against R ₹50,000 crore. That's a 0.64 : 1 ratio, while the revenue lines suggest 1 : 7.9. M's gross margin looks spectacular, at ~80% of its revenue, because the food cost never touches its P&L. Restate M to a gross basis and the "margin" becomes 6,300 ÷ 32,000 ≈ 19.7% of transaction value. Now it's comparable in kind to R's 14.5% gross margin. Neither restatement changes a single rupee of gross profit. Only the denominator moves.

Step 3: the multiple trap (a Phase 3 preview). Suppose both "trade at 5× revenue." For R that's 5× the full goods flow. For M it's 5 × 6,300 = ₹31,500 crore of EV, which is EV/GOV = EV/Sales × take rate = 5 × 0.197 ≈ 0.98× the transaction flow. An EV/Sales screen that ranks M "as expensive as" R has compared apples to the fifth power of oranges. So for any intermediary (marketplaces, travel agents, ad agencies, payment firms), convert to per-GOV economics before you compare anything.

Worked example 2: A full allowance cycle under the provision matrix (year 2 at Sundaram Components)

Go back to synthetic Sundaram Components from the receivables section. It opens year 2 with an allowance of ₹3.70 crore. During the year a customer with ₹1.50 crore outstanding (already >90 days) goes into insolvency, and the balance is written off. Separately, ₹0.30 crore written off last year is unexpectedly recovered. Year-end gross receivables are ₹115 crore, aged like this:

BucketGross AR (₹ cr)Loss rateECL (₹ cr)
Not yet due660.5%0.33
1–30 days242%0.48
31–60 days125%0.60
61–90 days815%1.20
> 90 days540%2.00
Matrix ECL1154.61

Management adds a forward-looking overlay of ₹0.40 crore for a stressed customer industry, and discloses it as such. That makes the required closing allowance ₹5.01 crore.

Here's the allowance roll-forward. It's the same table a US 10-K's credit-loss note shows:

₹ crore
Opening allowance3.70
− Write-offs (Dr Allowance, Cr AR — no P&L)(1.50)
+ Impairment charge for the year (balancing figure)2.81
Closing allowance5.01

In the P&L, the impairment charge of 2.81 less the recovery credit of 0.30 gives a net charge of ₹2.51 crore in other expenses. Notice what happened to reported profit in the insolvency year. Almost nothing happened, because prior-year provisions had already funded the loss. That's the system working. Now run your checks. Coverage rose from 3.7% to 4.36% (5.01/115) while the >90 bucket grew, which is the right direction. The overlay is a discretion dial, and it can be released into profit next year. Under CECL this same matrix would be presented the same way for trade receivables. The IFRS/US difference bites lenders. Component makers don't feel it.

Worked example 3: Converting a LIFO company to FIFO (US)

This one is illustrative, modeled on ~Kroger FY24 scale. Pull the actual 10-K and redo it with filed numbers. Under LIFO the company reports inventory (net) of $7.0bn, and its LIFO reserve goes from $1.9bn opening to $2.1bn closing. COGS is $115.0bn. Net income is $2.2bn, equity is $11.0bn, and the tax rate is 25%.

  1. FIFO inventory = 7.0 + 2.1 = **$9.1bn**. That's +30%, because the balance sheet was carrying decades-old layers.
  2. FIFO COGS = 115.0 − (2.1 − 1.9) = **$114.8bn**, so pre-tax income rises by $0.2bn, and FIFO net income = 2.2 + 0.2 × 0.75 = **$2.35bn**, up 6.8%.
  3. FIFO equity = 11.0 + 2.1 × 0.75 = **$12.58bn**, with a new deferred-tax liability of 2.1 × 0.25 = $0.53bn.
  4. Now the cash reality check. By electing LIFO the company has deferred roughly 2.1 × 25% ≈ **$0.5bn** of cumulative taxes. That's real cash it kept, and the FIFO twin would have paid it.
  5. Be careful with ratios. Inventory turnover as reported = 115.0 ÷ 7.0 = 16.4×, and restated = 114.8 ÷ 9.1 = 12.6×. Never mix a LIFO numerator with a FIFO-comparable peer's denominator. Restate both companies to FIFO, then compare.
  6. Last, check for liquidation. The reserve rose $0.2bn, so there was no LIFO liquidation this year. Had it fallen while unit volumes fell, part of reported margin would be old-layer, one-time profit, and the 10-K would have to quantify it.

Worked example 4: LCNRV write-down, and the reversal asymmetry

Synthetic Meridian Apparel buys 10,000 jackets at ₹2,000 (₹2.00 crore). Then the season fails. The estimated selling price is ₹1,900 and costs to sell are ₹150, so NRV = 1,750. You write down ₹250 × 10,000 = ₹25 lakh (Dr write-down expense within COGS, Cr inventory). In Year 2 the style unexpectedly revives before any units are sold. Now the ESP is ₹2,250 with costs to sell of ₹150, so NRV is ₹2,100, above cost. In Year 3 all 10,000 units sell at ₹2,250, with selling costs of ₹150/unit (₹15 lakh, in opex).

Pre-tax P&L effect (₹ lakh)Year 1Year 2Year 3Lifetime
IFRS / Ind AS(25) write-down+25 reversal (restore to cost ₹2,000 — capped at original cost, even though NRV is ₹2,100)+25 gross profit − 15 selling = +10+10
US GAAP(25) write-down0 (₹1,750 is the new cost basis — reversal prohibited)+50 gross profit − 15 selling = +35+10

The lifetime economics match, and only the timing differs. IFRS/Ind AS report the recovery when value recovers. US GAAP smuggles it into gross margin when the goods finally sell. That gives you two things to watch. A US company's margin surge after a big write-down year is partly mechanical, since the "big bath" set up cheap cost bases. And an IFRS/Ind AS company's P&L can carry a reversal credit inside COGS. Check the inventory note's write-down/reversal disclosure before you celebrate an operational improvement.

Worked example 5: FIFO vs weighted average under a perpetual system, and DIO (India)

Synthetic Kaveri Steels Pvt Ltd; ₹. The Arjun Trading dataset used a periodic system, with one costing at year-end. Real ERPs cost perpetually, after every transaction, so the weighted-average number moves with each purchase. That's a moving average. Run one stream both ways. Here are the transactions in order:

EventUnitsUnit cost (₹)Value (₹)
Opening4005002,00,000
Purchase 16005403,24,000
Sale 1(700)——
Purchase 25005602,80,000
Sale 2(600)——

That's 1,500 units available for ₹8,04,000, of which 1,300 are sold, leaving 200 units at the end. At a selling price of ₹700, revenue is ₹9,10,000.

Perpetual FIFO. The oldest layer leaves first, transaction by transaction. Sale 1 (700) = 400 × 500 + 300 × 540 = ₹3,62,000. Sale 2 (600) takes the 300 units left of Purchase 1, then 300 of Purchase 2, so 300 × 540 + 300 × 560 = ₹3,30,000. COGS = ₹6,92,000, and ending = 200 × 560 = ₹1,12,000. Notice that a periodic FIFO gives the identical result (400 × 500 + 600 × 540 + 300 × 560). FIFO is path-independent, so it never matters how the sales fall between the purchases.

Moving-average (perpetual WAC). Re-average after each purchase:

  • After Purchase 1: (2,00,000 + 3,24,000) ÷ 1,000 = ₹524.00/unit. Sale 1 COGS = 700 × 524 = ₹3,66,800, and 300 units at ₹524 (₹1,57,200) remain.
  • After Purchase 2: (1,57,200 + 2,80,000) ÷ 800 = ₹546.50/unit. Sale 2 COGS = 600 × 546.50 = ₹3,27,900.
  • COGS = ₹6,94,700; ending = 200 × 546.50 = ₹1,09,300.

For contrast, periodic weighted-average takes one average over the whole pool: ₹8,04,000 ÷ 1,500 = ₹536.00. COGS is 1,300 × 536 = ₹6,96,800, and ending inventory is ₹1,07,200.

(₹)FIFO (either system)Moving-avg (perpetual)Periodic WAC
COGS6,92,0006,94,7006,96,800
Ending inventory1,12,0001,09,3001,07,200
Gross profit2,18,0002,15,3002,13,200
DIO (ending ÷ COGS × 365)59.1 days57.4 days—

The periodic example couldn't show you two things. (1) Moving-average WAC (₹6,94,700) ≠ periodic WAC (₹6,96,800). The timing of the averaging changes the answer, so "weighted average" isn't one number until you name the system. Only FIFO is immune. (2) In rising prices WAC's COGS still comes out above FIFO's, as the Arjun Trading run predicted. LIFO, which an Indian filer can't use, would be higher still. Perpetual mechanics change the size of the gap and leave its direction alone. Finally, DIO = Inventory ÷ COGS × 365 turns the ending-inventory line into ~59 days of stock under FIFO. Track it beside DSO on the working-capital watch list.

Worked example 6: A DSO and allowance build that catches a stretching book (US)

Synthetic Cardinal Instruments Inc.; $m. The revenue line looks healthy. Its receivables tell another story. Here are two years:

$mYear 1Year 2
Revenue1,0001,100
Gross trade receivables126187
Allowance for ECL67
Net trade receivables120180
Write-offs during year—1.5

Step 1: DSO. DSO = net receivables ÷ revenue × 365. Year 1 = 120 ÷ 1,000 × 365 = 43.8 days, and Year 2 = 180 ÷ 1,100 × 365 = 59.7 days. That's a +15.9-day jump.

Step 2: the growth divergence. Revenue grew 10%, but net receivables grew 180 ÷ 120 − 1 = 50% (gross +48%). When receivables sprint at five times revenue, you're looking at the classic signature of stretched credit terms, channel stuffing, or premature/fictitious revenue. You saw it with Satyam and Manpasand in the receivables section.

Step 3: size the excess. Had the receivables-to-revenue ratio held, Year-2 net receivables would be (120 ÷ 1,000) × 1,100 = $132m. Actual receivables are $180m, so $48m is tied up beyond what the growth justifies. Cross-check it. One day of DSO at Year-2 revenue = 1,100 ÷ 365 = $3.01m, and 15.9 extra days × $3.01m ≈ $48m. You reach the same money two ways.

Step 4: is the allowance keeping up? Coverage = allowance ÷ gross receivables. Year 1 = 6 ÷ 126 = 4.76%, and Year 2 = 7 ÷ 187 = 3.74%. Coverage fell while the book ballooned and aged. That's the tell of under-provisioning, and it flatters current profit. From the roll-forward, the Year-2 P&L impairment charge is closing − opening + write-offs = 7 − 6 + 1.5 = $2.5m.

The verdict. A +10% revenue line hides a book growing 50%, DSO stretching ~16 days, and coverage shrinking. All three signals point the same way. Open the credit-losses note next (allowance roll-forward, ageing), then the revenue-recognition policy. You've just built the numeric skeleton of the receivables red flag, which you'll formalize later with the liquidity-and-leverage ratios and earnings games. And notice that reported revenue was the last number to move.

Practice set

Work each problem fully on paper before opening the solution (working agreement #3). P1–P4 are guided, P5–P10 independent, P11–P12 timed.

P1 (guided). A telecom retailer sells a bundle: handset (SSP ₹30,000) + 12-month service plan (SSP ₹1,000/month) for a package price of ₹36,000, handset delivered day 1. Allocate the price and state revenue in month 1.

Solution. Total SSP = 30,000 + 12,000 = ₹42,000, so the ratio = 36,000/42,000 = 6/7. For the handset, 30,000 × 6/7 = ₹25,714, recognized at a point in time on day 1. For the service, 12,000 × 6/7 = ₹10,286. That's ₹857/month over 12 months, recognized over time. Month-1 revenue = 25,714 + 857 = ₹26,571. Assuming the ₹36,000 was collected upfront, the contract liability after month 1 = 10,286 − 857 = ₹9,429. The ₹6,000 bundle discount was spread pro rata, and neither PO absorbed it alone.

P2 (guided). (a) An online travel agent lists a hotel room for ₹10,000. The hotel receives ₹8,500, while the OTA keeps ₹1,500. The hotel sets availability and honours the stay. Unsold nights cost the OTA nothing. (b) A charter operator pre-buys a 50-seat block at ₹8,500/seat, non-refundable, and resells at ₹10,000. State each firm's revenue per unit, and say why.

Solution. (a) The OTA is an agent and reports net revenue of ₹1,500. The hotel controls the service before transfer, and the OTA has no inventory risk and limited fulfilment responsibility. (b) The charter operator is a principal and reports gross revenue of ₹10,000, with ₹8,500 of COGS. Its non-refundable block is inventory risk, and it controls the seats and sets resale prices. It's the same industry with opposite accounting, because the control test decides and the industry doesn't. Empty seats hit (b)'s P&L as unsold inventory cost. They never touch (a)'s.

P3 (guided). A SaaS firm (FY ends 31 March) bills ₹12 lakh on 1 October for a 12-month subscription starting that day. (a) Revenue and deferred revenue at 31 March. (b) At 31 December. (c) Entries.

Solution. Monthly revenue = ₹1,00,000. (a) Six months have been delivered (Oct–Mar), so revenue is ₹6,00,000 and the contract liability is ₹6,00,000. (b) Three months have been delivered, which leaves deferred revenue of ₹9,00,000. (c) On 1 Oct: Dr Cash 12,00,000 / Cr Contract liability 12,00,000. Each month: Dr Contract liability 1,00,000 / Cr Revenue 1,00,000. You've seen this CFO/P&L pattern before, in the statement-linkage capstone. All the cash arrived in H1. The P&L drips, and deferred revenue is the reconciling item.

P4 (guided). Contractor wins a ₹200 crore fixed-price job, estimated cost ₹160 crore. Year 1: costs ₹64 crore. Year 2: costs ₹72 crore, and total estimated cost is revised to ₹170 crore. (a) Revenue and gross profit each year. (b) Year 3 if the job finishes at ₹170 crore total cost. (c) Instead, suppose the year-2 revision was to ₹205 crore total cost: year-2 P&L?

Solution. (a) In Y1, 64/160 = 40%, so revenue = 200 × 0.40 = ₹80 cr and profit is ₹16 cr. In Y2 cumulative cost is 136, and % = 136/170 = 80%. Cumulative revenue is therefore 160, so Y2 revenue = 160 − 80 = ₹80 cr and Y2 profit = 80 − 72 = ₹8 cr. Check it: cumulative profit 24 = 80% × the new total profit of 30. The whole margin cut landed in Y2, which is the cumulative catch-up at work. (b) In Y3, revenue is 200 − 160 = ₹40 cr. Costs are 34, so profit is ₹6 cr. Lifetime profit 30 = 200 − 170, as it should. (c) Now the total expected loss = ₹5 crore, and you recognize it in full straight away. % = 136/205 = 66.34%, so cumulative revenue is 132.68 and Y2 revenue is ₹52.68 cr. Y2 expense = costs 72 + onerous-contract provision 1.68, which makes the Y2 result −₹21.00 cr. Check: cumulative −5 = +16 in Y1 − 21 now. Loss-making contracts never dribble losses out over time. They take them at once.

P5. Classify each as trade receivable / contract asset / contract liability / unbilled receivable (financial asset): (a) milestone 3 of 5 is 60% done; billing allowed only on milestone completion; (b) invoice issued last week, 30-day terms; (c) annual maintenance fee collected in advance, 8 months remaining; (d) time-and-materials work performed in March, invoice raised (per contract) on 1 April.

Solution. (a) Contract asset, because the right is conditional on completing the milestone. (b) Trade receivable: it's unconditional and the clock is running. (c) Contract liability. The ₹ has been received and the performance is still owed. (d) Unbilled receivable. The right became unconditional when the work was done, and only the invoicing mechanics remain. That split is why Infosys reports unbilled revenue on two lines. ECL applies to (a), (b), and (d), and (a) also carries performance/dispute risk.

P6. Gross receivables ₹80 crore: not due ₹48; 1 to 90 days ₹16; 91 to 180 ₹8; 181 to 365 ₹5; >365 ₹3. Lifetime loss rates: 0.5%, 3%, 12%, 30%, 70%. The opening allowance is ₹4.10 crore, and write-offs during the year are ₹0.90 crore. Compute the closing allowance, the P&L charge, and post the entries.

Solution. ECL = 48×0.005 + 16×0.03 + 8×0.12 + 5×0.30 + 3×0.70 = 0.24 + 0.48 + 0.96 + 1.50 + 2.10 = ₹5.28 crore. For the roll-forward, 4.10 − 0.90 = 3.20, so the charge = 5.28 − 3.20 = ₹2.08 crore. Post the write-off as Dr Allowance 0.90 / Cr Trade receivables 0.90, with no P&L effect. Post the provision as Dr Impairment loss on receivables 2.08 / Cr Allowance 2.08. Coverage = 5.28/80 = 6.6%. That's high, because 10% of the book is >180 days, so ask the Schedule III ageing why.

P7. An NBFC has three exposures: A ₹50 crore, current, 12-month PD 1.5%, lifetime PD 6%, LGD 35%. B ₹20 crore, 45 days past due, lifetime PD 20%, LGD 35%. C ₹8 crore, 120 days past due, LGD 65%. (a) Stage and ECL for each (Ind AS 109). (b) On what base does interest accrue for each? (c) What changes under US CECL?

Solution. (a) A is performing, so it's Stage 1, with 12-month ECL = 50 × 0.015 × 0.35 = ₹0.26 cr. B is >30 DPD, which triggers the SICR presumption. It goes to Stage 2, with lifetime ECL = 20 × 0.20 × 0.35 = ₹1.40 cr. C is >90 DPD, so it's Stage 3 with PD = 100%, and 8 × 0.65 = ₹5.20 cr. The total is ₹6.86 crore. (b) A and B accrue interest on the gross carrying amount. C accrues on the net amount (8 − 5.20 = ₹2.80 cr). (c) CECL has no stages, so A would carry lifetime ECL from day one: 50 × 0.06 × 0.35 = ₹1.05 cr, against ₹0.26 cr. CECL front-loads. B and C come out similarly under both.

P8. Opening stock is 200 units @ ₹50. You buy 300 @ ₹56, then 100 @ ₹60, and sell 450 units @ ₹90, on a periodic system. Compute COGS, ending inventory, gross profit, and tax @30% under FIFO, LIFO, WAC. Then find the LIFO reserve and the cash-tax difference against FIFO.

Solution. Available: 600 units, ₹32,800 (10,000 + 16,800 + 6,000). Ending: 150 units. Under FIFO, COGS = 200×50 + 250×56 = 24,000, with EI = 50×56 + 100×60 = 8,800. Under LIFO, COGS = 100×60 + 300×56 + 50×50 = 25,300, with EI = 150×50 = 7,500. Under WAC, 32,800/600 = ₹54.667, so COGS = 24,600, with EI = 8,200. Each COGS + EI comes to 32,800, as it should. On revenue of 40,500, FIFO gives a gross profit of 16,500. WAC gives 15,900. LIFO gives 15,200. Tax: 4,950 / 4,770 / 4,560. LIFO reserve = 8,800 − 7,500 = ₹1,300, so the cash tax saved against FIFO = 1,300 × 30% = ₹390. Prices rose, and the opening layer was uniform, so ΔReserve = closing reserve.

P9. A US firm reports LIFO inventory (₹-equivalent aside): inventory $4.0bn; LIFO reserve $0.9bn opening, $1.2bn closing; COGS $21.0bn; net income $1.8bn; tax 25%. (a) Restate inventory, COGS, and net income to FIFO, and state the equity adjustment. (b) Next year the reserve falls to $0.7bn while unit volumes shrink. Interpret it.

Solution. (a) FIFO inventory = 4.0 + 1.2 = $5.2bn. ΔReserve = +0.3, so FIFO COGS = 21.0 − 0.3 = $20.7bn and FIFO NI = 1.8 + 0.3 × 0.75 = $2.03bn. Equity rises by 1.2 × 0.75 = +$0.9bn, with a DTL of +$0.3bn. (b) ΔReserve = −0.5 with falling volumes, which means LIFO liquidation. Old cheap layers entered COGS, so reported LIFO income is higher than FIFO income by $0.5bn pre-tax. It's a one-time, low-quality boost. Find the mandated liquidation disclosure in the inventory note and strip it out of your view of run-rate margin.

P10. 5,000 units, cost ₹1,200 each. Year-end: estimated selling price ₹1,150, costs to sell ₹100. (a) Write-down and entry. (b) Next year, 3,000 units still held, NRV recovers to ₹1,260: treatment under Ind AS 2 and US GAAP. (c) Why does the ₹1,260 not take the carrying value to ₹1,260 under Ind AS?

Solution. (a) NRV = 1,150 − 100 = ₹1,050, below cost, so write down 150 × 5,000 = ₹7,50,000. Dr Write-down of inventories (COGS) 7,50,000 / Cr Inventory 7,50,000. (b) Ind AS 2 says reverse on the units still held. Restore them to min(cost 1,200, NRV 1,260) = ₹1,200, which credits 150 × 3,000 = ₹4,50,000 to the P&L (disclosed). US GAAP allows no reversal. ₹1,050 is the new cost, and the recovery shows up as extra gross margin when the units sell. (c) Reversals are capped at the original write-down, so inventory may never be carried above original cost. Recovery above cost is unrealized profit, and it's recognized only on sale.

P11 (timed: 10 minutes, six one-liners). (i) Is GST part of an Indian company's revenue? (ii) Say when Costco recognizes a $65 membership fee received on 1 September. (iii) Contract assets are +45% YoY and revenue +8%. What's your first hypothesis? (iv) The LIFO reserve is falling while volumes fall. State the margin implication. (v) In deflation, which method minimizes tax? (vi) A SaaS firm's deferred revenue shrinks two straight quarters while reported revenue grows. Give your read.

Solution. (i) No. The company collects it as the government's agent, so it's excluded from the transaction price. Pre-FY18 excise was gross, though, so watch old time series. (ii) Ratably over the 12-month membership, about $5.42/month, and the unearned balance is a contract liability. (iii) Revenue is being recognized ahead of the right to bill. Suspect aggressive over-time estimates or milestone slippage, and read the contract-balances note and the KAMs. (iv) Old cheap layers are flattering reported margin (liquidation), and it's one-time. (v) FIFO, because the oldest (highest) costs go to COGS, which minimizes profit and tax. (vi) Billings are running below revenue. Future revenue is being eaten faster than it's replaced. Demand or renewal weakness (or a billing-terms change) shows up here before the P&L slows.

P12 (timed: 12 minutes). From a synthetic Indian IT company's notes (₹ crore): unbilled revenue 1,240, of which "classified as contract assets" 720 and "classified as financial assets" 520. Unearned revenue is 640, revenue growth is 8%, and last year's contract assets were 515. (a) Why two categories of unbilled revenue? (b) Which lines carry ECL allowances? (c) Interpret the contract-asset trend. (d) Which line represents customer-funded float?

Solution. (a) Fixed-price milestone work earns revenue whose billing right is still conditional, so it's a contract asset. T&M work already performed has an unconditional right that's waiting only on the invoice, so it's a financial asset (unbilled receivable). (b) Both unbilled categories and trade receivables carry ECL. Contract assets also carry performance/dispute risk on top. (c) Contract assets grew 720/515 − 1 ≈ +40% against +8% revenue. Revenue is being recognized well ahead of billing rights. Dig into cost-to-complete estimates, milestone disputes, or a mix shift to fixed-price mega-deals. (d) Unearned revenue (₹640 crore). Customers paid before performance, so it funds working capital. You'll formalize those negative-WC dynamics with the liquidity-and-leverage ratios.

P13 (guided). Bharat Logistics (synthetic). A ₹80 lakh freight contract carries a performance bonus: an extra ₹10 lakh if a delivery window is met, nothing otherwise. Management judges the bonus 60% likely. (a) Transaction price under the expected-value and the most-likely-amount methods. (b) Which method fits a single binary outcome, and does the constraint let you include the bonus now? (c) If the bonus instead had five possible payout levels, which method?

Solution. (a) Expected value = 80 + 0.60 × 10 = ₹86 lakh. On the most-likely amount, the bonus is earned (60% > 40%), giving ₹90 lakh. (b) A single yes/no outcome is the textbook most-likely-amount case. But the constraint asks whether it's highly probable that no significant reversal will occur, and 60% isn't. So you include none of the bonus and set the transaction price at ₹80 lakh. Revisit it each period as certainty builds. (c) A range of many outcomes calls for expected value (probability-weighted). The estimation method and the constraint are two separate gates, and you have to clear both.

P14 (guided). Foghorn Equipment (synthetic). A machine is sold on 1 Jan Year 1 for a single payment of $121,000 due in two years; its cash selling price today is $100,000. (a) Revenue at delivery. (b) Interest income in Year 1 and Year 2 under the effective-interest method. (c) Why must this be split, and when may it be ignored?

Solution. The gap embeds a significant financing component. The implied rate comes from 100,000 × (1 + r)² = 121,000 → (1 + r)² = 1.21 → r = 10%. (a) Revenue at delivery is the cash price, $100,000, and the receivable is recorded at $100,000. It isn't recorded at $121,000. (b) Interest in Year 1 = 100,000 × 10% = $10,000, taking the carrying amount to $110,000. In Year 2 it's 110,000 × 10% = $11,000, and the receivable reaches $121,000 at collection. (c) Booking all $121,000 as revenue would overstate the top line and bury $21,000 of financing income. The split keeps revenue at the true selling price. The practical expedient lets you ignore financing when performance and payment are ≤12 months apart. Here they're two years apart, so the split applies.

P15. ($, perpetual system.) Opening 300 units @ $40; buy 200 @ $46; sell 350; buy 250 @ $50; sell 300. Compute COGS and ending inventory under (a) perpetual FIFO and (b) moving-average, then (c) contrast with periodic weighted-average.

Solution. You have 750 units available for $33,700. You sell 650, leaving 100. (a) Under FIFO, sale 1 = 300 × 40 + 50 × 46 = $14,300. Sale 2 = 150 × 46 + 150 × 50 = $14,400. COGS is $28,700, and ending inventory is $5,000 (100 × 50). (b) Under moving-average, the average after the first buy = (12,000 + 9,200) ÷ 500 = $42.40, so sale-1 COGS = 350 × 42.40 = $14,840. After the second buy the average = (150 × 42.40 + 12,500) ÷ 400 = $47.15, so sale-2 COGS = 300 × 47.15 = $14,145. COGS is $28,985, and ending inventory is $4,715. (c) Periodic WAC gives 33,700 ÷ 750 = $44.933, so COGS is $29,206.67 with ending inventory of $4,493.33. That's three methods and three answers. FIFO is $28,700 under either system, while moving-average and periodic WAC differ purely by the timing of the averaging.

P16. Vindhya Pipes (synthetic); ₹ crore. FY1: revenue 2,000, net receivables 300, gross receivables 315, allowance 15. FY2: revenue 2,200, net receivables 460, gross receivables 476, allowance 16. (a) DSO each year. (b) Receivables growth vs revenue growth. (c) Coverage each year. (d) One-sentence verdict and the exact disclosure you would open first.

Solution. (a) DSO FY1 = 300 ÷ 2,000 × 365 = 54.8 days, and FY2 = 460 ÷ 2,200 × 365 = 76.3 days (+21.6). (b) Net receivables grew 460 ÷ 300 − 1 = 53% against revenue growth of +10%. (c) Coverage FY1 = 15 ÷ 315 = 4.76%, and FY2 = 16 ÷ 476 = 3.36%. It's falling. (d) Receivables racing at five times revenue, DSO up ~22 days, and coverage shrinking make a classic pre-blowup pattern. Open the Schedule III trade-receivables ageing table first (and the revenue-recognition/credit-terms note) to see whether the growth is in the oldest buckets.

P17. Northwind Systems (synthetic); $. A $600,000 software-plus-implementation contract is recognized evenly at $50,000/month over 12 months from 1 Jan. Billings: $200,000 on 1 Jan, $250,000 on 1 Jul, $150,000 on 1 Nov. State the net contract position (asset or liability) at (a) 31 Mar, (b) 30 Jun, (c) immediately after the 1 Jul billing, and (d) 30 Sep.

Solution. Compare cumulative revenue with cumulative billings. (a) At 31 Mar, revenue of 3 × 50,000 = 150,000 against 200,000 billed leaves a contract liability of $50,000. (b) At 30 Jun, revenue of 300,000 against 200,000 billed gives a contract asset of $100,000. Performance has overtaken billing, so the position has flipped. (c) Right after the 1 Jul billing, revenue of 300,000 against 450,000 billed gives a contract liability of $150,000. (d) At 30 Sep, revenue of 450,000 matches billings of 450,000, so the position is nil. One contract can show a liability, then an asset, then a liability again on different dates. So read the contract-balances note, and never trust a single snapshot.

P18 (timed: 12 minutes, stretch). Six rapid items from synthetic filings; compute or answer in one line each. (i) Marketplace GOV ₹20,000 cr, revenue ₹3,000 cr: find the take rate. (ii) Net receivables $250m, revenue $2,000m: find DSO. (iii) Provision matrix ₹50 cr @ 1% + ₹20 cr @ 6% + ₹10 cr @ 25%: find the required allowance. (iv) In rising prices, does FIFO or LIFO report the higher COGS? (v) A LIFO filer's COGS is $30.0bn and its LIFO reserve rose $0.8bn. What's the FIFO-equivalent COGS? (vi) 1,000 units at cost ₹600, NRV ₹550: find the write-down.

Solution. (i) 3,000 ÷ 20,000 = 15%. (ii) 250 ÷ 2,000 × 365 = 45.6 days. (iii) 0.50 + 1.20 + 2.50 = ₹4.20 cr. (iv) LIFO, because the newest, dearest costs flow to COGS. (v) FIFO COGS = LIFO COGS − ΔReserve = 30.0 − 0.8 = $29.2bn. You subtract the change in the reserve, and the level doesn't enter. (vi) NRV 550 < cost 600, so the write-down is (600 − 550) × 1,000 = ₹50,000. To score yourself: 6/6 in time means you're fluent. At 4 or fewer, redo worked examples 5 to 6 and P8/P15 before the mastery check.

Applied mini-project

The revenue–receivables–inventory field audit (4–5 hours, one India + one US filing).

Part A: Infosys (India). Pull the latest Infosys annual report from infosys.com → Investors, or from BSE/NSE filings. Screener.in is fine for quick numbers, but trace every figure you use to the AR itself. Find and extract: (1) the revenue-recognition policy, meaning which work is point-in-time and which over-time, and which method measures progress; (2) the revenue disaggregation note; (3) unbilled revenue, split into contract assets and financial assets; (4) unearned revenue; (5) the ECL/allowance disclosure and the Schedule III trade-receivables ageing table. Then compute unbilled and unearned as % of revenue, allowance coverage (allowance ÷ gross receivables), and YoY growth of contract assets against YoY revenue growth.

Part B: Kroger (US) + DMart (India). Pull Kroger's latest 10-K (SEC EDGAR → full-text search "LIFO"). From the inventory note, take the LIFO statement and the LIFO reserve for the current and prior year. Restate FIFO inventory, FIFO COGS, the change in net income (use the effective tax rate from the tax note, or 25%), and the equity adjustment. Then open the inventory policy note in Avenue Supermarts' (DMart) annual report. Which cost formula does it use, and why isn't LIFO even available to it? Close with 3 to 4 sentences on what this does to any comparison of grocery margins between India and the US.

Deliverable: a two-page memo with the conclusion first, in three sentences: what you found, and whether anything warrants a closer look. Add one exhibit table per part, and give every number a note/page reference.

Scoring rubric (0 = missing/wrong, 1 = partial, 2 = complete and correct; pass ≥ 9/12):

Criterion0/1/2
All required disclosures located, with note/page references
Contract-balance metrics computed correctly (unbilled/unearned %, CA vs revenue growth)
ECL reading correct (coverage, ageing interpretation, trend vs prior year)
LIFO→FIFO restatement arithmetic correct (inventory, COGS, NI, equity)
Interpretation shows the analyst lens (leading indicators, comparability caveats — not just numbers)
Communication: conclusion first, clean exhibits, traceable numbers

Case Lab: run case CL-1.3 in the app's Cases tab for this week, a guided, auto-graded walk through a synthetic filer's revenue-recognition policy, receivables ageing, and inventory note, scored against the rubric above.

Reading & resources

  • Mike Piper, Accounting Made Simple. [Paid, inexpensive] [Beginner]: revenue/receivables/inventory chapters as a gentle re-read.
  • Kieso, Weygandt & Warfield, Intermediate Accounting. [Paid] [Intermediate]: Ch. 7 (Cash & Receivables), Ch. 8 to 9 (Inventory: cost-flow methods; LCNRV/LCM), Ch. 18 (Revenue Recognition). It's the reference text, so do the brief exercises at each chapter end.
  • EY, US GAAP vs IFRS: The Basics. [Free] [Intermediate]: the revenue, inventory, and financial-instruments (impairment) sections. It's the fastest cross-standard reference alive, a free PDF updated periodically, so search for the latest edition.
  • Deloitte IAS Plus (iasplus.com). [Free] [Intermediate]: standard summaries for IFRS 15, IFRS 9, IAS 2. Each takes ~10 minutes and is authoritative.
  • KPMG Handbook: Revenue Recognition and PwC Viewpoint, Revenue / Credit losses guides. [Free] [Advanced]: when you hit a really hard contract (licences, consignment, bill-and-hold), these free practitioner handbooks have the worked answer.
  • ICAI Educational Material on Ind AS 115 and Ind AS 109 (icai.org). [Free] [Intermediate]: Indian-context Q&A with worked examples, including provision matrices.
  • Wharton/Brian Bushee, Introduction to Financial Accounting (Coursera). [Free to audit] [Beginner]: the accounts-receivable and inventory weeks reinforce this week's material with auto-graded problems.
  • Farhat Lectures (YouTube). [Free] [Beginner→Intermediate]: searchable playlists, "ASC 606 five steps", "percentage of completion", "CECL", "FIFO LIFO weighted average", "LIFO reserve"; full worked problems on a whiteboard.
  • Zerodha Varsity, Fundamental Analysis module. [Free] [Beginner]: the annual-report-reading chapters; map this week's notes onto its walkthrough of an Indian AR.
  • CFA Institute Level I FRA readings, "Inventories" and "Analysis of Inventories/Revenue." [Paid, curriculum] [Intermediate]: the LIFO-reserve adjustment drill set is the best in print.
  • Howard Schilit, Financial Shenanigans (4th ed.), Part Two. [Paid] [Intermediate]: earnings-manipulation shenanigans #1 to 2 (premature/bogus revenue). Read it now if you're impatient; Phase 2 assigns it properly.
  • Primary filings (all free). [Free]: Infosys AR & Form 20-F; Zomato/Eternal AR; Avenue Supermarts AR; L&T AR (EPC revenue note), via company IR pages, BSE/NSE, screener.in. Kroger, Costco, Salesforce, DoorDash 10-Ks, via SEC EDGAR (efts.sec.gov full-text search finds "LIFO reserve" and "contract liabilities" instantly).
  • Going deeper: IASB, IFRS 15 & IFRS 9 Illustrative Examples / Implementation Guidance (ifrs.org). [Free] [Advanced]: the standard-setters' own worked contracts: principal-vs-agent, bill-and-hold, significant financing, and the simplified-approach provision matrix (IFRS 9 IE). It's the primary source underneath every textbook example, so read one end to end when a real contract stumps you.
  • Going deeper: Stephen Penman, Financial Statement Analysis and Security Valuation, the accrual-accounting and quality-of-earnings chapters. [Paid] [Advanced]: connects revenue, receivables, and inventory accruals to earnings quality and forecasting. It's the intellectual bridge from this week into Phase 2 and Phase 3.

The Modern Analyst's Addendum

Everything above teaches this skill from first principles, by hand: that is how you learn it, and the mastery check still tests it that way. This addendum shows how a working analyst amplifies the same skill today. It adds; it never replaces. (R1/R10)

AI-Augment this skill

{
  "skill": "Applying the five-step revenue model, building an expected-credit-loss provision, and running an inventory dataset under three cost formulas",
  "use": "(1) Contract triage: paste a contract's commercial terms and ask for the candidate performance obligations, the allocation basis, and the point-in-time versus over-time argument on both sides — then make the call yourself, because the call is what an analyst is paid for. (2) Principal-versus-agent: ask it to apply the control indicators to a described arrangement and to state which indicator it found weakest; that weakest indicator is where the gross-versus-net argument actually lives. (3) Note-hunting at scale: ask a document tool to locate the contract-balances note, the ageing table and the inventory policy across ten annual reports so you spend your time reading them rather than finding them.",
  "tools": ["Document/PDF AI — Claude with file upload, NotebookLM for contract-balances and ageing notes", "Chat assistants — for five-step and control-indicator arguments", "Coding assistants — for the provision matrix and cost-formula code below"],
  "prompt": "Apply the five-step model (Ind AS 115 / IFRS 15 / ASC 606) to this arrangement: <PASTE TERMS>. For each step give your conclusion, the specific contract language you relied on, and the strongest counter-argument. For step 5, argue BOTH point-in-time and over-time and say what fact would settle it. Do not invent facts not in the text; where the terms are silent, say 'silent' and stop.",
  "verify": "Recompute every allocation yourself on relative standalone selling prices — the arithmetic is where transcription errors and invented standalone prices hide. For an ECL matrix, recompute the weighted provision from the ageing table and reconcile it to the provision the filer actually booked; a gap is either a stage-3 specific provision or an assumption you have not found. For inventory, re-run the dataset under each formula yourself: a model that tells you FIFO gives a higher gross profit in a rising-price world is repeating a rule, not computing your numbers (Guardrail 1-5).",
  "diy": "You must be able to run the five steps, build both ECL approaches and compute all three cost formulas by hand — that is this module's gate. AI finds the note; you read it."
}

Modern Data Analysis

By hand first. You built the provision matrix and ran the inventory dataset with a pencil. The code below makes that same arithmetic repeatable across every bucket, every period and every peer.

Today's workflow. Two of this week's estimates are naturally tabular, so they're naturally code. An ECL provision matrix is a table of ageing buckets, balances and loss rates, and the provision is one weighted sum. Once the calculation is written down, the interesting question stops being "what is the provision?" and becomes "how have the loss rates moved?" The synthetic matrix below gives ₹79 crore on ₹1,760 crore of receivables (4.49%). All the analytical content is in the last two buckets, which carry 9% of the balance and 63% of the provision. Inventory works the same way: one dataset, three cost formulas, three gross profits. On the synthetic lots below, FIFO produces a gross profit of 1,400, weighted average 1,150 and LIFO 900, on identical revenue and identical physical flow. That 56% spread comes from nothing but the cost formula. It's the reason the LIFO reserve exists, and a peer comparison that ignores it isn't really a comparison.

Tools & sources (IN + US). Use pandas for both tables. For India, you need the Schedule III trade-receivables ageing table (mandatory since FY22), the contract-balances note under Ind AS 115, and the inventory policy note in the annual report. For the US, use EDGAR XBRL and the 10-K's contract-balances and inventory notes. Add the LIFO-reserve disclosure, which lets you restate a LIFO filer to FIFO.

import pandas as pd                      # synthetic figures, ₹ crore — R3
m = pd.DataFrame({"bucket": ["current", "1-30", "31-60", "61-90", ">90"],
                  "balance": [1000, 400, 200, 100, 60],
                  "rate": [0.005, 0.02, 0.08, 0.20, 0.50]})
m["ecl"] = m.balance * m.rate
print(m.ecl.sum(), round(m.ecl.sum() / m.balance.sum() * 100, 2))   # 79.0 4.49

lots, sold, revenue = [(100, 10.0), (100, 12.0), (100, 15.0)], 150, 3000
wa = sum(q * p for q, p in lots) / sum(q for q, _ in lots)          # 12.3333
cogs = {"FIFO": 100 * 10 + 50 * 12, "WA": sold * wa, "LIFO": 100 * 15 + 50 * 12}
print({k: round(revenue - v, 2) for k, v in cogs.items()})          # 1400 / 1150.0 / 900

Verify. Reconcile the matrix's total to the provision the filer actually booked, and ignore what you expected it to be. The residual is usually a stage-3 specific provision on a named counterparty. The point of the exercise is to find out when it isn't. For inventory, confirm which formula the filer actually applies before you compare anything to anything. India prohibits LIFO under Ind AS 2, while US GAAP permits it, so the restatement runs one way only.

Quantitative lens

Nobody hands you the loss rates in a provision matrix. They're estimated. The historical part comes from cohort roll rates, the observed proportion of each ageing bucket that eventually became uncollectible. The forward-looking part comes from the macro overlay that Ind AS 109 / IFRS 9 require. So the provision is a real statistical object, and it comes with three questions. How stable are the rates across cycles? How much of the provision is driven by the buckets with the fewest observations, where the estimate is worst? The third is how sensitive the reported provision is to the overlay, the most judgemental input in the whole calculation. On the synthetic matrix above, the two oldest buckets carry 63% of the provision on 9% of the balance. A modest change in a sparsely-observed loss rate therefore moves reported profit more than a large change in a well-observed one.

Be clear about the limits. Cohort loss rates are estimated on a past that may not repeat. The samples in the oldest buckets are usually small. And a company that changes its collection policy invalidates its own history. This is estimation with a real standard error, and it should be reported and used that way. A single percentage hides that.

Do it in code: build the roll-rate matrix from a receivables cohort panel, bootstrap a confidence interval around each bucket's loss rate, and sweep the macro overlay. See G2/DA1.05 and G1/QM1.01.

  • G2 · DA1.02 Pandas Data Wrangling: ageing tables, cohort panels and inventory lots are all groupbys; this is the grammar that makes them one line each.
  • G2 · DA1.05 Statistics in Code: putting an interval around an estimated loss rate instead of quoting it as a fact, and testing whether this year's rates differ from last year's at all.
  • G1 · QM1.01 Probability, Distributions & Estimation: the estimation theory underneath a roll-rate model, including why the sparsest bucket is both the most influential and the least reliable.

Teach it back & journal

Feynman prompt. Write a one-page explainer for a smart 15-year-old titled "Three ways companies count money they don't have yet (and one way they hide money they do have)". Build it on four examples. (1) A Zomato order, and why the app's 'sales' are a fifth of the food's price. (2) A gym membership paid in January, and why the gym hasn't 'earned' it in January. (3) A shopkeeper's sugar bought at rising prices, and how the same sugar can produce three different profits. (4) The allowance, and how a company admits, in advance, that some customers won't pay. Keep it free of jargon. You may not use the words "performance obligation," "ECL," or "cost-flow assumption."

Journal reflection. Every number this week rests on an estimate someone chose: expected returns, loss rates, cost-to-complete, NRV, SSPs. Which one would you be most tempted to nudge under quarterly earnings pressure, and why that one? Which disclosure would catch you (name the note or table), and how many quarters would it take? Write it down before you forget what temptation looks like from the inside. This entry seeds your Phase 2 forensic checklist.

This module's flashcards and mastery quiz are wired into the app: see the node's Quiz and Reviews.

Advertisement

The gate

The module's flashcards and its quiz are in the app. The quiz is the gate: you need 85% to pass it, and the next module opens when you do.