Our previous post taught us how Zoho Billing makes life easy for businesses with its automated revenue recognition rule. However, certain businesses have more challenges that an automated system cannot handle, and there are certain situations where automated revenue recognition is not feasible. For example, construction services paid in advance but with uncertain start dates can make the revenue recognition rule look inappropriate. Some manual interventions are needed to handle this scenario.
Manual revenue recognition in Zoho Billing helps you handle these uncertainties. It is used when the timing and amount of revenue cannot be determined accurately through automated rules. This is common in industries such as construction, where project completion is tied to milestones that may occur at irregular intervals.
Example 1:
Imagine a construction firm signs a $50,000 contract to renovate a commercial building. The client pays the entire amount upfront, but the agreement specifies that the revenue will be recognized only as key project stages are completed. Each milestone carries a defined value or percentage of the total contact, say,
Design & Approval Phase: $5000
Demolition & Site Preparation: 30% of the total contract value
Structural & Roofing Work: 40% of the total contract value
Interiors & Handover: 100% of the remaining
Milestone | Recognition | Completion Date | Amount Recognized |
Design & Approval | Fixed Cost | 12/Jan/2025 | $5000 |
Demolition & Site Preparation | 30% of the total contract | 20/Feb/2025 | $15,000 |
Structural & Roofing Work | 40% of the total contract | 25/Apr/2025 | $20,000 |
Interior & Handover | 100% of the balance | 30/Jun/2025 | $10,000 |
Total Revenue Recognized= $50,000 |
The company ensures that its financial statement accurately reflects real project progress by only reporting revenue when each phase is completed, rather than relying on an automated schedule that may not match the actual work done.
If you look at the revenue recognition report, it will show up like this,
i) Recognized Revenue Report
At the end of the project,
Month | Recognized Revenue |
Jan 2025 | $5000 |
Feb 2025 | $15,000 |
Mar 2025 | $0 |
Apr 2025 | $20,000 |
May 2025 | $0 |
Jun 2025 | $10,000 |
Total Recognized | $50,000 |
ii) Deferred Revenue Report
As the project progresses, deferred value gets recognized.
Month | Deferred Revenue |
Jan 2025 | $45,000 |
Feb 2025 | $30,000 |
Mar 2025 | $30,000 |
Apr 2025 | $10,000 |
May 2025 | $10,000 |
Jun 2025 | $0 |
iii) Revenue Waterfall Report
Billing Date | Total Billed | Jan 2025 | Feb 2025 | Mar 2025 | Apr 2025 | May 2025 | Jun 2025 | Recognized Revenue | Deferred Revenue |
Jan 2025 | $50,000 | $5,000 | $15,000 | $0 | $20,000 | $0 | $10,000 | $50,000 | $0 |
The project owner ensures that revenue is recorded accurately only after each milestone is completed, and this is done manually without any specific frequency.
Example 2:
A software consulting firm signs a $120,000 contract to implement an in-house ERP solution with a client. The client pays the amount upfront, but the project involves phases that don't follow uniform timelines/deadlines.
The defined timelines are,
Requirement Analysis & Resource Planning: $10,000
System Customization: 25% of the total contract
Testing & QA: 35% of total contract
Deployment & Support: Remaining contract value
Milestone | Recognition | Completion Date | Amount Recognized |
Requirement Analysis & Planning | Fixed Cost | 15/Jan/2025 | $10,000 |
System Customization | 25% of the contract value | 10/Mar/2025 | $30,000 |
Testing & QA | 35% of the contact value | 25/May/2025 | $42,000 |
Deployment & Support | 100% of the balance | 30/Jul/2025 | $38,000 |
Total Revenue Recognized= $120,000 |
When you look at the revenue recognition report for this software deployment, it will show up as follows,
i) Recognized Revenue Report
At the end of the deployment,
Month | Recognized Revenue |
Jan 2025 | $10,000 |
Feb 2025 | $0 |
Mar 2025 | $30,000 |
Apr 2025 | $0 |
May 2025 | $42,000 |
Jun 2025 | $0 |
Jul 2025 | $38,000 |
Total Recognized | $120,000 |
ii) Deferred Revenue Report
As the development progresses, deferred value gets recognized.
Month | Deferred Revenue |
Jan 2025 | $110,000 |
Feb 2025 | $110,000 |
Mar 2025 | $80,000 |
Apr 2025 | $0 |
May 2025 | $38,000 |
Jun 2025 | $38,000 |
Jul 2025 | $0 |
iii) 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 | $120,000 | $10,000 | $0 | $30,000 | $0 | $42,000 | $0 | $38,000 | $120,000 | $0 |
Manual revenue recognition is critical when automated rules don't serve the purpose. As we saw through construction and IT consulting examples, Zoho Billing allows businesses to recognize revenue at the right amount and time, ensuring financial statements remain aligned with real project progress.
While we learn the manual recognition process, we will explore these specific industry types in future posts and provide a detailed walk-through of how these businesses record their earnings.
Our next post will start with the SaaS industry, where revenue recognition follows a very different pattern. Unlike milestone-based revenue recognition, SaaS depends more on a recurring billing cycle.
Stay tuned as we explore revenue recognition for SaaS businesses in a few days.
Recent Topics
Getting error "invalid warehouse_id" when trying to update any transaction in Zoho books
I got a message from Zoho saying that the Warehouse and Branch has been merged into one category "Locations" Once I migrated to this setup I was no longer able to edit any invoice / create creadit notes - got an error saying "invalid warehouse_id" I never
Return "kit_quantity" when fetching Kit items via "List all the items" API call
I have been appreciating the new Kits feature quite a bit, it is exactly what we were looking for in Zoho to solve many pain points. However, there is 1 problem I am running into and that is the fact there is no stock information that can be pulled for
Automating Pricing in Zoho Inventory Based on Brandline Quantity
I am currently setting up my Zoho Inventory system and would like to implement an automatic pricing feature for sales orders. We have created a custom field called "brandline" for our items. All products with the same brandline value should have the same
Tags with Zapier
Maybe I'm missing something....I hope so... Using tags for triggers is a key need. This prevents us from having a ton of different lists. I am trying to find out how to add a tag using zapier when someone makes a purchase....but it doesn't seem to be
Print & PDF Support for Composite items
There needs to be a way to print a composite item showing all the components, qty & images.
Build custom AI solutions with Catalyst’s QuickML capabilities in CRM
Hello everyone, We’re thrilled to announce an improvement for our Zoho CRM Enterprise users: the ability to create custom AI solutions using Catalyst’s QuickML directly from Zoho CRM. As you may already know, Zia, Zoho CRM’s AI-powered assistant, offers
We cant create a custom function
Live webinar: Power-up your business presentations with Show's add-ons
We all spend a good amount of time building presentations for meetings, reports, and pitches. But even with good content, slides can sometimes feel basic or less engaging. That’s where having the right tools helps. With Zoho Show’s add-ons, you can embed
Contractor recruitment
We mainly supply contract staff, so there is an end point to when they are 'Hired'. The problem we have is that once we have marked the candidate as 'Hired' there is no way that we can change their status afterwards without 'unhiring' them against the job. We need to be able to hire people for a fixed period of time, after which they would become 'available' again. How do we go about doing this?
Writer very buggy and glitchy after only a few minutes of use... oh my.
I am finding Writer to be very buggy and glitchy while using it. I've tried it in Firefox, Chrome, Safari... all Mac. Complete words get deleted on backspace (probably a feature, but disconcerting and bad design, esp. if you just want to delete a couple
How can I use the API to add a drop-shipping address to a sales order for one-time use?
I need to be able to add a drop-shipping address for one-time use to a sales order via the API. Adding every such address to the contact (customer), then feeding the shippingaddress_id into the sales order, is not an acceptable approach; we have some
Zoho say my domain seems to be already associated with another account
I created a website on zoho and associated my domain (bompescado.com) on it. You can see the A record and CNAME are working to it. Now I need to associate the same domain as webmail, but when I try it return with: " This domain name seems to be already associated with another account. If you own this domain, please contact us for assistance." Im following the advice and conctacting you to say I've not been associated this domain on zoho before. What do I need? Well, I need you manually remove it
Mass Print Attachments from Selected Records in Custom Module
Dear Zoho CRM Team, We’d like to request a feature enhancement regarding the handling of attachments. Use Case: We have a custom module that stores invoices uploaded by our affiliates. Currently, we need to open each record individually to print these
how to integrate zoho bigin to wordpress website ?
hello , i want to integrate zoho bigin to wordpress webiste , can anyone help me with the tutorial ?
Surely it's time Inline editing from views
I think the first request I found for in-line editing from grids was approximately 12 years ago - that post was locked because it was suggested Zoho sheetview solved the problem. However, it's now 2024, and in-line editing from grids is just a basic expectation.
Issue with POST request creating Calls in CRM
Hello, I am in the middle of integrating some 3rd party Call center API with Zoho CRM and going through our logs I see some discrepencies. We sometimes get an error: {"data":[{"code":"INVALID_DATA","details":{"api_name":"Call_Duration","json_path":"$.data[0].Call_Duration"},"message":"Please
only lastname as index(?) field in custom module
Hello, I have a small problem. I have created a custom module. The data records are only labeled with the last names. Also in the lookup etc.... It's stupid if you have different first names with the same surname. Then I only ever see the surname. In
How to read content out of File (Excel, Zoho Sheet, CSV) and iterate through rows
Hello, I'd like to be able to iterate through all the rows in a CSV or Excel/Zoho Sheet file to perform actions on them. How is this possible in Flow? Thanks in advance! Best regards, Sven
Import CSV file into Zoho CRM using Zoho Flow?
Is there a way to automate the import of contacts from Zoho Flow to Zoho CRM? I have a csv file on a remote server that I would like to pull off and import/update on a schedule. I know you can do it with Zapier but I would like to stay within the Zoho
TDS Filing
Is there any option for automatic 26Q and 24Q filing in Zoho books. Even Tally has this option. Why don't Zoho has this ? Is there any customisation available for this ?
Sorry to inform you that currently we cannot access the subform fields through writer deluge (zoho.writer.mergeAndSend).
This is the premium support answer from zoho. It means we cannot merge and send thru deluge related records (sub forms) items... Has anybody suffered from the same ordeal ? DO you have a workaround ? If not can you vote for this feature to be added to
Quotes
Has anyone figured out how to automatically upload a quote that was signed via Zoho Sign and insert it directly to that leads file and push it through the pipeline to proposal signed status?
I wan to schedule a meeting report From previous Thursday to this thursday of this week on Every 6 pm want to recive this report in zoho CRM
I wan to schedule a meeting report From previous Thursday to this thursday of this week on Every 6 pm want to recive this report in zoho CRM. How I Can achive this in Zoho CRM.
Importing a contact with a linked product
Hi, I'm trying to import my contacts from an excel spreadsheet and each of those contacts have fields that relate to products. Is there a way that I can import the contact with their linked product? Some of the contacts in my spreadsheet have multiple
CRM - Workflow Rules to be applied and work across modules
Hello, It seems that you can't use workflow rules in CRM to work across modules, is this correct? I need a customer account status to be changed IF there have been no new deals or new quotes in the last 6 months. I can't see this is possible? I can create
Auto assign account owner
hi, i need to auto assign leads and accounts to an owner by rules. i have created all the territories i need, and all territories have their owner. but when i want to auto assign a new or an existing account to a user by the rules of territories, only
How do I enter phone extensions?
How do I add a phone extension correctly so that when I dial the main number it will pause and dial the extension of the contact I want to talk to Greg
How do you make tabs and place certain leads in them?
I am trying to figure out how to make a tab for my Florida contacts, California contacts and New York contacts. I make a new view named "Florida Leads" but when I click on it, ALL of my leads pop up in the same view... Is there a way to move leads into different categories? Thanks, Wayne
Boolean Fields in Mail Merge Displaying as Checkmarks
I'm really liking the new mail merge functionality. It's replaced the Zoho Sign extension for us. One problem I've seen is that boolean operators (i.e. Checkbox fields) in CRM merge as "True" or "False". This looks a little ugly in my final document —
Web to lead form not working
I am starting to use this Zoho product (3 users for free) to see if it really does what it should prior to making a purchase decision. One of the important parts of the ZOHO CRM is the ability to create a web form that auto generates a lead. We have set
Is this a valid email from Zoho or a scam?
Hi, I received an email advising me to update MX records for Zoho mail. Is it legitimate? Thanks, Nelson. Dear Admin, You may know that your domain (eg, yourcompany.com) has an MX record that points to an email server configured to process email for your domain. We have noticed that some of our customers have used Zoho IP address (instead of DNS server name) in their MX records to specify the mail server. This is NOT recommended practice. Vendors will sometimes change IP addresses for number of valid
Search on Postcode criteria not working properly
Hi there, I used to be able to do an advanced candidate search on 'Postcode starts with' and then enter the first two letters of the UK postcode. So if I used CH then it would bring back candidates in CH1, CH2, CH3 etc. This seems to have changed in the last week so that it now only brings back postcodes that exactly match CH only. I tend to use this search criteria extensively so need a fix for it asap please.
Quotes vs Invoices vs Sales Orders
We have the need to create either quotes, invoices or sales orders for services we provide to clients for our sales team to present to them. However, we are confused in the purpose of each and which we should choose. Could someone explain the difference in them? Also, with these, we will have setup costs for our clients and then fixed monthly costs. For instance, we have services that are one-time services at $997 and then we have others that are monthly only ($250 per month). In addition, we
Tip 14: How to iterate a set of Deluge code a specific number of times.
Hello folks, As you might already know, recursive functions are used to perform a particular action a specific number of times. We had explained this in detail in our Tip #2. Similarly, there is another way in which you can iterate a set of Deluge code 'n' number of times. All you need to do is to create a List and use the For each index task to iterate it for a specific number of times. Here are a few use cases where this would be useful to you: To create 'n' number of duplicate records for
Can't set conditional layout rule on lookup field in Zoho CRM
Namaskaram Zoho CRM team, Usually any fields of module except mandatory fields can be hide using conditional layout rules. But that can't be set on lookup fields event that is not a mandatory fields. Many users are in need of that. Crafted with
Online Calculator
Created a public shipping volume calculator for my website visitors to use. its pretty cool when you combine the power of zoho sheets and the web experience. I chose zoho because our users dont need to login or created acct like google doc users. this is great because ppl will accept the technology more without resistance. you can see the online calculator here: hxxp://www.dblusa.com/dbl_calculator.php peace! RSA
All about Users in Zoho Projects
To form a functional team, businesses should define different types of users in their team. Businesses can be effectively managed by inviting users to various roles. And, the person who has the administration privileges can invite or add users to various roles in the project. Two types of users Before going into the steps to add users to your portal or project, let's understand the different types of users: Portal Users - Users who work for the projects in your team. ~ Portal
Zoho Projects API 100 requests/2 min. Limit
Hi Requesting clarification on the API documentation. "You can invoke or call an API for 100 times in a span of two minutes. If you invoke more than 100 times, the particular API request will be locked for the next 30 minutes. " Does this limit apply
Calendar Connection Enhancement
Hello everyone, Greetings from the Bookings team. We're here to announce an important Calendar enhancement that will roll out soon. Let's take a look at what's being changed. Improved and more straightforward UI The Calendars UI is undergoing a complete
Bookings to CRM - New Events and Contacts
Hello, I have an issue with appointments taken by clients from a Zoho Bookings page. Previously when an appointment was reserved, if there were no client created in Zoho CRM, it would create it in the CRM through the integration between both platform.
Next Page