Revenue Management: #5 Revenue Recognition in SaaS

Revenue Management: #5 Revenue Recognition in SaaS

If you're building or running a SaaS business, you've probably encountered this. You get paid upfront for a subscription and a one-time onboarding fee, but you end up with confusion about when to consider it revenue. Can I book all of it now? Should I spread it out? What if the customer upgrades or downgrades midway?

How do SaaS companies manage revenue recognition and stay compliant?   

Revenue Recognition Scenarios in SaaS 

In the world of SaaS, a business's billing of its customers has a direct impact on how and when it recognizes revenue. While the five-step model stays the same, the application varies significantly depending on the contract structure, billing frequency, and delivery pattern. Below are the common real-world scenarios that define these differences.


Annual Contract Paid Upfront

Most SaaS companies bill customers annually or quarterly in advance. However, accounting standards do not permit revenue to be recognized when cash is received. Instead, the revenue must be recognized over time, as the service is delivered.


For example, a $12,000 annual contract with $1000 onboarding. $1000 will be recognized immediately during billing, and $11,000 is spread across 12 months.

Monthly Billing

Customers pay monthly for access. There is typically no deferred revenue, and revenue is recognized in the same month the service is delivered.


Example: $500 per month subscription recognized monthly as it is earned.

Bundled Pricing

A typical SaaS contract might include platform access, onboarding, training and support as a part of the contract that gets billing as a bundle. According to ASC 606 and IFRS 15, these are separate performance obligations. The business must allocate revenue to each and recognize it based on how and when each is fulfilled.


Example: A $10,000 contract includes $2000 for setup, $6000 for software access, and $2000 for support. Revenue is recognized based on the timeline of each deliverable.

Amendments & Discounts

Customers often switch plans mid-cycle, receive promotional pricing, or get billed based on the actual usage. These changes introduce variable consideration and require contract modification, revenue reallocation, and recalculations for the remaining service term.


Example: A new allocation and recognition schedule must be set up if a customer moves from a $1000/month plan to a $1500/month plan mid-year.

Usage Based or Tiered Pricing

Some businesses charge based on consumption. For instance, API usage, user access, data storage, etc., they charge the customer again as and when the upper cap is met. This means revenue cannot be recognized until the service is used. Businesses must track usage data and apply the prorated or usage-based revenue rule to stay compliant.


Example: $0.10 per API call. If a customer makes 10,000 calls in March, $1000 is recognized in that month.

These scenarios illustrate the diverse billing models in SaaS and their direct impact on revenue recognition timing. Businesses that manage multiple pricing plans, onboarding services, or usage billing must ensure their recognition strategy aligns with the service delivery. This is where automation becomes critical.

InfoScenario:
You sign an annual contract worth $1,20,000 with a client. The client pays the full amount upfront. The contract includes $20,000 onboarding and $1,00,000 for uninterrupted access to the software for 12 months.  

Zoho Billing for SaaS Revenue Recognition

Zoho Billing simplifies SaaS revenue recognition by allowing the finance team to define a recognition rule based on the product or service offered.

For this kind of business, the Revenue recognition rule should be set in the following way:

There are two deliverables here: one is Onboarding, and the other is software access.

 

For onboarding

For Software Access

Recognition Frequency

Once

Monthly

Recognition Method

One-Time (Daily)

Evenly Distributed

Recognition Time

Period Start

Period End

 

Although the full payment is collected in advance, you cannot recognize the entire $1,20,000 as revenue immediately. Only the onboarding revenue of $20,000 is recognized in the first month. The remaining $1,00,000 must be recognized evenly over 12 months at $8,333 monthly.


Reports in Zoho Billing

If you look at the reports in Zoho Billing after three months of service rendering, you will see,


i) Recognized Revenue Report

Onboarding is complete three months into the contract, and three out of 12 months of application access have been delivered.

Component

Recognized Revenue

Description

Onboarding

$20,000

Fully recognized in Month 1

Software Access

$25,000

$8333/month for 3 months out of ($1,00,000)

Total Recognized

$45,000

Recognized at the end of 3 months

 


ii) Deferred Revenue Report

After three months, the company will have nine months of software access remaining.

Component

Deferred Amount

Software Access

$75,000 (9 months x $8333)

Total Deferred

$75000

 


iii) Revenue Waterfall Report

Months

Onboarding

Software Access

Total

Month 1

$20,000

$8,333

$28,333

Month 2

-----

$8,333

$8,333

Month 3

-----

$8,333

$8,333

Month 4 (upcoming)

-----

$8,333

$8,333

Month 5 (upcoming)

-----

$8,333

$8,333

Month 6 (upcoming)

-----

$8,333

$8,333

Month 7 (upcoming)

-----

$8,333

$8,333

Month 8 (upcoming)

-----

$8,333

$8,333

Month 9 (upcoming)

-----

$8,333

$8,333

Month 10 (upcoming)

-----

$8,333

$8,333

Month 11 (upcoming)

-----

$8,333

$8,333

Month 12 (upcoming)

-----

$8,333

$8,333

 

Idea

Best Practices for SaaS Revenue Recognition 

  • Disaggregate Contract Elements: Break down your subscriptions, onboarding, support, and other one-off deliverables as separate individual obligations.
  • Use Automated Rules: Configure a Recognition Rule based on the billing method and avoid tracking them manually.
  • Handle Modifications: Plan changes and upgrades should trigger reallocation of revenue.
  • Monitor Revenue Waterfall: Visual schedules ensure predictable reporting and forecasting.

 

    • 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

    • Team Gamification

      Would love to motivate, engage and encourage our team with our social media posts. Would like to include Gamification features of Social Media in Zoho Social or Marketing Automation. And also bring in Social Advocacy tools/tracking/management to these,
    • Sync Data from MA to CRM

      Currently, it's a one-way sync of data from the CRM to MA. I believe we should have the ability to select fields to sync from MA to the CRM. The lead score is a perfect example of this. In an ideal world we would be able to impact the lead score of a
    • Update CRM record action

      Currently, MA only offers a "Push Data" action to push data to a CRM module. This action is built to cover the need to both create a new record and update an existing record. Because it has been implemented this way all required fields on the CRM module
    • Pro Lite Upgrade - Quick Access Tray

      Hello, I was going to upgrade to Pro Lite but the Quick Access Tray feature isn't available for Windows. Of the four features not available for Windows, the QAT is what I'm most interested in. Are there plans to add this feature for Windows anytime soon?
    • Boost your CRM communication with new font types, sizes, and default reply-to options while composing emails

      Hello Everyone, We’re excited to introduce a series of impactful enhancements to the email composer settings in Zoho CRM. These updates enable you to personalize and optimize your customer interactions with greater efficiency. So what's new? Add custom
    • 3 year sick leave cycle

      How do you set up a sick leave cycle for South Africa? In SA the sick works like this for the first 6 months you get 0.83 paid sick days a month, then after 6 months you sick leave balance is reset to 30 days that can be used over a 36 month cycle.  This
    • WorkDrive and CRM not in sync

      1/ There is a CRM file upload field with WorkDrive file set as the source: 2/ Then the file is renamed in WorkDrive (outside CRM): 3/ The File in CRM is not synced after the change in WorkDrive; the file name (reference) in CRM record is not updated (here
    • Introducing Connected Records to bring business context to every aspect of your work in Zoho CRM for Everyone

      Hello Everyone, We are excited to unveil phase one of a powerful enhancement to CRM for Everyone - Connected Records, available only in CRM's Nextgen UI. With CRM for Everyone, businesses can onboard all customer-facing teams onto the CRM platform to
    • Is Zoho Communityspaces now part of Zoho One?

      Is Zoho Communityspaces now part of Zoho One?
    • How to update "Lead Status" to more than 100 records

      Hello Zoho CRM, How do I update "Lead Status" to more than 100 records at once? To give you a background, these leads were uploaded or Imported at once but the lead status record was incorrectly chosen. So since there was a way to quickly add records in the system no matter how many they are, we are also wondering if there is a quicker way to update these records to the correct "Lead Status". I hope our concern makes sense and that there will be a fix for it. All the best, Jonathan
    • Bigin’s 2025 Evolution: Highlights from 2025 and What’s Ahead in 2026

      Dear Biginners, Wishing you a very happy New Year! As we stand at the cusp of endless possibilities in 2026, we would like to take a moment to reflect on what we achieved together in 2025. Your continued support, thoughtful feedback, and kind words of
    • Send Supervisor Rule Emails Within Ticket Context in Zoho Desk

      Dear Zoho Desk Team, I hope this message finds you well. Currently, emails sent via Supervisor Rules in Zoho Desk are sent outside of the ticket context. As a result, if a client replies to such emails, their response creates a new ticket instead of appending
    • Zoho Desk - Change Time Zone for all users and set default for new user

      Hi,   Is there a way to set a default time zone so that when user creates an account via the Zoho Desk invitation, they don't need to select the time zone via the hundreds of choice?   And, for already created users, can we edit the incorrect time zone selected by the user at the account creation ?   Thanks ! Fred
    • Introducing WhatsApp integration in Bigin

      Greetings! In today's business landscape, messaging apps play a significant role in customer operations. Customers can engage with businesses, seek support, ask questions, receive personalized recommendations, read reviews, and even make purchases—all
    • Allow Manual Popup Canvas Size Control

      Hello Zoho PageSense Team, We hope you're doing well. We would like to request an enhancement to the PageSense popup editor regarding popup sizing. Current Limitation: Currently, the size (width and height) of a popup is strictly controlled by the selected
    • Why does Zoho’s diff viewer highlight parts of unchanged lines?

      Hi everyone, I’ve noticed something odd in the Zoho editor’s diff view. When I delete a single line, the diff doesn’t just mark that line as removed. Instead, it highlights parts of the next line as if they changed, even though they are identical. Example:
    • CRM x WorkDrive: File storage for new CRM signups is now powered by WorkDrive

      Availability Editions: All DCs: All Release plan: Released for new signups in all DCs. It will be enabled for existing users in a phased manner in the upcoming months. Help documentation: Documents in Zoho CRM Manage folders in Documents tab Manage files
    • Passing the CRM

      Hi, I am hoping someone can help. I have a zoho form that has a CRM lookup field. I was hoping to send this to my publicly to clients via a text message and the form then attaches the signed form back to the custom module. This work absolutely fine when
    • Automating Employee Birthday Notifications in Zoho Cliq

      Have you ever missed a birthday and felt like the office Grinch? Fear not, the Cliq Developer Platform has got your back! With Zoho Cliq's Schedulers, you can be the office party-cipant who never forgets a single cake, balloon, or awkward rendition of
    • Drop Down Value

      Hi, May I know why Zoho Flow treat this drop down as number and not as string. If so, how can I fetch the right value for filtering. This field is from Creator, in Creator upon checking by default it is a string since it's not a lookup field.
    • Zoho Survey reminder settings are extremely confusing

      Hi, I just want to set 3 reminders, one week apart from the first email out. Your form is too confusing and I don't understand. Can you simplify and be more specific regarding the language used on the form ?
    • Add deluge function to shorten URLs

      Zoho Social contains a nice feature to shorten URLs using zurl.co. It would be really helpful to have similar functionality in a Deluge call please, either as an inbuilt function or a standard integration. My Creator app sends an email with a personalised
    • form data load issue when saving as duplicate record is made

      Hello. I have a form with a lookup when a value is selected the data from the corresponding record is filled into all of the fields in the form. But the form is loaded in such a state that if any value is changed it will take all of the values pre loaded
    • Recurring Tasks and Reminders in Projects

      Recurring tasks are tasks that are created once, and then recreated automatically after a designated time period. For example, the invoice for your billable tasks is due every week. You can set that task to recreate itself every week. Also, the future
    • Unable to remove the “Automatically Assigned” territory from existing records

      Hello Zoho Community Team, We are currently using Territory Management in Zoho CRM and have encountered an issue with automatically assigned territories on Account records. Once any account is created the territory is assigned automatically, the Automatically
    • Track online, in-office, and client location meetings separately with the new meeting venue option

      Hello everyone! We’re excited to announce meeting enhancements in Zoho CRM that bring more clarity and structure to how meetings are categorized. You can now specify the meeting venue to clearly indicate whether a meeting is being held online, at the
    • Google Fonts Integration in Pagesense Popup Editor

      Hello Zoho Pagesense Team, We hope you're doing well. We’d like to submit a feature request to enhance Zoho Pagesense’s popup editor with Google Fonts support. Current Limitation: Currently, Pagesense offers a limited set of default fonts. Google Fonts
    • Improved Contact Sync flow in Google Integration with Zoho CRM

      Hello Everyone, Your contact sync in Google integration just got revamped! We have redesigned the sync process to give users more control over what data flows into Google and ensure that this data flows effortlessly between Zoho CRM and Google. With this
    • Improved Functionality PO Bill SO Invoice

      Hello, I need to enter over 100 items, it's frustrating to scroll a few item rows and wait for more to load, then scroll again. It would be nice to have buttons that scroll to the top or bottom with one click. Furthermore, these items I'm adding are VAT
    • Wishes for 2026

      Hello, and a happy new year 2026! Let's hope it's better for everyone. I'd like to share some thoughts on Zoho One and what could be useful in the short, medium, and long term. Some things are already there, but not applied to Zoho One. Others seem like
    • How to Integrate Zoho Books with Xero (No Native Connection Available)

      Hi everyone, I’m currently facing an issue with integrating Zoho Books invoices with Xero, as I’ve noticed Zoho does not provide a native integration with Xero at this time. I would like to ask: What are the common or recommended solutions for syncing
    • How to install Widget in inventory module

      Hi, I am trying to install a app into Sales Order Module related list, however there is no button allow me to do that. May I ask how to install widget to inventory module related list?
    • error while listing mails

      I can't access email in any of my folders: Oops, an error occurred - retry produces the second error response: error while listing mails (cannot parse null string). I've signed in and out of Zoho, restarted my iMac.
    • Unlocking New Levels: Zoho Payroll's Journey in 2025

      Every year brings its own set of challenges and opportunities to rethink how payroll works across regulations and teams. In 2025, Zoho Payroll continued to evolve with one clear focus: giving businesses more flexibility, clarity, and control as they grow.
    • Sync desktop folders instantly with WorkDrive TrueSync (Beta)

      Keeping your important files backed up and accessible has never been easier! With WorkDrive desktop app (TrueSync), you can now automatically sync specific desktop folders to WorkDrive Web, ensuring seamless, real-time updates across devices. Important:
    • MCP no longer works with Claude

      Anyone else notice Zoho MCP no longer works with Claude? I'm unable to turn this on in the claude chat. When I try to toggle it on, it just does nothing at all. I've tried in incognito, new browsers, etc. - nothing seems to work.
    • Ability to Edit YouTube Video Title, Description & Thumbnail After Publishing

      Hi Zoho Social Team, How are you? We would like to request an enhancement to Zoho Social that enables users to edit YouTube video details after the video has already been published. Your team confirmed that while Zoho Social currently allows editing the
    • Free Webinar : Unlock AI driven business insights with Zoho Inventory + Zoho Analytics

      Are you tired of switching between apps and exporting data to build customized reports? Say hello to smarter & streamlined insights! Join us for this exclusive webinar where we explore the power of the Zoho Inventory–Zoho Analytics integration. Learn
    • Critical Issue: Tickets Opened for Zoho Support via the Zoho Help Portal Were Not Processed

      Hi everyone, We want to bring to your attention a serious issue we’ve experienced with the Zoho support Help Portal. For more than a week, tickets submitted directly via the Help Portal were not being handled at all. At the same time no alert was posted
    • Hide/Show Subform Fields On User Input

      Hello, Are there any future updates in Hide/Show Subform Fields "On User Input"?
    • Next Page