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.
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.
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.
Recent Topics
Tip #41- Simplify Compliance and Efficiency with Zoho Assist’s Data Cleanup Feature- 'Insider Insights'
Managing device data efficiently is just as important as securing remote access. With Zoho Assist’s Data Cleanup feature, admins can easily remove outdated or unnecessary device records, keeping the console organized and secure. This action is carried
Revenue Management: #6 Revenue Recognition in Professional Services Industry
If you run a consulting firm, agency, or any service-based business, you have a situation where you have signed the contract, maybe even sent the invoice, and have received some initial payments. So, can you consider this as revenue? What if the project
This domain is not allowed to add. Please contact support-as@zohocorp.com for further details
I am trying to setup the free version of Zoho Mail. When I tried to add my domain, theselfreunion.com I got the error message that is the subject of this Topic. I've read your other community forum topics, and this is NOT a free domain. So what is the
Zoho fsm scheduled maintenance dispatch
Hi, I'm reaching out regarding an issue I'm encountering with the Scheduled Maintenance feature in Zoho FSM. I’m trying to configure it so that it automatically dispatches all maintenance jobs scheduled within the next 150 days, starting from today. However,
Template modifiactions
Hello, I am struggling with the templates in ZOHO Books. Especially with the placement of some items, like company address, ship to, bill to etc. For example: One item I like from template X (placement of ship to and bill to next to each other in the
zoho.inventory.getRecords returns no records
I running a custom function (Deluge) in Zoho Flow with a connection to Zoho Inventory. To debug the problem, I created the test function below. It returns "Number of contacts fetched: 0". This confirms that there's no issue with the org ID or connection
Zoho Campaigns Event timestamps do not propagate to Zoho CRM
We have integrated Zoho CRM and Zoho Campaigns. But when looking at Contact records, the Campaign event data is missing the actual timestamps: especially when a particular email was sent. They're not in the Campaigns related list, and the cannot be found
Feature announcement - Simplifying document creation with Zoho Sign
Hi there, We are pleased to announce the release of our document creation feature, enabling you to create, edit, and finalize documents like agreements, purchase orders, and contracts without relying on external tools or applications. <br> This
Integrating File Attachments in Zoho Flow Email Notifications
Hi, I would like to be able to send an email once an entry is made in a form, and in this email, I would like to attach a file that has been added to the form using the ImageUpload (or FileUpload) widget. So, I started by creating a flow that will trigger
CRM->INVENTORY, sync products as composite items
We have a product team working in the CRM, as it’s more convenient than using Books or Inventory—especially with features like Blueprints being available. Once a product reaches a certain stage, it needs to become visible in Inventory. To achieve this,
Zoho Mail SMTP IP addresses
We are using Zoho Mail and needs to whitelist IP for some redirections from your service to another e-mails. You can provide IP address list for Zohomail SMTP servers?
Zoho project purchases
Hi Folks, I think having a purchase module in projects will help in putting together a project p and L. Project wise purchases and expenses. Do let me know your thoughts.
Create Tasklist with Tasklist Template using API v3
In the old API, we could mention the parameter 'task_template_id' when creating a tasklist via API to apply a tasklist template: https://www.zoho.com/projects/help/rest-api/tasklists-api.html#create-tasklist In API v3 there does not seem to be a way to
How can I restore all the deleted Time entries of a Task in Zoho Projects
How can I restore all the deleted Time entries of a Task in Zoho Projects? Query: In Zoho Projects, I cloned a task and deleted the time entries from the cloned task. However, this also deleted the time entries from the original task. How can I restore
Is there a way to make an account inactive in ZoHo Desk
We have a few Clients "Accounts" that we no longer do business with. It would be beneficial for them to not show up in lists. However, we want to go back and view tickets, time, etc.
How to set the value of the Phone field importing contacts in Zoho Desk
Hi everyone, i'm new in Zoho Desk, we're setting up the environment and i'm importing contacts from another CRM using a file CSV and i'm getting a problem with phone numbers (italian): the leading zero is cut away, also if the value is inside double quotes.
Set Custom Icon for Custom Modules in new Zoho CRM UI
Change total display format in weekly time logs
Hi! Would it be possible to display the total of the value entered in the weekly time log in the same format that the user input? This could be an option in the general settings -> display daily timesheet total in XX.XX format or XX:XX.
Deprecation Notice: OpenAI Assistants API will be shut down on August 26, 2026
I recieved this email from openAI what does it means for us that are using the integration and what should we do? Earlier this year, we shared our plan to deprecate the Assistants API once the Responses API reached feature parity. With the launch of Conversations,
How to center a field inside a section?
I’ve been trying to center a field inside a section in Zoho Canvas. When I align it visually, it looks centered in the editor, but after clicking Save, the field appears misaligned on the actual canvas. I also tried setting the field to full width, but
Kaizen #192 - Implementing Custom Token Persistence in Python SDK
Welcome back to another week of Kaizen! Last week, we discussed how to implement Login with Zoho using OAuth 2.0 and saw how to bring it to life in a real-world application with the Zoho CRM Python SDK. We also discussed how Zylker Academy built a custom
Showing the map along with mileage expense
When you use the GPS to track mileage, it shows you the map of the actual path travelled. It would be very useful and practical to save that map with the mileage expense, so that when the report is created, it provides a map of each mileage expense associated
Enable Validation Rule for Multi-Select Picklist Field
Zoho, Please allow validation rules for multi-select fields.
File Upload field not showing in workflow
Hi, I have added a field on Zoho CRM. I want to use it in a workflow where that particular field is updated based on another field, however it is not showing up in the field list to select it in the workflow. Why is this please?
CRM Custom function updating a module record shows the Super Admin user as the record modifier
Dear Zoho CRM Team, Is there any way to update this so that when a custom function has updated a record the Super Admin user doesn't become the modifier? This happens on the record as a modifier and shows up in the audit logs. It would be more useful
Best practice importing items and matching assemblies
Hi, I was wondering what would be the best practice to import items and composite items (assemblies) From my backup, what should I import first? The items or the composite items? I am on Zoho one, using inventory and books. Kind regards, Sabine
Best way to fetch employee names from Zoho People into Zoho Creator Inventory Stock Form field Employee Name Lookup
Hi Team, I have a requirement in my Zoho Creator application (Inventory Stock Adjustment) where I need to fetch employee names from Zoho People and use them as a lookup in a form. Currently, I am considering using an integration field to fetch this data
get file api is returning Junk data
I am working on extension development where at one point I need to retrieve attachments on records I found out I can use only invokeconnection and not invokeurl in extension development The invoke connection returns the image in raw binary format. When
Need help with message box
End user updates many records at once. Each have unique serial number. They want a confirmation box that says starting number, ending number and qty. Is there any way to do this? I been searching and asking support but seems like no great solution.
[Webinar] The Transformative Power of Gen BI
Traditional decision-making tools are no longer enough. The integration of generative AI into business intelligence (BI) is proving to be a true game changer—enabling businesses to make faster, smarter, and better informed decisions. Early adopters of
Backorder process review - Automating Removal of Sales Order from "On Hold" When PO is Received
Hello Zoho Inventory Team, Currently, sales orders in On Hold status are released only when the bill for the purchase order is created. In our workflow, it would be much more efficient if the sales order could automatically move out of On Hold as soon
How to access the saved Query using API?
I have created a query in setting. Is it possible to access it from a API? What's the endpoint? I tried /v8/queries/important_deals but didnt' work.
création d'une base de données
base de donnee d'un lycée
User Session variables to recall after form submit & redirect to menu
Hey, Forgive me if this is a simple answer I have overlooked. I have built a big onboarding process for my SAAS platform which is built and managed by an external Dev team. I am hoping to embed my new creator app on the SAAS platform. I have a menu page
Zoho Writer Merge Template with data from Zoho Analytics Views
Hello, Is there any way to pull information from Zoho Analytics and put it into a Merge Template? I am trying to create a bulk export of one report that filters on a field to create a single document for each of the filter fields.
Having to enter bill before stock shows as available.
Hi, Am I right in thinking you must create a bill from the purchase order receipt before the goods are available for shipping?
Agent Availability report
From data to decisions: A deep dive into ticketing system reports Businesses need to track when their support agents check in and check out from work. This report, titled Agent Availability, is one of the static reports that helps managers track the number
Writing by Hand in "Write" Notes
Hi there! I just downloaded this app a few moments ago, and I was wondering if there was a way to write things by hand in "Write" mode instead of just typing in the keyboard. It would make things a bit more efficient for me in this moment. Thanks!
AI-driven construction analytics using Zoho Projects Plus
Construction projects thrive on timelines; if a project is completed on or before the expected time, it makes headlines, but if it gets delayed, the company’s credibility will be at risk. Such projects require precise planning and constant monitoring,
Canadian payroll
Hello ZOHO, is any updates on when payroll for Canada will be available?
Next Page