ConceptReviewed 2026-09-29

Cost of sales, cost budgets and inventory transfer

Each revenue run moves the period's construction, rehab and borrowing cost from the expense ledgers into work-in-progress and land inventory, then charges every booking a share of the project's cost (its budget, else the cost inventoried so far) in step with its revenue progress, so revenue and its cost land in the same period.

Cost of sales, cost budgets and inventory transfer

A developer's cost of sales is the slice of the project's total cost that belongs to the unit being sold. NirmaanOne works it out in three steps at every revenue run: the costs booked during the period are moved out of the expense ledgers into inventory (work-in-progress and land), the project's cost is taken from its cost budget, and each booking is charged its share of that cost multiplied by the same progress that drives its revenue. The result is a profit and loss in which revenue and cost of sales move together.

How it works in NirmaanOne

Budget cost

The Budget cost card on a project's Settings tab (the View permission on Revenue Recognition to see it, the Edit permission to add, change or delete a budget) holds the estimated total cost, effective-dated:

  • Scope: Whole project, or Tower <name>. A tower budget is used only when the revenue policy measures progress per tower and the tower has one; otherwise the whole-project row applies.
  • Effective from: the row in force on a date is the latest on or before it, so you revise the budget with a new row as the cost to complete changes. Two rows of the same scope cannot start on the same date ("A budget for the same scope already starts on that date; edit it instead").
  • Construction & development cost ("Excluding land: what progress is measured against.") and Land, development rights & rehab; Total is their sum.

The budget is the cost base for cost of sales, the denominator of the Over time (cost incurred) method and of the Guidance Note cost threshold, and the source of Cost to complete = budget − cost incurred on the Project performance report. Without a budget the tab says "No budget yet: cost of sales uses the cost inventoried to date."

Inventory roles and the transfer into inventory

Each expense ledger can carry an Inventory role (Chart of accounts, Ledgers): Construction cost, Rehab cost (rent, corpus, shifting, PAP buy-back), Borrowing cost, or none ("Stays in the P&L"). The seeded chart gives the role to the construction and rehab expense groups and to Interest Expense (5530).

Every revenue run, for each project of the books, moves the cumulative balance of those ledgers into inventory as far as the policy's Costs section allows:

Role Moved to Only when
Construction cost Construction Work-in-Progress (1500) Costs into inventory is Periodic
Rehab cost Land and Development Rights (1600) Rehab costs is Capitalise
Borrowing cost 1500 Borrowing costs is Capitalise; interest dated after the project's construction end (its OC date, else the last tower OC once every tower has one) stays in expense

The amount per ledger = its balance for the project up to the period end (vouchers of earlier revenue runs and year-end closings left out) − what earlier runs already moved. It is cumulative, so a voucher backdated into a period a run has already closed is picked up by the next run. The project is found by the line's cost centre, else by the voucher's project; a tower only through its own cost centres. Under Perpetual, where vouchers post to 1500 directly, nothing moves. The run posts one "costs moved to inventory" journal per project (Dr 1500 or 1600 / Cr the expense ledger) and lists the moves in the card Costs moved into inventory (To date, Moved before, This run).

Cost of sales per booking

For each booking's line the run takes the scope's cost: the budget in force on the period end (source "Budget"), else the cost actually inventoried to date, that is the balances of 1500 and 1600 posted outside runs plus what the roles have accumulated (source "Actual to date", trued up every run). Then:

  • share = the unit's part of the pool of saleable units, by the policy's Cost of sales shared by: By area = the unit's area ÷ the pool's total area, both on the project's chargeable area for buyers (Carpet area (Mofa) by default); By sale value = the booking's transaction price ÷ the pool's value, where booked units count at their price and unsold units at the average booked rate per sq ft. Units designated PAP or Common are not in the pool and carry no cost, unless the policy treats rehab units as revenue: then the units allotted on live member offers join the pool, each offer's line carries its allotted units' share as its own cost of sales, and the allottee's own booking on such a unit carries none.
  • cost total = scope cost × share, rounded half-up to the paise;
  • cost to date = cost total × progress ÷ 100, rounded; cost this run = cost to date − cost to date on the last posted line;
  • the work-in-progress part = cost to date × scope construction cost ÷ scope total, rounded; the land part is the rest.

Posting creates one "cost of sales" journal per project: Dr Cost of Sales - Units (5400) for the run's cost, Cr 1500 for the work-in-progress part and Cr 1600 for the land part. The run page shows Cost of sales ("of <cost total>") per line and Cost of sales in the Summary; Project performance reports revenue, cost of sales and margin per project.

Completed units

With the policy toggle Completed units to their own inventory on (the default), once construction has ended (the project's OC date, or the last tower OC once every tower has one) the work-in-progress share of its unsold saleable units moves from 1500 to Completed Units - Inventory (1510), never more than the work-in-progress actually left in the ledger ("completed units" journal, To completed units (1510) in the Summary); a unit that sells later moves back and goes to cost of sales.

Why

Matching. A ₹60 crore building sold flat by flat over three years would show a loss while it is built and a windfall as it is delivered if construction were expensed as spent. Holding the cost as inventory and releasing each unit's share with its revenue gives every period its true margin, and the cost budget lets that share be charged before the last invoice has arrived, trued up as the budget is revised.

Example

Sea Breeze Residency has one budget row, Whole project, effective 1 April 2026: Construction & development cost ₹42,00,00,000.00, Land, development rights & rehab ₹18,00,00,000.00, Total ₹60,00,00,000.00. The books use Periodic costs into inventory, Capitalise for rehab and borrowing costs, and By area on Carpet area (Mofa). The 60 saleable units total 48,000 sq ft.

Inventory transfer, run to 31 March 2027. The project's cost centre has collected:

Ledger (role) To date Moved before This run
Civil works (Construction cost) ₹9,60,00,000.00 ₹7,10,00,000.00 ₹2,50,00,000.00 → Dr 1500
Rent to members (Rehab cost) ₹1,20,00,000.00 ₹95,00,000.00 ₹25,00,000.00 → Dr 1600
Interest Expense (Borrowing cost) ₹40,00,000.00 ₹32,00,000.00 ₹8,00,000.00 → Dr 1500

Each row is one pair of legs in the project's "costs moved to inventory" journal. For the cost method and the Guidance Note test, cost incurred counts construction and borrowing together: ₹10,00,00,000.00 against the ₹42,00,00,000.00 construction budget, 23.81%. Cost to complete on Project performance counts land and rehab too: ₹60,00,00,000.00 − (₹10,00,00,000.00 + ₹1,20,00,000.00) = ₹48,80,00,000.00, assuming no other land cost has been posted.

Cost of sales on unit A-1203 (795 sq ft), booking BK-2026-27-00007:

  • share = 795 ÷ 48,000 = 0.0165625;
  • cost total = ₹60,00,00,000.00 × 0.0165625 = ₹99,37,500.00 (the line shows "of 99,37,500.00").

Under Point in time the run that recognises the sale (handover on 20 January 2029) charges it all: cost to date ₹99,37,500.00; work-in-progress part = ₹99,37,500.00 × 42 ÷ 60 = ₹69,56,250.00; land part ₹29,81,250.00. Journal: Dr Cost of Sales - Units ₹99,37,500.00 / Cr Construction Work-in-Progress ₹69,56,250.00 / Cr Land and Development Rights ₹29,81,250.00. Against the transaction price of ₹1,29,50,000.00 the booking's margin is ₹30,12,500.00.

Under Over time (stages achieved) it follows the tower's progress instead (the stages worked in Revenue recognition); the work-in-progress part is always 42 ÷ 60 of the cost to date:

Run Progress Cost to date This run Cr 1500 Cr 1600
30 Nov 2026 15% ₹99,37,500.00 × 15 ÷ 100 = ₹14,90,625.00 ₹14,90,625.00 ₹10,43,437.50 ₹4,47,187.50
31 Mar 2027 40% ₹39,75,000.00 ₹24,84,375.00 ₹27,82,500.00 − ₹10,43,437.50 = ₹17,39,062.50 ₹11,92,500.00 − ₹4,47,187.50 = ₹7,45,312.50
31 May 2027 65% ₹64,59,375.00 ₹24,84,375.00 ₹45,21,562.50 − ₹27,82,500.00 = ₹17,39,062.50 ₹19,37,812.50 − ₹11,92,500.00 = ₹7,45,312.50

If the CA later adds a budget row from 1 October 2027 raising construction to ₹45,00,00,000.00, the next run recomputes the cost total (₹63,00,00,000.00 × 0.0165625 = ₹1,04,34,375.00) and charges the difference at the booking's progress; runs already posted keep their figures.

Where you see it

  • Budget Cost: Add budget, Scope, Effective from, Construction & development cost, Land, development rights & rehab.
  • Revenue policy: Costs into inventory, Cost of sales shared by, Rehab costs, Borrowing costs, Completed units to their own inventory.
  • Ledgers: the Inventory role of each expense ledger.
  • Cost centres: one per project (and per tower) so the run can find the cost.
  • Revenue run: Costs moved into inventory, the Cost of sales column and the journals.
  • Project performance: Budget cost, Cost incurred, Cost to complete, margins and the No budget cost flag.
  • Structure and Edit project: the tower and project OC dates that end borrowing-cost capitalisation.

Related

  • Budget CostScreen

    The project's (or a tower's) estimated total cost, effective-dated, that cost of sales shares across the saleable units and the cost method of over-time revenue recognition measures progress against.

  • 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.

  • Project performanceScreen

    Revenue, cost of sales and margin per project for a period and to date, the booked price and how much of it is recognised, the cost budget against cost incurred and cost to complete, progress by stages and by cost, revenue by month, and the flags the CA needs to act on.

  • 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.

  • Cost centresScreen

    The cost-centre tree of a set of books, usually one per project with a child per tower, so the ledger and the reports can be cut by project; mirror the projects in one click or add cost centres by hand.

  • StructureScreen

    Build and maintain a project's towers (wings), floors and units, generate them in bulk, and see every unit's status and designation at a glance.

  • Edit projectScreen

    Change a project's facts on one page: basics, site address, land survey details and expected possession, and, on a redevelopment, the development agreement date and the fair value of the development rights. The settings the project inherits from the organization live on its Settings tab.

  • VoucherScreen

    One voucher with its lines and bill allocations, its reversal links, its history, and the actions to post, reverse, cancel or delete it.

  • 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.

  • Unit areas and the chargeable areas: Carpet area (Mofa), RERA Carpet Area, Super Built-up AreaConcept

    Every unit carries up to three areas; two settings say which one money is worked out on: the chargeable area for buyers (what a Per Sqft price multiplies on a buyer's estimate) and the chargeable area for members and tenants (what a member's offer and an allottee's purchase are measured in).

  • Unit designation: Saleable, PAP, CommonConcept

    What a unit is for, separate from its status: Saleable stock, a PAP unit kept for Project Affected Persons, or a Common unit housing an amenity; the designation decides who can be allotted or sold the unit and whether it shares the project's cost.

  • 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.

  • Effective-dated rulesConcept

    Rules that change over time (the RERA escrow share, TDS on sales, booking cancellation forfeiture, the revenue policy and cost budgets) are kept as dated rows; the row in force on a date is the latest one starting on or before it, so old documents keep the figures they were made with.