Revenue Management: #6 Revenue Recognition in Professional Services Industry

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 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.


Info
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

 

 

Idea

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.
  
    • 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
      • Recent Topics

      • 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
      • What is the maximum file size of a video upload in Zoho chat?

        Can I upload a 20 mb video file and share it with my colleagues? 
      • Update a field in ALL all calls under a contact

        HI guys! I have written some deluge code to update a field in my calls after i have comepleted the call, i need this field to update in all my scheduled calls as well that are comeing up. I just cant seem to get it to work, i have put teh code below,
      • Verifying Zoho Mail Functionality After Switching DNS from Cloudflare to Hosting Provider

        I initially configured my domain's (https://roblaxmod.com/) email with Zoho Mail while using Cloudflare to manage my DNS records (MX, SPF, etc.). All services were working correctly. Recently, I have removed my site from Cloudflare and switched my domain's
      • Fat Download of Ulaa Browser

        I just observed that Ulaa Browser is offering an one-capsule big download. These days it is a custom to offer a small bootstrap downloader and based on user customization options an appropriate download completes. And this is particularly common with
      • Cancelled Transfer order problem

        Hello, We've canceled a transfer order, and we can't add the related items to a new Transfer Order. The system tells us that the bin doesn't have the required quantity, but when we check the item, it indicates that there are 2 units in the bin. It also
      • Billing Management: #8 Usage Billing in Logistics & Delivery Services

        The logistics and delivery industry thrives on movement and precision. Every delivery completed, every kilometre driven, and every ton transported is a measurable activity. However, billing often lags behind. Many logistics companies still rely on fixed-rate
      • Tags for New Tickets

        Hi there, When creating a new ticket, there is currently no way to choose a tag you would like to associate with the new ticket. Being able to associate a tag while creating a new ticket will be very beneficial as it will save time and flow well with
      • Zoho Desk: No Incoming email

        Is Zoho Desk services down? No incoming email reflect to desk tickets.
      • Zoho CRM - Widgets | Update #3 : Introducing SDK V1.5 along with new ZDK Methods and ZRC Support

        Hello everyone! Widgets in Zoho CRM just got a big upgrade! With the release of SDK v1.5, developers can now create more immersive widget experiences. This update elevates Widget development with new ZDK methods for easier interactivity and ZRC support
      • Unusual activity detected, account blocked

        I am unable to send emails and am getting the error "Outgoing blocked: Unusual activity detected. To unblock your account, please and submit a request. Learn more.". I am unsure as to why this is happening since all my activity is legitimate, mainly confirmation
      • Unable to Send Emails – Outgoing Mail Blocked (Error 554 5.1.8)

        Description: Hello Zoho Support Team, I am facing an issue with my Zoho Mail account ( admin@osamarahmani.tech ). Whenever I try to send an email, I get the following error: 554 5.1.8 Email Outgoing Blocked I would like to clarify that I have not done
      • Issue connecting Zoho Mail to Thunderbird (IMAP/SMTP authentication error)

        Dear Zoho Support, I am trying to configure my Zoho Mail account on Thunderbird, but I keep getting authentication errors. Account: info@baktradingtn.com Domain: baktradingtn.com Settings used: IMAP: imap.zoho.com, Port 993, SSL/TLS, Normal Password SMTP:
      • Next Page