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 spans several months? What if there is a revision or unplanned scope creep in?
How do service-based businesses recognize revenue for time, materials, and milestones?
Revenue Recognition Scenarios in the Professional Services
This can happen to any service-based firm, like legal advisors, consultants, marketing agencies, and IT services providers, as they don't sell physical goods. Instead, they provide time, expertise, and deliverables with different timelines. This means, the revenue is recognized as work is performed and not when the invoices are sent. Here are some of the common scenarios that a service-based company faces:
Time & Material Billing
Many firms work on time and material contracts, where billing is based on hours logged. In contrast, fixed-fee projects promise a set scope for a lump sum. Revenue must be recognized based on the work delivered, not simply how much time has passed or been billed.
Example: A consultant bills $150/hour. If 40 hours are worked in April, $6000 is recognized for that month.
Bundled Services
Like SaaS, A contract might include onboarding, implementation and support. Each has a different timeline and must be recognized separately. Without clear performance obligations, firms risk misstating their revenue.
Example: A network provider sells routers, installs them, and provides support for a one-year period for $50,000. Here, the revenue earned by routers is recognized immediately; revenue from installation will be recognized as and when it is done. However, the revenue for support will be recognised only at the end of the year.
Milestone-Based Deliverables
Some contracts are milestone-based. Even if the client pays upfront or monthly, revenue must be recognized only when the milestone is met. This leads to uneven revenue patterns and complex tracking.
Example: A $20,000 marketing strategy contract has different stages, starting with $500 for discovery, $10,000 for planning, and $5000 at the time of delivery. Revenue aligns with each milestone.
Different Start Date
There can be cases where the client pays upfront for a project that begins after a few weeks. The revenue cannot be considered recognized until the project begins, and it will be deferred until the actual start date.
Example: $10,000 was paid in June for a project that starts in August. The revenue will have to be maintained as a liability/deferred until August.
Scope Changes & Goes for Rework
Projects often evolve with new tasks, changes in timeline, or even the entire deliverable gets changed. These contract modifications require updated revenue allocation and potentially re-recognition of previously booked revenue.
Example: A legal advisory firm signs a six-month contract for $60,000. After two months, the clients expanded the scope by adding training and doubling the reviews from the earlier contract, which required reallocating revenue for the remaining months.
Since service delivery isn't always linear, tracking obligation completion is essential. Manually doing this for a large-scale contract is going to be close to impossible.
Scenario:
A digital consultancy service signs a contract for $60,000 with a client that includes $10,000 worth of an upfront discovery workshop. Additionally, System implementation is planned for $30,000 and will take three months to complete. Technical assistance will be offered at $20,000 for six months.
Zoho Billing for Professional Service Revenue Recognition
Zoho Billing allows professional services firms to configure revenue recognition rules tailored to the contract's stages and services.
For the scenario above, the rule could be set as follows:
| For Discovery Workshop | For Implementation | For Technical Assistance |
Recognition Frequency | Once | Monthly | Monthly |
Recognition Method | Daily | Evenly Distributed | Evenly Distributed |
Recognition Time | Period Start | Period Start | Period Start |
Once configured, Zoho Billing will take care of recognizing the revenue automatically.
It recognizes $10,000 after the discovery sessions are done. For implementation, $10,000 will be recognized per month for the next three months. For technical assistance, $3,333 per month will be recognized, which sums up to $20,000 for the committed six-month period.
Reports in Zoho Billing
If you look at the Revenue Recognition reports after two months in Zoho Billing, you can find,
i) Recognized Revenue Report
Two months into the engagement, the discovery workshop is over, two months of implementation have been delivered, and two months of technical assistance have been rendered.
Component | Recognized Revenue | Description |
Discovery Workshop | $10,000 | Fully recognized |
System Implementation | $20,000 | $10,000/month for two months |
Technical Assistance | $6666 | $3333/month for two months |
Total Recognized | $36,666 | Revenue earned in two months |
ii) Deferred Revenue Report
The remaining revenue in deferred is for pending implementation and assistance services that are to be done.
Component | Deferred Amount |
System Implementation | $10,000 (one month left) |
Technical Assistance | $13,334 ($3333/month x4) |
Total Deferred | $23,334 |
iii) Revenue Waterfall Report
Month | Discovery Workshop | Implementation | Assistance | Total |
Month 1 | $10,000 | $10,000 | $3,333 | $23,333 |
Month 2 | --- | $10,000 | $3,333 | $13,333 |
Month 3 (upcoming) | --- | $10,000 | $3,333 | $13,333 |
Month 4 (upcoming) | --- | --- | $3,333 | $3,333 |
Month 5 (upcoming) | --- | --- | $3,333 | $3,333 |
Month 6 (upcoming) | --- | --- | $3,333 | $3,333 |
Best Practice for Professional Services Revenue Recognition
- Define Deliverables Clearly: Break work into explicit deliverables/obligations to know how it will be delivered.
- Match Revenue with Service Period: Use time-based or milestone-based rules depending on the service to be recognized.
- Reassess on Scope Changes: The system should be equipped to automatically understand contract changes and recognize scheduled changes when the project terms shift.
- Manual Revenue Recognition: It is best to use Manual Revenue Recognition based on completion for long-term milestone-based projects.
Recent Topics
Solving the bug in Zoho Writer API for styling
So... the Zoho Writer APIs for programatically creating a document do not respect a template's style. The result is that any document you generate via API needs to be manually, paragraph by paragraph, reformatted. That bug alone is sufficient to render
How to list WorkDrive folder contents using API
I'm trying to read folder contents using a Deluge script. The code below returns {"errors":[{"id":"F6016","title":"URL Rule is not configured"}]}". I've tried using the search API and seen similar errors. I have proved that the connection works by creating
Zoho Books' 2025 Wrapped
Before we turn the page to a new year, it’s time to revisit the updates that made financial management simpler and more intuitive. This annual roundup brings together the most impactful features and enhancements we delivered in 2025, offering a clear
Speed (again!)
Same old story again: impossible to work at this "speed". Category NOTES!
Need to set workflow or journey wait time (time delay) in minutes, not hours
Minimum wait time for both Campaigns workflows and Marketing Automation journeys is one hour. I need one or the other to be set to several minutes (fraction of the hour). I tried to solve this by entering a fraction but the wait time data type is an integer
sending email with another account
Hello there, i write there for an our costumer request. They want to send email from CRM with a different email (confirmed and added to zoho profile). For example they use account@zilium.com but with this account they want to send (not only with email
All new Address Field in Zoho CRM: maintain structured and accurate address inputs
Availability Update: 29 September 2025: It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition exclusively for IN DC users. 2 March 2026: Available to users in all DCs except US and EU DC. 24
Comments aren't visible in shared spreadsheet
I would like to send a spreadsheet to people who can use it to help solve a problem as a one off use unique to them. They will have to enter data in the sheet. I have comments attached to some of the cells to explain the purpose of the data being collected.
Custom button for list page
Why is my 'List Page - Bulk Action Menu' button in the Packages module not autopopulating the List argument with selected record IDs?
Ask the Experts - Live Q&A webinar
Hello Community, We’re excited to host our very first Ask the Experts session! Join us on 7 April 2026 from 11 a.m. to 12 p.m. (IST) for this live webinar Q&A session, where you will have an opportunity to connect directly with our product experts, gain
Designing Multi-Step Workflow System in Zoho Creator + Deluge (Startup Build – Exploring Advanced Architecture + Partnerships)
Hi everyone, I’m currently building a Zoho-based system as part of an early-stage startup, and I’m looking to connect with others who have experience designing more advanced workflows in Creator + Deluge. This started as a standard application, but it’s
Bin Tracking with eBay integration
When trying to setup bin tracking on items that are linked to eBay listings using the built-in Zoho eBay integration, I keep getting this error: "Storage Tracking cannot be enabled for items that are manually fulfiled or for serial/batch items tracked
Removing To or CC Addresses from Desk Ticket
I was hoping i could find a way to remove unnecessary email addresses from tickets submitted via email. For example, a customer may email the support address AND others who are in the helpdesk notification group, in either the TO or CC address. This results
Update to CRM Custom Buttons: Collect Users' Location
Hello everyone! Buttons in Zoho CRM allow you to extend the default CRM capabilities for your bespoke business needs. It provides the flexibility to connect to any third-party application to perform necessary actions. Wouldn't it be better, if those buttons
Is it possible to make tags "required"
We would like to be able to make the tag field a requirement for agents before they can close a ticket. This would help with monthly reporting, where a lot of tickets end up with no tag, causing manual work to go back and add the correct tag for each
Prevent Automatic Milestone Inheritance for Newly Created Task Lists
Hello Zoho Projects Team, We hope you are doing well. We would like to request an enhancement regarding how new task lists inherit Milestone association in Zoho Projects. Current Behavior: At the moment, when a new task list is created below an existing
I would like to know wich person viewed the file
I have a franchise and my Operative Manual is in WorkdriveI, the user can´t download but despite I know How many views the file had, I would like to know wich person viewed the file Is it possible? thank you
Can I write a check in Zoho Books with no associated bill?
This currently does not seem possible, and I have a client that desperately needs this function if I am able to convert them with Quickbooks. Thank you in advance for your reply.
Cloning Module Customizations in Zoho FSM
Hello Latha, I have two Zoho FSM accounts, each in a different data center. I would like to know if it is possible to clone the module customizations I have already completed in one account to my new account in the UAE from the backend. In other words,
Ordering of Teams
Hi there, Currently, we cannot order Teams in Zoho Desk. Teams are ordered as they were created. It would be really helpful if we could customise the order of Teams. For example: We have the following Teams: Shipping Customer Service Sales Compliance
Estimate Module - Contact Field.
Hello Latha and Team, Is it possible to make the Contact field optional in the Estimate module? Best regards, Chethiya.
Item with name in different languate
Hello, is there a way to have an item with its name in different languages? For example: I sell an item in different markets and I'd like to have a Proposal and the Invoice with the Item Name in a specific language. Rino Bertolotto Zoho Specialist, STESA srl
How to keep track of bags, cans, drums of inventory?
We buy and sell products that are packaged in bags 🛍️, cans🥫, drums🛢️, etc. with batch numbers. When we get a shipment of one of the products, how do we track we received (say) 10 cans each of 5L of a product and maybe we received 10 cans of another
This version of app doesn't support this notecard type Error
So this problem is happening for any notes created within the last week, as well as any note recently edited on Android. I can open them on my phone fine, but they don't open on the website version. They DO work on the desktop app version. It's just web
PDF's Give Unsupported Type Error Message
Many of the pdf files I add to Notebook work fine but in some cases when I try to open them on the Android App I get a message saying "Unsupported Type. Psst! You are using an older version of the app which does not support this note format. Please update
Cliq iOS can't see shared screen
Hello, I had this morning a video call with a colleague. She is using Cliq Desktop MacOS and wanted to share her screen with me. I'm on iPad. I noticed, while she shared her screen, I could only see her video, but not the shared screen... Does Cliq iOS is able to display shared screen, or is it somewhere else to be found ? Regards
I am not able to check in and checkout in zoho people even location access allowed
This issue i am facing in mackbook air m1, I allowed location in chrome browser and i also tried in safari but getting similar issue. Please have a look ASAP.
Is multiple invoice e-mailing possible?
I wonder if following is possible: When you are in the invoice view, assume you have five invoices to five different customers that are pending (you have just created them, but not sent them away yet by email.) To the left of every invoice in the overview
Multiple packages in one shipment
Guys we have been asking for this for years. we want to be able to ship multiple packages for one customer in the same shipment, so as to avoid entering shipping info repeatedly, and avoid customer getting multiple tracking emails. When does this arise?
I can't add a new customer in Zoho invoice? Anyone had this issue before?
Ive been using Zoho invoice for over 6 years. Today I wanted to add a new customer to send an invoice to but it doesn't save when I try to access it from the pulldown menu when you go to send a new invoice.
set up an opportunity progress bar in canva
Hi, set up an opportunity progress bar in canva I need help to set to reproduce the progress bar or equivalent of the opportunity steps in canva as in standard view (see capture ) Thank you in advance Amadou
Which Tool Is Best to Import MSG Files to HostGator?
The best tool to import MSG files to HostGator is the MacGater Mac MSG Converter. This professional utility is specifically designed to simplify the migration of Outlook MSG files into web-based email services, including HostGator. It supports direct
Recurring event sync via Microsoft 365 Meetings
I believe syncing Recurring through the Microsoft 365 Meetings integration is already in the works but I couldn't find a reference in the community to track the progress of this work.
What's New in Zoho Invoice | April - June 2025
Hello everyone! We're excited to share the latest feature updates and enhancements we've made to Zoho Invoice from April to June 2025. In this, you will learn more about the following features: New Integrations via Zoho Marketplace Add Images to Email
Client Script | Update - Client Script Support For Custom Buttons
Hello everyone! We are excited to announce one of the most requested features - Client Script support for Custom Buttons. This enhancement lets you run custom logic on button actions, giving you greater flexibility and control over your user interactions.
import customers
Is there a way to bulk import customers? I'm moving from Acuity and would rather not have to enter everyone manually.
What's New in Zoho POS - February 2026
Hello everyone, Welcome to Zoho POS’s monthly updates, where we share our latest feature updates, enhancements, events, and more. Let’s take a look at how February went. Purchase and sell items on different units We have introduced a unit conversion functionality
Batch Tracking custom function
Hi fellow zoho users, We have our ecommerce site setup to shopify. I have some products I want to add batch tracking too, my only issue is that it breaks our shopify workflow (create sales order, invoice, payment, package) because it requires us to manually
Kaizen #236 - Using Client Script Support in Quick Create to Automate Manual Data Entry
Welcome to another post in the Kaizen Series! In this post, we explore how Client Script support in the Quick Create form can be used to automate data entry. This solution addresses a common business scenario where Zylker Furniture sells sofas, wardrobes,
Serial Numbers.
I generated serial numbers for items and there is no way to generate more serial numbers that the number of items being "sold" or created. This is annoying as how does one know what serial number they left off with when they go to receive or sell this
Next Page