Contract liability, contract asset and the transaction price
A booking's transaction price is the sum of its charges treated "With the unit"; while revenue is deferred, demands for those charges are credited to a contract liability (billed ahead of revenue), a revenue run debits it as revenue is recognised, and revenue recognised ahead of billing sits in the contract asset.
Contract liability, contract asset and the transaction price
The transaction price is what a booking earns the developer for the unit itself: every charge on the termsheet that the books treat as part of the unit. Until the unit is delivered that money is not yet revenue, so each demand for those charges is booked as a contract liability, an amount billed ahead of the revenue. When a revenue run recognises the revenue it debits the liability; if it ever recognises more than has been billed, the excess is a contract asset, revenue ahead of billing.
How it works in NirmaanOne
Revenue treatment decides what is in the price
Every sale charge and tenant charge has a Revenue treatment on Component mappings (the Edit permission on Chart of Accounts):
| Treatment | Meaning | What happens when it is demanded |
|---|---|---|
| With the unit | part of the unit's price, recognised when the unit is | credited to the Contract liability ledger of the mapping (blank = Contract Liability - Sale of Units, 2100) while the policy defers revenue |
| On billing | a separate obligation satisfied when billed | credited to the charge's revenue ledger at once |
| Pass-through | money held for others (deposits, maintenance, society) | credited to the ledger it is mapped to; never revenue |
When the CA has not chosen a treatment, a charge mapped to an income ledger counts as With the unit and anything else as Pass-through. The seeded mappings put the unit price components, club, legal, development and AC piping charges and the tenant legal / other charges on 2100, and the differential-area charge on Contract Liability - Differential Area (2110). Taxes, benefits and commissions have no treatment.
The transaction price
For a booking, the transaction price is the sum of every receivable sale or tenant charge on its termsheet whose treatment is With the unit, each charge taken as the total of its schedule rows. GST, on-billing charges and pass-through money are not in it. For a society member's offer that has no booking, each charge counts as its amount × its number of installments. Two optional extras join the price when the policy switches them on: the significant financing component and the rehab units consideration.
Billing: the demand credits the liability
Whenever the promoter's books follow Ind AS 115 or AS (Guidance Note 2012), issuing a demand posts each With the unit line to its contract liability ledger instead of revenue; the ledger is remembered on the demand line. Under Revenue on billing nothing is deferred and demands post to revenue as before. The buyer's ledger, TDS receivable and the GST legs are unchanged (see Demands, demand runs and the GST split).
Money a buyer pays before it is demanded is a different thing: the buyer's ledger simply goes into credit, and the balance sheet shows those credit balances under Advances from Customers - Unapplied (2120) rather than netting them against receivables.
Recognition: the run moves the liability and the asset
On each revenue run line, per contract liability ledger:
- billed = the With the unit amounts on the booking's live demands (Issued, Partially Paid or Paid) dated on or before the period end;
- recognised to date = each charge's price × the booking's progress ÷ 100, rounded half-up to the paise, summed;
- Liability = billed − recognised when positive, else 0;
- Asset = recognised − billed when positive, else 0.
The "revenue recognised" journal then credits each charge's revenue ledger for the revenue of this run, debits the contract liability ledger by whatever brings its balance for the booking down to the new Liability, and debits or credits Contract Asset - Unbilled Revenue (1220) by the change in Asset. Nothing is posted for a booking whose liability only grew through demands: the demand already credited the ledger. As later demands bill what was recognised early, the asset unwinds back into the liability ledger.
The run page shows Price, Revenue to date, This run, Billed, Liability and Asset per line and their sums in the Summary; the ledger view is the Contract balances report, where the liability is shown as a credit balance (billing credits it, recognition debits it) and the asset as a debit balance.
Why
A demand is a request for money, not proof that the developer has delivered anything. Both Indian frameworks recognise revenue when control of the unit passes (or as construction progresses), so the amounts billed earlier must sit on the balance sheet as an obligation to deliver, and the amounts earned but not yet billed as a receivable-like asset. Keeping them per charge ledger (sale of units, differential area, rehab consideration) is what the disclosures need.
Example
Booking BK-2026-27-00007, unit A-1203 (795 sq ft Carpet area (Mofa)) on Sea Breeze Residency. The termsheet's receivable charges and their treatments:
| Charge | Amount | Treatment |
|---|---|---|
| Unit Base Price | ₹1,19,25,000.00 | With the unit (2100) |
| Floor Rise | ₹1,75,000.00 | With the unit (2100) |
| PLC (Preferred Location Charge) | ₹2,00,000.00 | With the unit (2100) |
| Parking | ₹5,00,000.00 | With the unit (2100) |
| Club Membership | ₹1,50,000.00 | With the unit (2100) |
| Maintenance Advance | ₹1,20,000.00 | Pass-through |
Transaction price = ₹1,19,25,000.00 + ₹1,75,000.00 + ₹2,00,000.00 + ₹5,00,000.00 + ₹1,50,000.00 = ₹1,29,50,000.00. The maintenance advance and the GST are not part of it.
The books follow Ind AS 115, Point in time, recognising on Possession handed over.
-
By 31 March 2027 demands for 50% of the plan have been issued: each credited 2100, so the ledger holds ₹64,75,000.00 for this booking. The run to 31 March 2027 shows Progress 0%, Revenue to date ₹0.00, Billed ₹64,75,000.00, Liability ₹64,75,000.00, Asset ₹0.00, and posts nothing for the line.
-
Tower A's occupation certificate is dated 5 December 2028 and the unit is handed over on 20 January 2029. Demands for 95% (₹1,23,02,500.00) have been issued by then; the last 5% is billed at possession in February. The run to 31 January 2029 takes the booking to 100%:
- recognised to date ₹1,29,50,000.00;
- Liability = max(₹1,23,02,500.00 − ₹1,29,50,000.00, 0) = ₹0.00;
- Asset = ₹1,29,50,000.00 − ₹1,23,02,500.00 = ₹6,47,500.00.
The "revenue recognised" journal for the project, dated 31 January 2029:
Ledger Debit Credit Contract Liability - Sale of Units (2100) ₹1,23,02,500.00 Contract Asset - Unbilled Revenue (1220) ₹6,47,500.00 Sale Revenue - Units (4100): base price, floor rise, PLC, parking ₹1,28,00,000.00 Other Charges Recovered - Buyers (4130): Club Membership ₹1,50,000.00 Total ₹1,29,50,000.00 ₹1,29,50,000.00 -
The possession demand of ₹6,47,500.00 is issued on 10 February 2029 and credits 2100. The run to 28 February 2029 finds billed ₹1,29,50,000.00 against recognised ₹1,29,50,000.00: Liability ₹0.00, Asset ₹0.00. Its journal: Dr 2100 ₹6,47,500.00 / Cr 1220 ₹6,47,500.00. The asset has unwound and the booking's ledgers are clear.
Under an over-time policy the same mechanics run every period; see the worked runs in Revenue recognition, where a booking at 65% progress but 50% billed shows an Asset of ₹19,42,500.00 until the next demand catches up.
Where you see it
- Component mappings: Revenue treatment and Contract liability ledger per charge.
- Revenue policy: the Framework that decides whether demands defer at all.
- Demand and Voucher: the sales voucher crediting the contract liability.
- Revenue run: Price, Billed, Liability, Asset per booking and the "revenue recognised" journals.
- Contract balances: opening, billed, recognised and closing per project for 2100 / 2110 / 2115 and 1220 (and the capitalised brokerage in 1270).
- Remaining obligation: the booked price not yet recognised.
- Balance sheet: customer credit balances under Advances from Customers.
- Ledgers: the seeded ledgers 2100, 2110, 2115, 2120 and 1220.
Related
Related
- Component mappingsScreen
Which ledger each charge component posts to in the chosen set of books (a main ledger, an optional second tax ledger, an optional cost centre and, for sale and tenant charges, the revenue treatment and contract liability ledger), and the action to copy template additions into the books.
- Revenue policyScreen
The CA's effective-dated choices on how the books recognise sale revenue and the costs that go with it: framework, method, possession trigger, OC rule, cost treatments and judgement areas.
- Revenue runScreen
One period close: what each booking and member offer recognises, the journals and cost moves it posts, the subjects it left out, and the actions to recompute, post, reverse or delete it.
- Contract balancesScreen
The Ind AS 115 contract-balances disclosure per project over a period: contract liability, contract asset and contract acquisition costs rolled forward from the ledger, with the revenue recognised in the period and how much of it came out of the opening liability.
- Remaining obligationScreen
The Ind AS 115 disclosure of revenue still to come from what is already booked: each live booking and member offer's price less what the posted revenue runs have recognised, per project, banded by the financial year of the project's expected possession.
- Balance sheetScreen
Assets against liabilities and equity as of a date, with the year's profit to date carried into equity and a check that the two sides agree.
- DemandScreen
One demand: the installments it bills, its amounts with GST, the expected TDS and what is payable in money, the receipts and TDS credits against it and how the money is placed on the charges, with the actions to edit, issue, cancel or delete it.
- VoucherScreen
One voucher with its lines and bill allocations, its reversal links, its history, and the actions to post, reverse, cancel or delete it.
- LedgersScreen
Every ledger of the chosen set of books, as a grouped tree or a flat list, with the actions to add ledgers and party ledgers, edit or retire them, and open a ledger's report.
- Termsheet & scheduleScreen
The buyer's termsheet: the agreed charges and the installment schedule with GST, the TDS the buyer deducts and what is payable to the developer, plus the actions to issue, accept, sign, reopen or regenerate it and to re-date an installment.
- Revenue recognition: policy, point in time vs over time, and revenue runsConcept
Each set of books carries an effective-dated revenue policy (framework, method, possession trigger, cost and brokerage treatments, judgement areas) chosen by the CA; a revenue run is the period close that computes every booking's and member offer's progress under it, recognises the catch-up revenue, cost of sales and brokerage, and posts the journals.
- Demands, demand runs and the GST splitConcept
A demand is the bill raised on a buyer's installments (or a member's offer charges): numbered by financial year, billing the full total with the buyer's expected 194-IA TDS shown apart, posted as a sales voucher with GST split as CGST + SGST or IGST by place of supply; a demand run raises one demand per buyer for everything due by a date.
- Charge components and their kindsConcept
The catalogue of money lines the business uses (unit price, floor rise, PLC, legal charges, corpus, transit rent, commission …), the six kinds that decide where a component may appear, the fixed code each carries, and how charge groups and per-line GST turn them into a price.
- Contract acquisition costs (capitalised brokerage)Concept
Under a revenue policy that capitalises the costs of obtaining a contract, an approved channel-partner commission is parked in Contract Acquisition Costs instead of brokerage expense and released to expense by each revenue run in step with the booking's revenue; possession expected within the practical-expedient months expenses it at once.
- Rehab units as non-cash considerationConcept
In a redevelopment the flats handed to society members are the price paid for the development rights; with the policy toggle on, the fair value of those rights is booked as land against a contract liability on the agreement date, and each member's offer earns its entitled-area share of that value as revenue when its allotted units are handed over.
- Significant financing componentConcept
An Ind AS 115 judgement: when buyers pay well ahead of possession the developer is effectively borrowing from them, so each revenue run accrues notional interest on every cleared receipt at the policy's rate, books it as interest expense against the contract liability, and adds it to the unit's price so it is recognised as revenue with the unit.