Skip to content
PipeLedger AI
All resources

Real estate development · Accounting and reporting guide

How to build reliable financial reporting for real estate development

Understand what each development project has cost, how it was funded, and what it has earned. Follow one example from acquisition through sale, then see how PipeLedger supports consistent reporting and AI-assisted controller review.

For
Real estate developers and controllers
Accounting focus
Capitalized and directly expensed project costs
Reporting foundation
Project-tagged General Ledger lines
Outcome
Comparable project costs, capital, and returns

By PipeLedger · Published · Updated

On this page

Follow project costs from acquisition through sale

A development project can span several accounting years. Some costs remain on the Balance Sheet, others have already been expensed, and loans and owner contributions sit in separate accounts. Owners still need a clear picture of the whole project.

Useful reporting answers four questions: what has the project cost, what remains invested, how was it funded, and what has it earned?

This guide answers those questions with one example, followed from purchase to sale. A developer buys a property for $500,000, spends $100,000 developing it, and carries the finished property for six months before it sells for $800,000. A loan and owner contributions pay for it. The table shows each amount and where it lands in the books; the sections that follow use the same figures to explain funding, cost comparisons, returns, and cash flow.

One project, from purchase to saleFictional · US GAAP book treatment
ItemWhere it landsAmount
Purchase price$500,000
Capitalized development costsIncludes the taxes, insurance, and interest incurred while the work is in progress$100,000
Carrying costs for the six months after completionLoan interest $21,000 · property tax $9,000 · insurance $4,000 · utilities and upkeep $6,000$40,000
Total Project Cost$640,000
Sale price$800,000
Accounting profit$160,000
Funded byLoan $350,000 + owner contributions $290,000$640,000

Because the property is complete and ready to sell during those six months, the $40,000 of carrying costs is expensed as incurred. The sale produces $160,000 of accounting profit, and the $350,000 loan and $290,000 of owner contributions together fund the $640,000 total cost.

This fictional example follows US GAAP book treatment. The default for a development project is to capitalize; the $40,000 is expensed only because the guidance requires it once the property is substantially complete and ready for its intended use.

In practice, many developers leave these costs capitalized and recognize them at the sale. When the property sells in the same year, the annual result is the same; the difference matters when a finished property is still unsold at year-end. Ask your accountant whether the books follow the tax return, or whether the CPA adjusts for the tax capitalization rules (IRC Section 263A, and the narrow election under Section 266). The accounting notes below give the references and the settlement considerations.

1Acquire
2Develop
3Hold for sale
4Sell
5Settle
Balance Sheet: project assets
Property recorded at $500,000
Capitalized development +$100,000 = $600,000 held
Work complete: capitalization stops, $600,000 held
Release −$600,000 = $0 held
Nothing remains; a leftover balance is a question
Income Statement: project results
—
Nothing expensed in this example; taxes, insurance, and interest are capitalized while work is in progress
Six months of interest, property tax, insurance, and upkeep: $40,000 expensed as incurred
Revenue $800,000 − COGS $600,000 − expenses $40,000 = $160,000 profit
Review final accruals and settlement adjustments in the correct reporting period
Funding: how the project was paid for
Loan +$350,000 and owner contributions +$150,000
Owner contributions +$100,000 = $250,000 contributed
Owner contributions +$40,000 for carrying costs = $290,000 contributed
Sale proceeds arrive as cash; funding balances are unchanged until settled
Loan repaid −$350,000; $290,000 of contributions and $160,000 of profit distributed
One fictional project across the books. Costs move down the first two lanes; funding stays in the third. Total Project Cost stays $640,000 through the sale because the release moves the cost, not the total.

At the sale, the $600,000 held as an asset becomes recognized expense. Adding remaining capitalized costs to cumulative project expenses keeps the same investment counted once:

The same cost before and after a complete release
MeasureBefore the saleAfter the sale
Remaining capitalized project costs$600,000$0
Cumulative recorded project expenses$40,000$640,000
Total Project Cost$640,000$640,000

PipeLedger follows both sides: Project Financial Position shows the remaining asset, while a lifetime Finance Catalog metric follows costs across approved asset and expense accounts. The controller determines the accounting treatment in the source books; PipeLedger carries it into the reports.

Accounting notes: capitalization, cost release, and escrow

Capitalize by default; expense where the guidance requires it. For property developed for sale, acquisition and development costs are capitalized. So are property taxes, insurance, and interest, for as long as the activities needed to get the property ready are in progress. Capitalization begins when spending on the project has been made and those activities are under way; interest also requires that interest cost is being incurred (ASC 835-20-25-3). It stops when the property is substantially complete and ready for its intended use: property taxes and insurance are then charged to expense as incurred (ASC 970-340-25-8) and interest is no longer capitalized (ASC 835-20-25-5). That is the $40,000 in the example. Interest capitalization also pauses while substantially all development activity is suspended (ASC 835-20-25-4).

Some costs are expensed before the sale at any stage: general and administrative overhead that does not clearly relate to a project, advertising and selling costs that do not qualify for deferral, and the cost of a pursuit that is abandoned (ASC 970-340 and ASC 970-360). Carrying cost is a business category; the account label does not decide the treatment. SEC staff correspondence on development-cost capitalization illustrates the need to explain that judgment.

The $100,000 of capitalized development in this example includes eligible construction-period interest. Owners contribute $150,000 at acquisition and a further $140,000 before the sale: $100,000 during development and $40,000 while the property is held. The cost comparison assumes matching project and entity attribution, complete history, and no other movements.

At the sale, costs move from the Balance Sheet into expense. The report needs to retain their history so the same investment is counted once and its contribution to profit stays understandable. The intended reading order is simple: recorded sale revenue, acquisition cost released to cost of goods sold, other recognized project costs, and the resulting profit. PipeLedger uses recorded revenue, not a sale price inferred from a closing document; a ledger that records only a net gain needs review before the report can show gross proceeds and acquisition cost separately.

Typical lifecycle entries to discuss with your accountant
StageWhat the source books recordWhat the project report must retain
Acquire and fundReconcile the buyer’s escrow statement to the purchase agreement, deposits already recorded, bank transfers, and loan documents. Allocate purchase price, eligible acquisition costs, prorations, prepaid items, and financing fees to their proper accounts. Identify the legal borrower and the source of the cash to close.Acquisition cost, funding, and clearing entries attributed to the correct project and entity, without recording earlier deposits twice.
Develop: capitalized costsThe default while work is in progress. Record hard and soft costs as project assets, together with the property taxes, insurance, and interest incurred during the work. Start when spending has been made and the activities that prepare the property are under way. Do not expense a cost solely because of its account label.Additions, releases, and the remaining asset balance. When the accountant moves a cost to another account or project, the report shows it once, in its new place.
Develop: directly expensed costsThe exception: overhead that does not clearly relate to the project, advertising and selling costs that do not qualify for deferral, and abandoned pursuits. Debit the appropriate expense account; credit payables or cash. Paying an existing payable clears that liability rather than recording the expense again.Recognized costs by project and category, including credits and corrections.
Hold for sale: carrying costs after completionFrom the date the property is substantially complete and ready to sell, expense property taxes, insurance, and interest as incurred. Capitalization stops at completion, not at the sale.The completion date and the carrying costs after it, by project, so the cost of the holding period stays visible in lifetime profit.
Hold for rental: property kept as a long-term assetWhen the plan changes from selling to renting, move the project’s cost from development inventory to a long-term property asset. From the date the property is ready for tenants, record rental income and operating costs in the Income Statement and begin depreciating the building. Land is not depreciated.The transfer date, the cost carried over, and accumulated depreciation, so the project’s cost history stays connected to the rental asset.
Sell and release costsReconcile the seller’s escrow statement to gross sale consideration, commissions, prorations, holdbacks, and net cash received. Separate any lien payoff into principal, interest, and fees using the lender’s statement. Record the cost release from the project’s carrying value in the books, not from the escrow statement.Sale proceeds, recognized costs, and debt settlement remain separately traceable even when escrow remits one net amount.
Settle and closeCheck final escrow disbursements, lien release or lender confirmation, remaining loan statements, final bills, and owner distributions. Company-level debt may remain outstanding after an individual property sells.Explain residual balances and noncash financing before the project and LLC records are handed off for year-end work.

If the property is kept to rent. Property developed for sale is inventory and is not depreciated. Property held for rental is a long-term asset under ASC 360: the building is depreciated over its useful life from the date it is ready for use, and the costs of carrying the completed property are expensed. For US federal tax, IRS Publication 527 depreciates a residential rental building over 27.5 years and gives furniture, appliances, and carpets a 5-year life; a nonresidential building is depreciated over 39 years. A cost segregation study identifies the parts of a project that qualify for those shorter lives, including land improvements. It changes the tax depreciation schedule, not the recorded cost, and the IRS Cost Segregation Audit Technique Guide describes what the IRS expects of such a study. Section 7 covers the effect of the change of purpose on the Cash Flow Statement.

These simplified entry patterns explain the reporting relationship. The accountant determines recognition dates, eligible costs, and any impairment or other adjustments. PipeLedger reads the resulting entries; its agent tools do not post them to the ERP.

A property-secured loan may be repaid directly by escrow; a corporate facility may be drawn and repaid outside the closing. If another group entity provides the funds, record the corresponding intercompany or equity relationship according to the agreement. If the company finances the buyer, distinguish the note receivable from cash collected. None of these arrangements can be established from the net bank deposit alone. The CFPB’s consumer Closing Disclosure guidance illustrates separate buyer, seller, and payoff amounts; commercial transactions may use different settlement forms.

In PipeLedger, review the project’s acquisition, sale, and funding entries alongside Project Financial Position. Match those entries to the closing documents retained by the controller; the reporting pipeline reads the ERP entries and does not infer the journal from an uploaded escrow statement.

Explain project investment and its capital structure

Owners need to see both the investment in a project and the capital supporting it. That becomes harder when a loan funds several properties or one LLC pays costs for another.

PipeLedger brings each project’s recorded assets, debt, and equity into one month-end view. The controller defines which accounts belong in each measure, while the supporting records retain the project and legal entity. Shared borrowing needs an agreed allocation before it can be compared project by project.

Funding entries and how the project report treats them
EntryWhat the books recordHow the project report treats it
Loan proceeds and principal repaymentsThe legal borrower records borrowing and repayment against the relevant loan account.Show outstanding project financing debt at month-end, separately from lifetime cost.
Owner or co-investor contributionThe receiving entity records the funds under the investment agreement. The terms decide the classification, not the investor’s name: an ownership interest in the LLC is equity; funds the entity must repay, such as a member loan or a note, are a liability.Select the contribution accounts for the return denominator and equity accounts for the remaining funding balance. Report repayable co-investor funding with financing debt.
Interest and financing chargesA loan payment has two parts. Principal reduces the loan balance; interest and fees are the cost of borrowing. Record them in separate accounts from the lender’s statement, then apply the relevant expense, capitalization, or deferred-fee treatment to the interest and fees. The tax return treats the two differently, so your CPA cannot work from a combined amount.Keep the cost of funding identifiable through its approved catalog category or subcategory, and keep principal out of project cost.
Settlement of costs between LLCsFor a payment on another entity’s behalf, preserve the underlying cost and the corresponding due-to/due-from balances. Assess genuine service charges separately.Retain both entities’ records and the project attribution. Combining project views does not itself perform intercompany eliminations.
Distribution or return of capitalRecord the distribution against the appropriate equity account under the agreement.Explain the remaining financing equity without reducing a gross-contribution denominator when distributions are recorded separately.

In PipeLedger, economic roles identify the accounts used for capitalized cost, financing debt, and financing equity. Select contribution accounts separately from distributions and member lending when measuring return on contributed capital.

Under US GAAP, principal repayments are financing cash flows, interest paid is an operating cash flow, and cash paid for interest is disclosed (ASC 230-10-45-15, 45-17, and 50-2). Interest cost incurred and the amount capitalized are disclosed separately (ASC 835-20-50-1). For tax, only the interest is potentially deductible. In consolidated statements, a co-investor’s ownership interest in a project LLC is a noncontrolling interest, presented within equity but separately from the owners’ equity (ASC 810-10); an interest the entity is required to redeem is a liability (ASC 480-10).

Ome Dezin reached this point after co-investor capital and transfers between multiple LLCs made project results hard to explain. The controller clarified project funding and account classifications in QuickBooks; the customer story shows the reporting that followed.

Make costs comparable across projects

Two projects rarely use the same account names. One books cabinetry under supplies, the other under a contractor; one capitalizes staging, the other expenses it. To compare them, the report needs business categories that sit above the account names and above the accounting treatment. Start with a small set that the controller and project managers can recognize.

Development Cost · Catalog Category L4
  • Hard costs: materials and supplies
  • Hard costs: general contractor and trades
  • Soft costs
  • Other approved development subcategories

Each branch is a Catalog Subcategory (L5). Together, the approved subcategories form the Development Cost total.

PipeLedger groups accounts by their business purpose without changing their accounting treatment. Development Cost can include separate subcategories for materials, contractor packages, and soft costs across both asset and expense accounts.

Define the groups once and use them consistently across projects. Keep contractor packages together unless the source records support a reliable breakdown.

Suggested development cost groupings
GroupingExamples to reviewComparison it supports
AcquisitionProperty or land purchase and related acquisition accountsThe purchase investment, separate from the subsequent development work.
Hard costs — materials and suppliesDirectly purchased cabinetry, fixtures, lumber, concrete, and other construction materialsCompare purchasing costs separately from contractor packages.
Hard costs — general contractor and tradesGeneral contractor contracts, subcontractors, site work, and separately recorded construction laborCompare contracted work; a contractor package may include materials, supervision, and overhead as well as labor.
Soft costsDesign, engineering, permitsPlanning and professional services, with capitalization treatment still visible.
Financing costsInterest and financing chargesThe cost of borrowing, with capitalized and expensed treatment identified separately.
Carrying costsProperty taxes, insurance, utilitiesThe cost of holding the property during development.
Selling and closing costsBroker fees, title, escrow, sale-related chargesThe costs of completing a sale, distinguished from acquisition and construction.
Configure these groups in PipeLedger

Use Development Cost as Catalog Category (L4), with Hard costs — materials and supplies and Hard costs — general contractor and trades as separate Catalog Subcategories (L5). This preserves one Development Cost total while exposing the two construction comparisons. Soft costs, carrying costs, and other approved components can be sibling subcategories. Reporting levels 1–3 continue to express the accounting classification; L4–L5 express the controller’s business grouping across asset and expense accounts.

In PipeLedger’s account classification editor, assign the L4/L5 values to the supporting accounts and record the rationale. A Finance Catalog metric can select all of L4 Development Cost or a specific L5 group; the published report can show both the total and its breakdown after refresh. Separate L4 categories are possible if your reporting structure requires them, but the total metric must then explicitly include both categories. L5 is sufficient for the split described here.

The available detail limits the comparison. A single contractor invoice covering labor and materials cannot become a reliable labor-only figure through relabeling. Keep the package in its contractor group unless the source records support a split. Products, quantities, and hours provide supporting detail where recorded; an account classification does not manufacture that detail.

The real decision is what Development Cost includes. The table below is one reasonable set of answers; the last column is where developers legitimately differ. Write the membership down and apply it to every project.

What belongs in Development Cost
CostCommon treatmentIn Development Cost?What another developer might choose
Property purchaseCapitalized under the relevant asset guidanceAcquisition Cost is separately visible in the illustrated mapping.A developer may include land in a broader development measure, provided the definition is explicit.
Materials and supplies; general contractor and tradesAssess capitalization using the cost and project stageYes, in separate hard-cost L5 groups.Split contractor packages further only when the source detail supports the allocation.
Architect, engineering, and design feesCapitalized or expensed by policyYes, as soft costs.Some treat pre-acquisition design as an acquisition cost.
Property taxes, insurance, and utilitiesAssess the cost, intended use, and stage; eligible costs during active development differ from post-completion carrying costsYes, as carrying costs under the illustrated mapping, across eligible asset and expense accounts.Some report carrying costs outside Development Cost while retaining the accounting treatment.
Furniture and stagingDepends on use, ownership, and recoverability; reusable furnishings may remain assetsInclude the approved accounts in the chosen subcategory.Some distinguish furnishings sold with the property from staging used to market it.
Commission, title, escrow, and legal at saleExpensed at saleYes, as closing costs.Some keep selling costs outside development so it measures the build alone.
Interest and financing chargesExpensed, or capitalized where allowedDepends on the approved mapping. Include interest assigned to Development Cost; exclude interest assigned to a separate Financing Cost category.Some exclude interest from Development Cost and show it separately.

Ome Dezin’s template groups accounts into Revenue, Acquisition Cost, Development Cost with five subcategories, and Financing Cost, and applies it to every project; the story shows it with illustrative amounts. The Total Project Cost definition illustrated here includes acquisition, cumulative project expenses, and remaining capitalized costs. Its membership is broader than the illustrated Development Cost category.

Why two reports can show different numbers

A property’s lifetime profit, its current funding, and the company’s rolling return use different clocks. Separate the three questions so a recent report date range does not truncate the history a lifetime calculation needs.

What did this project earn?

Measure

Recorded net income and lifetime returns

Time basis

Full available project history through one month-end

What remains invested?

Measure

Capitalized costs, equity, financing debt

Time basis

Balances at the selected month-end

How is the company performing?

Measure

Income over average equity or assets

Time basis

Explicit rolling window and averaging method

Two correct reports can show different Development Cost figures for the same project. In the month before the sale, the fictional project shows both of these:

Lifetime Development Cost

Everything spent on development so far, whether capitalized or expensed

$140,000

$100,000 capitalized + $40,000 expensed

Month-end capitalized balance

Development cost still held on the Balance Sheet at that date

$100,000

Balance at one month-end

The balance alone omits the expensed costs; the lifetime figure alone does not say what is still on the Balance Sheet. Neither is wrong. They answer different questions, and a report should say which one it answers.

A balance is a position at one date, so it is read, not added up. For a quarter or a year, use the balance at the last month-end. Adding the fictional project’s three month-end balances for a quarter would report $1,800,000 of capitalized cost for a $600,000 property. Costs and revenue are activity and can be added across months. The risk sits in dashboards and spreadsheets, where a total row adds every month by default; the ledger itself is not affected.

Before treating a difference as an error, align the project, entity, currency, reporting date, and account population, and check whether each report measures activity, remaining balances, or both. A capitalized-only view omits expensed costs; an accounting subcategory can differ from a business category; a saved classification may still be awaiting publication. A source publication date is not evidence that the accountant has closed the month.

In PipeLedger, compare Project Financial Position at one month-end with the Finance Catalog metric’s stated lifetime or rolling window. Inspect the metric’s account membership and use the supporting General Ledger lines to explain the difference. When a classification has changed, confirm the refreshed report contains that change before altering the formula.

Define returns that match the investment question

Choose the investment question before the formula. PipeLedger’s Finance Catalog records the agreed accounts, reporting period, and calculation so each return has a definition the controller can inspect.

Two returns, two questions

Return on Project Cost

Profit compared with the project’s total recorded cost

25%

$160,000 ÷ $640,000

Project ROE (Return on Equity)

Profit compared with the selected owner and co-investor contributions

≈55%

$160,000 ÷ $290,000

The same profit produces different returns because the denominators answer different questions. These are lifetime accounting returns, without annualization; they are not investor cash-flow IRRs.

Project metric definitions and technical formulas

The formulas use the metric IDs documented in the Ome Dezin story. The ome_ prefix identifies its company-specific definitions. When adapting them, replace it with your own company prefix, such as yourcompany_, in the metric IDs and every dependent formula, filter, and chart field. Keep canonical inputs such as net_income unchanged. Ome Dezin’s development_cost is an organization-authored metric without that prefix; give your equivalent definition your own company prefix if creating it anew.

Scroll horizontally to read the full formulas.

Project returns
MetricDescriptionPipeLedger technical formulaWhat your business decides
Development CostDevelopment spending across approved asset and expense accounts, whether expensed or capitalized.
development_cost
= SUM_WINDOW(mart_gl_lines)
include: taxonomy_level_4_catalog = Development Costwindow: lifetime
The membership from section 3.
Total Project CostRecorded project expenses plus capitalized costs still held as assets, including acquisition, through the reporting month-end.
ome_total_project_cost
= ome_project_capitalized_cost_activity + ome_project_cost_expenses
window: lifetime
Which acquisition and development accounts are included, and whether opening history and cost releases are complete.
Project Return on Equity (ROE)Lifetime accounting return on the capital contributed to the project; not annualized.
ome_project_roe
= SUM_WINDOW(net_income) / SUM_WINDOW(ome_project_equity_contributions)
ome_project_equity_contributions: account_id in approved contribution accounts, credit-positivewindow: lifetimeannualization: noneunit: percentage
Which contribution accounts represent capital at risk, and that repayments and distributions are booked elsewhere.
Return on Project CostLifetime accounting profit relative to Total Project Cost; not annualized.
ome_project_return_on_cost
= SUM_WINDOW(net_income) / SUM_WINDOW(ome_total_project_cost)
window: lifetimeannualization: noneunit: percentage
Keep acquisition in the denominator when the question is return on the whole project.
Loan-to-Cost (LTC)Project debt relative to costs still capitalized at month-end.
loan_to_cost
= financing_debt / capitalized_project_cost
source: mart_project_financial_positionunit: percentage
Whether this outstanding-balance definition, or a lender’s commitment-based ratio, is the one being discussed.
Company metric definitions and technical formulas

These company metrics use the IDs documented for Ome Dezin. Replace ome_ with your own company prefix throughout the configuration, and reuse equivalent existing definitions where available. Canonical inputs such as total_equity keep their existing IDs.

Scroll horizontally to read the full formulas.

Company returns
MetricDescriptionPipeLedger technical formulaWhat your business decides
Debt-to-CapitalThe share of debt and book equity represented by borrowing at month-end.
ome_debt_to_capital
= ome_financing_debt / ome_debt_and_book_equity
ome_financing_debt: project_economic_role = financing_debt, before cashome_debt_and_book_equity: ome_financing_debt + total_equityunit: percentage
The borrowing population. Debt is not all liabilities, and the ratio is gross of cash unless you define a net measure.
Return on Average Equity — Trailing 12 MonthsTwelve-month earnings relative to the average of opening and closing book equity.
ome_ttm_return_on_average_book_equity
= SUM_WINDOW(net_income) / AVERAGE(OPENING(total_equity), CLOSING(total_equity))
window: trailing_12_monthsannualization: noneunit: percentage
Whether an annual view is the primary story or the context for a longer one.
Return on Average Equity — Trailing 24 Months, AnnualizedTwo-year earnings relative to average monthly book equity, expressed as an annual return.
ome_t24m_return_on_average_book_equity
= SUM_WINDOW(net_income) / AVERAGE_MONTH_END(total_equity)
window: trailing_24_monthsannualization: linear, 12 / 24unit: percentage
Monthly average or opening and closing average, and whether to annualize; the two returns above use different averages on purpose.

Return on average assets follows the same two patterns with total_assets as the denominator. Show the supporting net income, average capital, cash, and debt amounts alongside the percentages so readers can explain a change.

A worked annualization: $120,000 of income over 24 months divided by $600,000 of average book equity gives a 20% two-year accounting return. Linear annualization divides that return by two, giving 10% per year. The income covers the full two years; the denominator is the agreed average, not the sum of monthly balances. Show the income and capital amounts behind each return so a reader can see which one moved. Missing history or a nonpositive required denominator stays unavailable, and project or LLC percentages must not be summed into a group return.

How these definitions work in PipeLedger

Four decisions precede any formula:

  • Profit. Governed Net Income is the numerator in every return here. Keep the overview’s Operating Profit distinct from it.
  • Capital. For a project, contributed capital on the approved contribution accounts, so the return is measured against everything the owners put in. For the company, average book equity or average assets. A peak month-end balance is a different measure and answers a different question.
  • Window. Lifetime for a project. Trailing twelve or twenty-four months for the company, chosen to fit the development cycle. A rolling window drops months, not whole projects: a profitable sale leaving the window lowers the rolling return while staying in the project’s lifetime history.
  • Annualization. A two-year return can be divided by two for a linear annual figure. Label it whenever you do. The lifetime project returns illustrated here are not annualized.

In PipeLedger’s Finance Metrics builder, choose the metric type, select its source accounts or input metrics, and set the period, sign, and result unit. For example, Return on Project Cost divides Net Income by Total Project Cost over the project’s lifetime, without annualization. The technical column describes those settings; it is not a free-form formula to paste into the editor.

A metric’s display name is the label readers see; its ID is the stable reference other metrics and tools use. Here, ome_project_return_on_cost is the name used in the Ome Dezin story. Create your own company-prefixed equivalent and update its input references consistently. Discover and select your own approved accounts; copying a metric name does not copy Ome Dezin’s account mapping or data.

Save and review a draft, then activate the approved revision. Where compatible, choose delivery in Project Overview or Reporting Entity Metrics. Confirm the revision has been published before expecting it in a dashboard; saving a draft does not change the live figures.

For a targeted measure, select exact account IDs rather than a broad category. Choose debit-positive or credit-positive presentation to match the intended meaning: debit-positive activity is debits less credits, so refunds and releases reduce the result. It is not a filter that discards every credit. Contribution accounts use credit-positive presentation, so contributions count positive and any return of capital booked there reduces the result.

A contributed-capital denominator accumulates contributions and is not reduced when capital is repaid, provided repayments and distributions are booked to separate accounts. This example sums signed activity in the selected accounts, so both contributions and reversals posted there affect the result. An explicit posting-direction filter is a different definition and must be reviewed separately.

The controller can review the finished definition before it changes a report. PipeLedger’s metric review shows the selected inputs, calculation, reporting window, annualization, and delivery settings together:

PipeLedger’s Review metric screen for Return on Project Cost: the Ratio metric type selected, the metric ID and purpose, a metric builder with Net Income as numerator, Total Project Cost as denominator, lifetime activity window, no annualization, percentage result unit, the calculation SUM_WINDOW(net_income) / SUM_WINDOW(total_project_cost), Project Overview selected for delivery, and catalog placement with tags.
Reviewing Return on Project Cost in the PipeLedger workspace. Saving creates a draft revision; the active definition keeps serving until the change is activated, so a definition can be inspected and refined without touching live reports.

Compare planned costs, recorded costs, and commitments

To understand whether a project is tracking to plan, compare the same costs over the same period. A development budget may include work still held as an asset, so comparing it only with Income Statement expenses can leave out part of the project.

Budget and planning inputs in Project Overview
SourceWhat PipeLedger supportsHow to use the comparison
NetSuiteProject-linked budget lines provide period budgeted revenue and cost alongside actuals and cost variance. The budget category/version used by the pipeline must be agreed.The standard period actual-cost measure is COGS plus expenses. For a whole-development comparison, define a separate comparison with capitalized costs included and the same budget scope.
QuickBooks OnlineProject-tagged purchase-order lines provide a committed-cost measure. A team that has not adopted a separate project budget can use committed cost as its planning reference. It is not a native budget field or a preserved original budget. QuickBooks Online’s own budgets are set by account, and PipeLedger does not read them today.A controlled PO-based planning reference can support a comparison with project actuals, provided its coverage, status, and date basis are explicit.

These fields are available in the underlying Project Overview source. Its current real-estate presentation does not include the budget and commitment columns. Configure the comparison from the underlying source with the implementation team; enabling a source budget alone will not add a budget table to an existing real-estate dashboard.

NetSuite: budget selection and period alignment

Confirm that the relevant budget lines are available to the connector and attributed to the project. Select the intended budget category with the implementation team; do not combine original and revised budgets. Project Overview carries the selected budget source and availability with its amounts. A headline project estimate alone is not a phased monthly budget.

Align the selected budget’s periods and accounts with the actual-cost measure. Project Overview’s standard actual cost is COGS plus expenses; a development budget that includes capitalized work needs a comparison that includes those costs too.

QuickBooks: purchase-order commitments and planning limits

Where the controller adopts a purchase-order workaround, assign every line to the correct project and use a consistent product or service item for the planned work or material. Agree the item’s accounting setup and budget coverage with the controller. PipeLedger retains the source project and item detail and brings eligible PO amounts into Project Overview as committed cost. Label a comparison based on those records “PO-based plan versus actuals” so its basis is clear.

The current PO measure follows eligible order amounts in the order month. Closed, canceled, rejected, or fully billed orders are excluded when that status is supplied. It is not a locked original budget or an automatically calculated unbilled balance. Preserve the approved baseline separately when it must survive those changes, avoid counting both a planning PO and the corresponding supplier order, and do not add commitments to posted actuals without reconciling their overlap. This workflow needs an agreed procurement process; entering a planning PO must not unintentionally authorize a supplier purchase.

Use the Finance Catalog cost definition from section 5 to make the comparison explicit. Label planned costs, commitments, and Total Project Cost separately, and match the accounts and time period on both sides.

Explain cash flow alongside project profit

A profitable project and a healthy cash position answer different questions. Development spending, sale receipts, borrowing, and owner funding all affect cash, but their classification depends on what the transaction represents.

Start with the property’s purpose. Capitalizing a cost does not, by itself, make its payment an investing cash flow. Under US GAAP, property developed for sale in the ordinary course differs from property held for rental; holding time alone does not decide the category.

Property purpose and cash-flow classification under US GAAP
Economic purposeUsual cash-flow treatmentController review
Develop or renovate property for sale in the ordinary courseOperating: inventory acquisition and development payments, and receipts from property sales.Confirm the property is development inventory. A multi-year build does not become investing solely because it takes longer.
Acquire or construct property to hold for rental or long-term investmentInvesting: acquisition, qualifying capital expenditure, and disposal receipts for the property asset. Rental receipts and routine operating payments remain operating.Assess mixed use, changes in purpose, and the applicable asset guidance. Do not classify every payment associated with a rental property as investing.
Borrowing and owner fundingFinancing: borrowing proceeds, principal repayments, equity contributions, and distributions.Separate principal, interest, and fees. A net escrow remittance may contain several economic components.

PipeLedger applies the controller’s approved cash-flow classifications after refresh and publication, then checks beginning cash plus the classified change against ending cash in the legal-entity Cash Flow Statement. Project-level balance changes support analysis; they are not a separately reconciled project Cash Flow Statement.

US GAAP references and controller judgments

The framework is ASC 230. FASB’s published Codification amendments reproduce the distinction between productive-asset acquisition, inventory payments, and debt repayment. Its historical real-estate example in Statement 102, paragraph 25 explains why land acquired for subdivision and resale is operating inventory. The older statement is explanatory background; the current Codification governs the accounting.

For financed closings, distinguish cash paid through escrow from assumed debt or other noncash consideration. Do not infer cash inflows and outflows simply from the asset and liability entries. FASB’s historical cash-flow guidance, paragraph 32, explains the separate disclosure of noncash investing and financing; the controller establishes the treatment from the settlement and lending documents.

How PipeLedger applies the classification

PipeLedger applies cash-flow classifications separately from the L4/L5 reporting categories. Its real-estate industry default treats eligible current development-cost accounts as operating inventory; non-current development assets do not take that default. The controller reviews the purpose, then uses the account’s Cash flow category, Calculation basis, and Standard detail to record a consistent treatment. A dedicated account normally needs an account override; an exceptional eligible posting in a mixed account can use an exact transaction-line override with supporting evidence and rationale.

The next successful transform and publication applies the approved classification and retains its provenance. Data Review exposes items needing investigation. A saved override awaiting processing has not yet changed the published statement.

Each account shows its classification on one screen. Every panel names where its value comes from, so the controller can tell an ERP value from a framework default or an override before changing anything:

PipeLedger’s account classification screen for a Loans to shareholders account. Reporting taxonomy: Assets, Current Assets, Other Current Assets, from ERP data. Catalog and framework: no catalog category or subcategory, with the assigned framework number. Cash-flow classification: Operating, Working-capital change, Other operating assets, from the framework template. Confidentiality and privacy: standard detail, memos included, and separate switches for customer, vendor, employee, and project names.
One account’s classification in the PipeLedger workspace. The cash-flow panel holds the three fields an account override changes: Category, Calculation basis, and Standard detail.

Some postings do not fit their account’s classification. A transaction override reclassifies that one posting and leaves the account as it is. An authorized AI assistant connected through PipeLedger can prepare it. In this example, using ChatGPT, the controller describes a temporary advance that was booked to a capital account. The assistant finds the posting, shows the Cash Flow Statement detail before and after, and saves the override only once the controller confirms:

A ChatGPT conversation using the PipeLedger app. The controller explains that a $50,000 transfer on 6 July 2026, booked to a Project Capital account, was a temporary advance and asks for a transaction override on that one posting, with a preview before anything is saved. ChatGPT finds Deposit #7367, currently classified Financing, Equity issuance, and shows a before and after table: Equity issuance falls from $50,000 to $0, Debt proceeds and repayments rises from $0 to $50,000, and total financing inflow stays $50,000. After the controller approves, ChatGPT confirms the override is saved, the account classification is unchanged, and published cash-flow reports update after the next publication.
A transaction override prepared in ChatGPT through the PipeLedger app. One $50,000 deposit moves from Equity issuance to Debt proceeds and repayments; the account’s own classification and total financing inflow do not change. The saved override appears in Data Review immediately and reaches the published Cash Flow Statement with the next publication.

Review the books with AI assistance

A useful monthly review starts with a result that needs an explanation. An authorized AI assistant connected through PipeLedger can retrieve the supporting entries and help investigate. The controller decides whether to correct the source books and verifies the refreshed result.

  1. Review a result
  2. Retrieve supporting entries
  3. Investigate the difference
  4. Correct the source books if needed
  5. Refresh and verify
Exceptions and what to investigate
ExceptionWhat to investigate
Capitalized cost remains after the saleWhether the release agrees to the project’s carrying-value schedule and is attributed correctly. Use the seller’s escrow statement to verify the sale and settlement, not to determine the amount of cost released.
Loan balance remains after the saleReconcile any escrow payoff to the lender statement and loan account. A corporate facility or agreed continuing loan may remain outstanding after the property sells.
Equity balance remains after the saleAn unpaid distribution, or a contribution never attributed to the project. Review the contribution and distribution accounts separately.
Development Cost differs between two reportsReporting date, entity, and account population. One report may be capitalized-only or use an accounting subcategory instead of the business category (section 4).
A cost sits on the wrong projectThe project tag on the source entry. Correct it in the source system and refresh; do not adjust the report.
A transfer between LLCs shows as revenue or expenseThe classification of the intercompany entry and its attribution to the project that incurred the cost (section 2).
A project shows equity but no contributionsReview whether the selected accounts capture the project’s contributions. The controller determines whether the account selection or the source classification needs correction.
A return shows as unavailableMissing history or a nonpositive denominator. Confirm coverage of the full project history before changing the definition.

Use Project Financial Position to compare each project’s remaining capitalized costs, financing debt, and selected equity balances at the same month-end, with the responsible LLC visible. After a sale, cost release, loan repayment, and owner distributions can land in different months, so a remaining balance is a prompt to investigate rather than an error by default. Equity balances describe recorded funding; they do not establish how much cash is available for distribution.

When the accountant corrects a project tag or funding entry in QuickBooks or NetSuite, PipeLedger brings the updated records through the reporting pipeline. Scheduled refreshes maintain the data between reviews; an additional refresh can retrieve corrections during the close. Confirm the reporting date and latest successful refresh before assessing the result. A successful refresh alone does not establish that the books reconcile.

Technical reference: reporting sources and pipeline checks

The source is the General Ledger, organized into reporting datasets called marts with different purposes. A transaction explains what happened; a month-end balance explains what remains.

How the reporting sources fit together
PipeLedger sourceWhat it contributesHow to use it
General Ledger Lines
mart_gl_lines
Posted acquisition, development, sale, cost-release, and funding activity with account and project context.Investigate an entry and accumulate the relevant signed activity over a period or project history.
Project Financial Position
mart_project_financial_position
Project-tagged asset, debt, and equity balances by account and month-end.Review remaining investment or select the capital history used by a project return.
Project Overview
mart_project_overview
Monthly project revenue, COGS, expenses, operating profit, and classified financial-position movements.Bring the project phases into a common summary. Its real estate presentation uses mart_project_overview_real_estate; position movements are not ending balances.
Trial Balance
mart_gl_trial_balance
Company account balances at month-end.Support company assets, equity, cash, and financing ratios alongside income from the General Ledger.
  1. Establish the required history. Check source coverage, opening balances, and the complete project history needed by the calculation. Fetch subsequent source corrections; processing an earlier extraction cannot include an entry that has not been retrieved.
  2. Preserve project and LLC attribution. Carry the same identities through purchases, development, transfers, sales, and releases. Investigate missing or inconsistent tags before relying on a project total.
  3. Apply agreed definitions. Use approved account classifications and active metrics consistently. A saved classification awaiting processing is different from the classification in the published report.
  4. Check the resulting reports. Reconcile representative projects and investigate differences in source coverage, account selection, or balances. A successful data refresh does not itself establish accounting reconciliation.
  5. Publish and identify the version being read. Deliver the configured data to authorized tools and, where used, dashboards. Show the reporting date and latest successful refresh; refresh the presentation after delivery so readers see the intended data.

Owners can give project managers access to the records for their responsible projects. The QuickBooks extraction guide explains how the source data reaches the reporting pipeline, and the documentation covers connecting Google Data Studio through your own Google Cloud project.

Hand your accountant an explainable project history

After a property sells, final contractor bills, lender settlements, and owner distributions can continue. Keep the project identifiable through those final entries so the accountant can follow its financial history when preparing the LLC's year-end accounts and tax return. Where a balance remains, record what it represents and what still needs to happen, rather than leaving the accountant to reconstruct the explanation from owner emails.

  • Reporting date and responsible LLC.
  • Project summary: its recorded sale and the costs recognized against it, with links or references to the supporting General Ledger entries.
  • Remaining balances and the explanation for each.
  • Unresolved items, their supporting evidence, and the next review action.

Use PipeLedger’s Project Overview for the result, Project Financial Position for the closing balances, and General Ledger Lines for the supporting entries. Include the reporting date, metric definitions, and the controller’s external escrow and lending documents with the handoff. The accountant can then follow the published numbers and the remaining review items without reconstructing the project from scratch.

Real estate development reporting FAQ

How should I report a real estate development project with capitalized costs?

Follow both the costs still held as assets and the costs already recognized as expenses. Use a month-end position to review remaining investment and complete project history to review lifetime cost and profit. Keep the project and legal entity consistent on acquisition, development, sale, and cost-release entries.

When do I stop capitalizing costs on a development project?

Capitalize acquisition and development costs, together with the property taxes, insurance, and interest incurred while the work is in progress. Under US GAAP, capitalization stops when the property is substantially complete and ready for its intended use; carrying costs after that date are expensed as incurred. The completion date is a judgment the controller should document.

What happens to capitalized costs when the property sells?

The capitalized cost is released from the Balance Sheet to cost of goods sold. Total Project Cost does not change: adding remaining capitalized costs to cumulative project expenses counts the cost once, provided the project, entity, and history cover both sides. Do not add the original capitalized cost again after it has been released.

Do my books have to match the tax return?

Not necessarily. Many developers keep carrying costs capitalized until the sale, and tax has its own capitalization rules, including IRC Section 263A and a narrow election under Section 266. Ask your accountant whether the books follow the tax return or whether the CPA makes those adjustments separately. The difference matters most when a finished property is still unsold at year-end.

Which cost groupings help compare development projects?

A useful starting point is acquisition, hard costs, soft costs, financing, carrying costs, and selling or closing costs. Define the accounts included in each group consistently across projects. These business categories supplement the asset-versus-expense classification; they do not decide capitalization policy.

What is the difference between return on project cost and project return on equity?

Return on Project Cost divides the project’s profit by its total recorded cost. Project Return on Equity (ROE) divides the same profit by the capital the owners and co-investors contributed. In this guide’s example, $160,000 of profit is 25% of the $640,000 cost and about 55% of the $290,000 contributed. Both are lifetime accounting returns, without annualization; they are not investor cash-flow IRRs.

Should company returns use twelve or twenty-four months?

Choose the period that helps explain your development cycle. Twelve months supports an annual view; twenty-four months can put longer projects and uneven sale timing in context. Specify whether capital is averaged from opening and closing balances or from every month-end, and label any annualization. Neither window is the default for every developer.

Are development costs operating or investing cash flows?

It depends on the property’s purpose. Under US GAAP, payments to acquire and develop property for sale in the ordinary course are operating cash flows, like inventory. Property acquired or built to hold for rental is investing. Loans, owner contributions, and distributions are financing. Capitalizing a cost does not, by itself, make its payment an investing cash flow.

Does this approach work with QuickBooks Online?

Yes. PipeLedger has live connectors for QuickBooks Online and NetSuite. Tag each acquisition, development, sale, and funding entry with its project, and keep each LLC’s records identifiable. PipeLedger reads the ledger and does not post to it; corrections are made in QuickBooks and appear in the reports after the next refresh.

Do I need finance experience to set up PipeLedger?

No accounting qualification is needed to set it up. An owner who knows the projects and is comfortable asking an AI assistant questions can connect the books, review the account classifications, and define the reports, asking the assistant to explain each step along the way. The accounting judgments stay with your accountant or CPA: what to capitalize, how to classify funding, and what goes in the tax return.

What can an AI assistant do with my books, and can it change them?

A connected AI assistant such as ChatGPT or Claude can retrieve published reports, trace a figure to its General Ledger entries, and help investigate a difference. With permission from the organization’s Owner or Admin, it can also save changes inside PipeLedger, such as a cash-flow classification override, once you confirm. It cannot post to QuickBooks or NetSuite or initiate payments.

Do we need a BI dashboard to adopt this approach?

No. PipeLedger’s published financial data and Finance Catalog definitions support authorized AI tools, reports, queries, and configured BI delivery. Start with the controller’s accounting questions and review process. A dashboard is an optional presentation choice.

For the source-data foundation, read the QuickBooks extraction guide; for a customer example, read the Ome Dezin story.

How to build reliable financial reporting for real estate development | PipeLedger AI