Revenue Management: #7 Revenue Recognition in Construction & Real Estate Industry

Revenue Management: #7 Revenue Recognition in Construction & Real Estate Industry

If you are in the construction or real estate business, you are used to long project timelines and progressive invoicing to keep up with your billing. But when does revenue get recognized? Will it happen when the contract gets signed? At different milestones or only at the end of the project? Each phase has its own pace, and the revenue needs to be tracked carefully throughout the end.


How do long-term projects and contract-driven businesses recognize revenue?   

Revenue Recognition Scenario in Construction & Real Estate

With long-term projects and multiple deliverables in place, construction and real estate businesses often stretch the process across months or even years. Revenue recognition in these industries is less about timing and more about progress.


Long-Term, Multi-Phase Projects

Construction projects often span many months or years. Recognizing revenue based solely on billing milestones (say 30% upfront, 40% midway, and 30% on completion) doesn't reflect the actual progress or value delivered. Companies must track and report revenue based on performance progress, not payment terms.


Example: $5,00,000 real estate development, $1,00,000 recognized after land acquisition, $2,00,000 during construction in progress and remaining during handover.

Percentage of Completion Method

This industry often uses the percentage of completion method, where revenue is recognized based on the cost incurred or work completed relative to the entire project. Misjudging this percentage can result in misstated finances.


Example: For a $1 million project, if 40% of the work is completed, $4,00,000 is recognized regardless of its payment terms.

Retainage Clauses

In construction, it's common for clients to withhold a portion of the contract until completion. Although the work is completed, the revenue may remain deferred depending on the contract terms.

Example: 10% of the $2,00,000 contract is retained as a deposit. That is, $20,000 will be kept as deferred revenue until completion.

Change Orders and Delayed Delivery

Projects might include design, foundation, electrical, plumbing, and landscaping. Each component might have a separate delivery schedule and must be tracked as a performance obligation. When the scope changes during the progress, companies must reassess the total contract value and the revenue allocation accordingly. On the other hand, if the project execution is postponed, all the revenue earned will remain deferred even if an upfront payment was made.


Example: If a client makes a $5,00,000 upfront payment but the work is delayed, the entire amount will stay in deferred revenue until the obligations are fulfilled.

Proper recognition in this space depends more on accurately tracking project progress and billing terms. It's hard for any business to track all these manually, as any deviation in this might lead to the risk of under- or over-recognition. Sometimes, automated recognition rules may not fit a construction contract, specifically when project timelines are uncertain, milestones don't follow a uniform schedule, or the scope frequently changes.

Businesses may prefer manual revenue recognition to mitigate the risk of miscalculation or inappropriate revenue recognition. This ensures revenue is recorded only when specific deliverables are actually completed.


Info

Scenario:

A construction company signs a $600,000 contract to build a commercial warehouse. The client pays the full payment upfront, but the contract specifies that revenue will only be recognized at key stages of the project completion and not based on the period.

Project stages are defined as:

  •  Site Preparation & Foundation: $100,000

  • Structural Framework: 30% of contract value

  • Roofing & Utilities Installations: 40% of the contract value

  • Interior Finishing & Handover over: Remaining balance


Revenue Recognition with Zoho Billing

Zoho Billing enables businesses like the one above to create flexible revenue recognition rules tied to the project progress and with several deliverables.


Companies rely on manual revenue recognition in most construction projects because project timelines and deliverables are often unpredictable. Manual recognition ensures revenue is recorded only when specific milestones are completed. Automated rules like the percentage of completed or scheduled milestones can still be configured where timelines are more predictable, but manual recognition remains the default approach in this industry. In such cases, rules don't need to be pre-configured; the revenue is recognized manually when the milestone is completed.

Reports in Zoho Billing

At the end of the project, recognition happens only at milestone completions based on the manual entry made by the project management team.


Recognised Revenue Report: 

Phases

Completion Date

Recognized Revenue

Site Preparation & Foundation

15/Jan/2025

$100,000

Structural Framework

10/Mar/2025

$180,000

Roofing & Utilities Installation

25/May/2025

$240,000

Interior Completion & Handover

30/Jul/2025

$80,000

Total Recognized

 

$600,000

 


Deferred Revenue Report: 

Month

Deferred Amount

Jan 2025

$500,000

Feb 2025

$500,000

Mar 2025

$320,000

Apr 2025

$320,000

May 2025

$80,000

Jun 2025

$80,000

Jul 2025

$0

 


Revenue Waterfall Report

Billing Date

Total Billed

Jan 2025

Feb 2025

Mar 2025

Apr 2025

May 2025

Jun 2025

Jul 2025

Recognized Revenue

Deferred Revenue

Jan 2025

$600,000

$100,000

$0

$180,000

$0

$240,000

$0

$80,000

$600,000

$0

 


Zoho Billing can efficiently handle change orders, as revenue is recognized manually (Manual Recognition Method). It also allows contract amendments and dynamic revenue reallocation based on project alignment.

Idea

Best Practices for Construction & Real Estate Firms' Revenue Recognition

  • Break Down Phases as Obligations: Identify architecture and construction as distinct deliverable components.
  • Use Percentage of Completion Metrics: Set the base recognition based on cost or time progress, not on the invoicing period.
  • Handle Change Orders: Adjust the revenue schedule dynamically when the scope of the project changes. 
    • Sticky Posts

    • Community Learning Series | Digest #5 — September 2020

      Dear customers, We're happy to bring you the September edition of our #CommunityDigest! Keep track of your subscription KPIs right from your smartphone: Last month, we enhanced our Android mobile app to help our customers get daily updates on their business health. We got to know from a lot of customers that this has made their job much more easier because they no longer have to keep a reminder to manually check on the previous day's revenue or activations. If you have not downloaded it yet, here's
    • Community Learning Series | Digest #4 - August 2020

      Dear customers, We hope you're staying safe and healthy. I'm happy to bring you the fourth edition of our #CommunityDigest with some brand-new updates from us. 1. Daily Business Updates (for Android users) The Zoho Subscriptions Android app has got a cool new update: You can now get a push notification to your smartphone that lets you know how many activations and cancellations have taken place, and what's the net revenue for the previous day. The best part is, you can tell the app when exactly you
    • Community Learning Series | Digest #3 - July 2020

      Dear customers, We hope you're staying safe and healthy. We're glad to bring you the July edition of our #CommunityDigest. New community members can view our previous newsletters here. This time, we have two major updates and three interesting topics for you: 1. Zoho Subscriptions Developer Community Since the inception of Zoho Subscriptions, our team believed that the recurring billing platform we provide should be able to offer an extensive API library that empowers businesses to automate most
    • Introducing: Community Learning Series | Digest #1 - May 2020

      Dear customers, We hope you are staying safe and healthy. Helping businesses manage their customer subscriptions more efficiently has always been, and always will be, our goal at Zoho Subscriptions. We strongly believe this is possible if we grow together as a community and share what we know with each other. To nurture this shared learning experience, here is our brand-new Community Learning Series! ​ Welcome to the first edition of our digest! Each edition of our community digest includes guides

    Nederlandse Hulpbronnen


      • Recent Topics

      • Meet up de Zoho en Bilbao

        Buenos días comunidad! Estamos estudiando hacer un Meet up en Bilbao desde zoho y varios Partners. Para que la experiencia sea excelente, queremos saber cuantas pesonas se vendrían a Bilbao al evento. Y para que sea lo mas útil posible, que temas dentro
      • Picklist reference value in REST

        picklist options can be configured to have a different reference value than the displayed one, should be helpful in things like multilanguage: https://help.zoho.com/portal/en/kb/crm/customize-crm-account/translations/articles/translations is there a way
      • In Zoho inventory Converting sales return to cerdit note from using Api from Creator Error details: {"code":-1,"message":"Invalid Sales Return ID."}

        In Zoho inventory Converting sales return to cerdit note from using Api from Creator Error details: {"code":-1,"message":"Invalid Sales Return ID."} this is button Function used in the Creator map Inventory.Create_Credit_note(int CRE_ID) { return_value
      • Marketing Tip #2: Recover lost sales with abandoned cart emails

        Did you know most online shoppers don’t complete checkout? Automated cart recovery emails are an easy way to bring them back. A simple reminder can recover sales you’d otherwise lose. Try this today: Enable abandoned cart emails in Zoho Commerce and set
      • Billing Management: #9 Usage Billing in IoTs

        We live in a world where connectivity has become a lifestyle rather than a luxury. From smart thermostats that adjust your home's temperature to GPS trackers monitoring end-to-end fleets and sensors that optimize energy grids, the Internet of Things has
      • {"code":1038,"message":"JSON is not well formed"}

        Today this began failing: sales_order_data = zoho.books.createRecord("salesorders",books_organization_ID,order_data); with this error message. {"code":1038,"message":"JSON is not well formed"} This code has been running for two years. Here is the input
      • How can I migrate Shared Mailbox from Zoho Mail to Team Inbox?

        I am unable to migrate mails from my shared mailbox in Zoho Mail to Team Inbox. I am the super admin of my Zoho One plan and yet I am getting an error saying only admins can do this? I don't understand the issue.
      • Remember all the ways we've posted?

        The world celebrates World Postal Day in 2025 with the theme “#PostForPeople: Local Service. Global Reach". The story of the “post” is a story of human connection itself, evolving from simple handwritten notes carried over long distances to instant digital
      • Add Support for Authenticator App MFA in Zoho Desk Help Center

        Hello Zoho Desk Team, We hope you are doing well. We would like to request an enhancement related to security for the Zoho Desk Help Center (customer portal). Currently, the Help Center supports MFA for portal users via SAML, JWT, SMS authentication,
      • Can no longer upload my own Notebook cover

        I've had Notebook for over a year and have been able to create my own notebook covers, but when I tried to upload my own cover for a new notebook today, the upload feature has suddenly been starred, requiring me to upgrade my account. When did this
      • Zoho Desk - Cannot Invite or Register New User

        Hi who may concern, we encountered a problem that we cannot invite user or the visitor cannot register for a user at all through our help center portal, with the snapshot shown as below and the attachement. It always pops up that "Sorry, Unable to process
      • Custom domain issue

        I recently changed records for my support area custom domain for a few months, I then wanted to come back to Zoho, but now I can't connect it and I can't login as it's having an SSL issue. I cannot get a good response from support, as I've been notified
      • How do you generate personalized certificates and save them in dynamic folders using Writer's mail merge?

        Zoho Writer's mail merge feature can help you enhance the certificate management process. It's a great way to save time and effort! Merge certificates and maintain a well-organised repository with personalised certificates stored in separate folders for
      • Zoho Editor

        Zoho PDf Editor is not working I am clicking on EDIT PDf then it again bringing me back to the same page. again and again.
      • The present is a "present"

        The conversation around mental health has been gaining attention in recent years. Even with this awareness, we often feel stuck; the relentless pace of modern life makes us too busy to pause, reflect, and recharge. In the world of customer support, this
      • Market cap

        Market cap formula?? Kaise nikale
      • Need Help to setup plugs along with codeless bot buidler. To send sms OTPs to users via Zoho Voice and to verify it

        Need Help to setup plugs along with codeless bot buidler. To send sms OTPs to users via Zoho Voice and to verify it. I get leads from our website and we need to make sure those are not junk. So we are using proactive chat bot and we need mobile OTPs to
      • Direct Integration Between Zoho Cliq Meetings and Google Calendar

        Dear Zoho Team, We’d like to submit the following feature request based on our current use case and the challenges we’re facing: 🎯 Feature Request: Enable meetings scheduled in Zoho Cliq to be automatically added to the host's Google Calendar, not just
      • Zoho sheet

        Unable to share zoho sheet with anyone on internet with editer option only view option is show
      • Mail and OS

        Jai Hind! Zoho is doing good by creating good software (made in india) on par with other tech giants. 🥰 Suggestion: 1. Whenever we sign up on zoho mail its asking for other mail id. It shouldn't be like that. You should ask general details of a user
      • Personal account created under org account

        Hi there, I am Jayesh. We are using ME Central, and we have an account by the email ID soc@kissht.com.. Now I have created a personal account., jayesh.auti@zohomail.in, accidentally. Can you help me to remove this jayesh.auti@zohomail.in from my organization
      • Add another account

        How to add another mail account to my zoho mail.
      • Recover deleted user

        Hi by mistake i have deleted an added user and his email associated. Please help me recover it thank you.
      • No connection to the server

        Hello! I can't add a new email address to my mailbox because your server is rejecting me. Please help. I took and added a screenshot of this problem Marek Olbrys
      • Emails missing from desktop but visible on phone

        Subject says it all. Windows 11 laptop. Apple phone. all systems up to date.
      • Website Hosting

        Hello, I want to host my domain on Hostinger, and I want my emails to run through Zoho Mail. Please provide me with the SPF record, MX record (Type: TXT), and A record, so that I don’t face any issues with my emails. My website is on Hostinger hosting,
      • Can not search zoho mail after update V.1.7.0

        i can not search mail on to and cc box from attached picture and then search contacts box can't click or use anything. include replay mail too.
      • How to retreive the "To be received" value of an Item displayed in Zoho inventory.

        Hi everyone, We have our own Deluge code to generate a PO according to taget quantity and box quantity, pretty usefull and powerful! However, we want to reduce our quantity to order according to "To be received" variable. Seems like this might not even
      • Kaizen #211 - Answering your Questions | Using Canvas and Widgets to Tailor CRM for Mobile

        Howdy, tech wizards! We are back with the final post in addressing the queries you shared for our 200th milestone. This week, we are focusing on a couple of queries on Zoho CRM mobile configurations and custom payment gateway integration. 1. Mobile SDK
      • Remove "Invalid entries found. Rectify and submit again" modal

        Following up on a post from a few years back, but can the Zoho team consider either removing the 'Invalid entries found. Rectify and submit again' modal that displays for empty mandatory fields OR allow an admin to change it? I've built a custom error
      • No Functional Autosave or Manual Save Button

        Application : Zoho Notebook So I wanted to try Zoho Notebook(On Ubuntu) as an application, I installed the application and went solving my LeetCode problems visually(Drawing mode), at one point the app just stopped saving anything... Every time I tried
      • Cadence reports as front-end reports

        Hello everyone, We have built a cadence which is connected to the Leads module. There are 11 steps in total, 7 are automatic emails and 4 are tasks for the Lead owners. As admins, we have access to this (very nicely made) 'View Reports' tab where we can
      • Show elapsed time on the thank-you page?

        Is it possible to display the total time a user spent filling out a Zoho Form on the thank-you? I’d like to show the difference between the `form submission timestamp` and the `start time` (currently have a hidden Date-Time field set to autofill the date
      • Email Integration - Zoho CRM - OAuth and IMAP

        Hello, We are attempting to integrate our Microsoft 365 email with Zoho CRM. We are using the documentation at Email Configuration for IMAP and POP3 (zoho.com) We use Microsoft 365 and per their recommendations (and requirements) for secure email we have
      • I need to do crud with snippet html

        I need to implement a form with an improved user interface. I would like to use snippets to build a CRUD that allows me to create and update records. How could I achieve this using snippets?
      • Allow Stripe Credit Card and Stripe ACH payment methods to be enabled separately on an invoice.

        I need to be able to pick at the invoice level whether Stripe Credit Card and/or Stripe ACH payment methods are available. Currently, I'm not able to select from the two Stripe payment methods individually on an invoice. However, there are some larger
      • Resume Harvester: New Enhancements for Faster Sourcing

        We’re excited to share a set of enhancements to Resume Harvester that make sourcing faster and more flexible. These updates help you cut down on repetitive steps, manage auto searches more efficiently, and review candidate profiles with ease. Why we built
      • Incorrect “correct” password on email client apple mail

        I have troubleshot this account several times. I have deleted and re added account. It keeps saying incorrect password. Can you check that it is not locked on your end?
      • Is it possible to lock editing subform rows?

        Ideally editing would only be locked after the form has been updated but I still want them to be able to add new subform records at any time and they should be able to delete rows from the subform. It is a named subform if that's relevant however the
      • "Spreadsheet Mode" for Fast Bulk Edits

        One of the challenges with using Zoho Inventory is when bulk edits need to be done via the UI, and each value that needs to be changed is different. A very common use case here is price changes. Often, a price increase will need to be implemented, and
      • Next Page