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

      • New Feature : Copying tickets with all the contents such as conversations/history/attachments etc

        Sometimes our customers and distributors do create tickets (or send emails) which contain more than one incident in them and then also some of the further conversations which are either created by incorrect new tickets or replies to old tickets are being created as combined tickets. In such cases we require to "COPY" the contents of the tickets into separate tickets and merge them into their corresponding original tickets. The "CLONE" feature doesn't copy the contents (especially the conversations
      • Como se agregan los empleados

        Necesito saber si para agregar empleados los mismos necesitan tener licencias
      • Deluge Error Code 1002 - "Resource does not exist."

        I am using the following script in a Custom Button on a Sales Return. Basically, the function takes the information in the sales return (plus the arguments that are entered by the user when the button is pushed) and creates a return shipping label via
      • Adding multiple Attendee email addresses when adding a Zoho Calendar event in Zoho Flow

        I am trying to integrate Notion and Zoho Calendar via Zoho Flow. However, the Attendee email address supported by Zoho Calendar - Create event only supports one email address, so I am having difficulty implementing automation to automatically register
      • Graceful Handling of Exceeded Option Limits

        Hi Zoho SalesIQ team. I would like to submit a feature request to deal with a bug in salesIQ Current Behavior (Bug): When a dynamic list passed to the Single Select Option Card contains more than 20 options, the Zobot stops responding (freezes/hangs)
      • System default SLA descriptions can't be modified

        The system default SLAs have identical descriptions for all SLA levels, but their settings differ. However, I am facing an issue where I cannot modify these descriptions and save the changes. The content of the description box can be edited but the changes
      • Adding non-Indian billing address for my Zoho subscription

        Hey Need help with adding a non-Indian billing address for my Zoho subscription, trying to edit the address to my Singapore registered company. Won't let me change the country. Would appreciate the help. Regards, Rishabh
      • How to create one ZohoCRM organisation out of a multi-organization?

        Hi, we have a multi-org including two different Zoho CRM organizations for two companies using respectively EUR and USD as default currency. I was wondering if there is any easy way to merge the two organizations into just one, so that users may access
      • Gray screen while signing documents

        We are all getting a "gray" screen when trying to sign documents in Zoho sign. Anyone else having issues?
      • Designing a practical Zoho setup for a small business: lessons from a real implementation

        I recently finished setting up a Zoho-based operating system for a small but growing consumer beauty business (GlowAtHomeBeauty), and I wanted to share a practical takeaway for other founders and implementers. The business wasn’t failing because of lack
      • Link Purchase Order to Deal

        Zoho Books directly syncs with contacts, vendors and products in Zoho CRM including field mapping. Is there any way to associate vendor purchase orders with deals, so that we can calculate our profit margin for each deal with connected sales invoices
      • Projects custom colors replaced by default orange

        Since yesterday, projects uploaded to Zoho, to which I had assigned a custom color, have lost the customization and reverted to the default color (orange). Has anyone else had the same problem? If so, how did you resolve it?
      • Interview booked through Invite but no Notifications

        We have a workflow that was developed through a developer/partner that was tested and worked. Today, we pushed a candidate through the process and invited them to an in-office interview. They were sent the booking link (as usual and as tested before successfully)
      • WebDAV support

        I need WebDAV support so that I can upload/download (and modify) documents from my local file system. Is anything planned in his direction?
      • Automatiser la gestion des SLA dans Zoho Desk avec Zoho Contracts

        Les équipes du service client s’efforcent d’assurer un support rapide, régulier et fiable pour garantir la satisfaction de chaque client. Les accords de niveau de service (SLA) permettent de clarifier les engagements en définissant les termes et conditions
      • iOS App doesn't refresh for Document Creation

        Hello Zoho team, I have created a workflow to be used on a mobile iOS device which starts in Zoho Creater and ends with a murge and store function that then opens the newly created document within the Zoho Writer app. This process is working great however
      • Uploading a signed template from Sign to Creator

        Good day, Please help me on how to load a signed document back into Creator after the process has been completed in Sign. Below is the code that I am trying, pdfFile = response.toFile("SignedDocument_4901354000000372029.pdf"); info pdfFile; // Attach
      • Zoho DataPrep and File Pattern configuration

        I'm using Zoho data prep to ingest data from One Drive into Zoho Analytics... The pipeline is super simple but I can't any way to get all the files that I need. Basically I need to bring all the files with a certain pattern and for that I'm using a regex
      • Assistance needed: Activation of a domain

        Hello Zoho Support, I purchased the .com domain "primesolva.com" via Zoho 6 days ago. The domain is still pending, and I cannot access the DNS panel to add the TXT verification for domain ownership. Please confirm the registration status and help me activate
      • Operation not permitted

        I am trying to add an email address to the list of user but I am getting error Operation not permitted
      • Request to Permanently Delete Email User (info@mehbobgulf.com ) from Old Organization

        Please permanently delete the user email info@mehbobgulf.com It is still associated with my old Zoho organization. I cannot delete it because it shows ‘You cannot delete email. Zoho host’. I need to use this email in a new Zoho account.”
      • Client host [89.36.170.5] blocked using Spamhaus

        Hello please make make actions for delist ..... "Client host [89.36.170.5] blocked using Spamhaus"
      • Suggestion: Option to Re-run a migration

        As I'm going through a migration process, I like the IMAP migration tool, but it would be better if there were an option to re-run the same migration as configured. There's not even an option to copy/edit one that's already there. Just run if it hasn't
      • Issue with "Add Your Mobile Number"

        Hello, I am trying to sign up for email service for a domain name, and I cannot finish the authentication. When I enter my mobile number, I receive the message "We’re unable to send OTP to this mobile number. Please contact support-as@zohocorp.com". I
      • zoho mail non vérifié

        Bonjour, Il y'a un jour que j'ai acheté un domaine et toute les tentatives pour l'associé a mon compte shopify son vaine. j'ai essayé TXT sans suite après, j'ai essayer avec CNAME sans suite. j'aurais besoin de votre assistance pour associé mon mail.
      • Unable to send message;Reason:553 Relaying disallowed. Invalid Domain

        i have facing the issue "Unable to send message;Reason:553 Relaying disallowed. Invalid Domain" if i verify domain evertthing i did but still face the same error.
      • ZohoMail is so close to being Perfect BUT

        Why don’t you have HILIGHTING???!! I've been trying to find a substitute for Edison Mail but I want & need hilighting (preferably in more than just yellow)! Is this even on your To Do list? I’m so disappointed. 🙄
      • Override Auto Number field?

        We are preparing to migrate from Salesforce. In Salesforce, we auto-generate a unique number on our Opportunities (Potentials). If the Opportunity results in a contract, we use that unique number as the Contract number. There are some situations where
      • Using a third party service provider want to move directly with Zoho

        Hi good day I’m currently using Zoho but I’m using a third party service provider I want to move directly with you guys I’m using Zoho email and invoices and my domain please let me know if it’s possible to move away from the third party provider my email
      • Request for Assistance Regarding Email Sending Issue (554 5.1.8 - Email Outgoing Blocked)

        Dear Zoho Support Team, I hope this message finds you well. I am writing to request assistance with an issue we are currently facing regarding our Zoho Mail account. Our email account, admin@tuyensinhcanuoc.com, is encountering the following error when
      • Zoho Mail API returns empty inbox (0 messages) but webmail shows 37 unread emails

        Hello, I'm experiencing a discrepancy between Zoho Webmail and the Mail API (EU region). **Setup:** - Account: EU datacenter (mail.zoho.eu) - API: Self Client OAuth2 via api-console.zoho.eu - Scopes: ZohoMail.messages.READ, ZohoMail.messages.UPDATE, ZohoMail.folders.READ,
      • Zoho Mail not working

        Zoho Mail not working
      • ShipStation and Zoho Inventory

        Hello, I am looking to sync zoho inventory with shipstation ZOHO INVENTORY           SHIP STATION Sales Order  ==>  create ORDERS INVOICE  <==    Shipments What exactly does BETA mean on the Shipstation connector?  This is required for me to sign-on in the next month. Thanks in advance for your efforts
      • 550 5.4.6 Unusual sending activity detected. Please try after sometime

        Hi, I am receiving this error message when trying to send my emails. The only reason I can think why this is happening is my previous two emails were bounced back to me due to a non working mailbox error. I have followed the online links for unblocking but it says there are no blocks on my account. How and when can I get my email working again to send emails? Thanks,
      • E

        We are trying to add our Zoho Form embed in our Elementor Page Builder. After adding Zoho Forms widget in elementor page builder it’s displaying in backend page builder but it’s giving 403 error while trying to save, as it’s not reflecting in front end.
      • Formatting Problem | Export to Zoho Sheet View

        When I export data to Zoho Sheet View, ID columns are automatically formatted as scientific notation. Reformatting them to text changes the actual ID values. For example, 6557000335603071 becomes 6557000335603070. I have attached screenshots showing this
      • Connecting Zoho Inventory to ShipStation

        we are looking for someone to help connect via API shipStation with Zoho inventory. Any ideas? Thanks. Uri
      • custom module import.

        Is there a way to import data into a custom module? Thanks Rudy
      • HEIC File Type Viewer

        Hi, It would be nice to be able to click on the images in the All Entries/Reports Tables which are HEIC the same as JPG, PNG, etc. so they open in a viewer from Zoho or the Attachment Service, today HEIC requires you to download each image and open it
      • Building Toppings #4 - Setting up and using connections in Bigin toppings

        When building a topping to extend Bigin's functionality and connect it with third-party applications, creating and handling connections is an important step. Connections provide a secure way for your topping to authenticate and communicate with other
      • Next Page