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.
Scenario:
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 |
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.
Recent Topics
Error 553
Não estou conseguindo enviar ou receber e-mail, sempre dando o erro 553, sendo que há mais de um mês o domínio está pago e liberado. Preciso de um suporte urgente
Automate insurance document workflows with Zoho Writer
Insurance companies have to deal with creating and managing complex documents and forms, such as policy applications, explanation of benefits documents, brochures, renewals, and claim forms. Handling all of this manually is hugely time and effort intensive,
Create PDFs with Text so that we can copy from a generated PDF
Currently, any information that a user enters into a field cannot be highlighted and copied from the PDF that Zoho Sign renders. For example, if someone were to provide a phone number in a Zoho Sign text field, you would not be able to copy the phone
How To Insert Data into Zoho Table using Api
Hi Community, I have created a table inside zoho tables. How do I insert data into table using API. Please tell the exact endpoint and payload , I just have to insert data into table columns. Also tell how to find tableid, viewid, baseid etc. which are
How do I delete a folder in Marketing Automation?
Folders are used across contact lists and segments, and email templates. How do I delete a folder once it's been created?
Portal Approval Process
Hi Zoho team and fellow users, I am seeking a method to establish a multi-step approval process between a Zoho user and a portal user (Custom Portal) to review and approve requests through the Custom Portal. For instance, within this setup, one of the
Narrative 8: Intelligent in-app support that's instantly available anytime and anywhere
Behind the scenes of a successful ticketing system - BTS Series Narrative 8: Intelligent in-app support that's instantly available anytime and anywhere The App Support Across Platforms (ASAP) add-on for Zoho Desk is an independent application that integrates
Navigation issue — unable to return to Customer page after opening Receipt from Transactions
Steps to reproduce: Open a Customer record. Go to Transactions tab and open a Receipt by clicking its receipt number. After viewing the receipt, clicking browser Back or closing the receipt does not reliably return me to the original Customer record (I
Thermal Printer Option Needed for Delivery Challan Templates
Currently in Zoho Books, the Delivery Challan template only supports A4 and A5 page sizes. However, in many businesses (especially retail and hardware), we use thermal printers (like 3-inch or 4-inch rolls) to print delivery challans. It would be very
Separate Default Payment Modes for Receipts vs. Payments
Right now, when I set a default Payment Mode via a customer invoice or Payments Received screen, that same mode shows up for vendor payments (Purchases → Payments Made). 🔹 Request: We need different default modes for: Customer receipts (e.g., default
Update/Change GSTIN in GST Settings of zohobooks
We are trying to update our GSTIN under the GST settings section of our Zohobooks account Initially, we had entered a dummy GSTIN (123456789123456) to generate a sample invoice before obtaining our official GST registration. After receiving our actual
Link Payment Mode and Paid Through Accounts
For most users, it's very difficult for them to understand that the Payment Mode is totally independent of the Paid Through account when paying bills. It seems (and is) redundant for them to have to select what is basically the same thing twice. The current
Lets enable business to choose the default payment mode
Lets enable business to choose the default payment mode so that we do not have choose payment mode again and again for each and every transsctions
Add Attachment Support to Zoho Flow Mailhook / Email Trigger Module
Dear Zoho Support Team, We hope you are well. We would like to kindly request a feature enhancement for the Mailhook module in Zoho Flow. Currently, the email trigger in Zoho Flow provides access to the message body, subject, from address, and to address,
South African Payment Gateways
Since the "Demise" of Wave many South African users have moved over to Zoho and yet for years users have been requesting Integration with a South African Payment Gateway to no avail. Payfast was the most commonly requested gateway as it supports recurring
Has anyone verified if Zoho is PCI compliant?
We are planning on using Zoho to process payments via Authorize.net. We have everything set up and are attempting to complete the PCI DSS SAQ-A requirement for our merchant account. This requires us to prove Zoho has completed the SAQ-D for Service Providers. We need a way to verify compliance, or a copy of an attestation of compliance signed by the appropriate officer at Zoho. I assume I'm not the first person to use Zoho to process payment, and therefore not the first to require this information
Bigin Plugin for Outlook
Could we get this added? The Gmail version already exists, and I would like to avoid having to make a switch.
Date does not fit the field
Hi There. I am having fun learning zoho sign API. Today I noticed the "Signed Date" field does not fit, or alternatively the font is to large for the auto field space. See screenshot below. The signed date field is created by putting {{Signdate}} on the
Tip of the Week #69 – Automate your Zoho TeamInbox tasks with n8n integration.
Don’t waste time repeating the same tasks—like sending follow-up emails or adding new contacts. Let automation save the day. With n8n, an open-source automation tool, you can connect your favorite apps and let them handle the busywork for you. You don’t
Multi Page/Step Forms in creator
Greetings i was wondering if it's possible to create multipage/step forms on creator similar to what we have on zoho forms. is that possbile? Thanks
Package Geometry
how can i add the dimensions and weight capacity of the available boxes to be default in the system everytime we use it ?
How to create a Master Kanban Board that syncs with Child Projects?
Hello, We're currently using Zoho Sprints for managing our interdepartmental teams, and we're looking to enhance our workflow using Kanban boards as part of a company-wide productivity improvement initiative. Our goal is to implement a project structure
Writer.. Broken?
Hello, Writer has been really good to me during the months I've used it, up until now. I usually launch the app by tapping the icon and I could immediately pick up where I left off. Now I'm greeted by a loading circle not reaching 100% and I only have the option to create a new account. By pressing that button it now switches to a login screen and I can access my account. However, it seems (only speculating ofc) to be stuck in cell-phone mode? everything looks scrambled. I can't access any of
How to access Recruit Variables in a Deluge function?
I have set up Recruit Variables in Zoho Recruit, and I would like to know how to retrieve these variables from within a Recruit custom function (Deluge). Could someone please explain the correct way to access them? I tried the following code, but it did
Upon De activate a user what name doe sthe contacts candidates go under?
When deactivating a user, does the user name remain the same, as the candidate owner? If not what/who, does it change to? Do I need to change the user name in contacts and candidates before I deactivate the user?
Weekly Tips: Customize alerts from your Priority Users
You might receive hundreds of emails daily, but messages from your manager, clients, or team leads often require immediate attention, as they may contain urgent requests or critical updates. How would you ensure you never miss important messages from
Maximum 100 records in Sheet View is limiting. How can I increase this?
Thanks in advance for any help with this. There was a similar post that showed answered but it did not help with increasing the number of records you see in a Sheet View. Editing in the Sheet View is fast and efficient but I have 3500 records and I need
Revenue Management: #3 Revenue Recognition Simplified
In continuation of the previous post on how to compute revenue recognition, let's explore a solution that helps businesses handle real-world complexities. While the Accounting Standards provide a clear framework for recognizing revenue, the real challenge
Tip #40- Strengthen Remote Support with IP-based Restrictions in Zoho Assist– ‘Insider Insights’
Protecting sensitive data and preventing unauthorized access is a top priority for any organization. With IP-based restrictions in Zoho Assist, you can ensure that only users from trusted networks can initiate remote support sessions. Say your IT team
Push Invoices to Xero Manually
Hi guys, I'm wondering if anyone has wanted to do this and has a workaround or knows of an app that may be able to help with this. I sell B2B and B2C. The customers can purchase on our website or through marketplace, all of which send sales to zoho. The
OpenAI error code: 1010 in a Zobot
Please see short linked screen recording. Insights welcome. Please and thank you! https://workdrive.zohoexternal.com/external/f3247ba9c872639157b707700c0300c433c7664aea924a034f4da3c3ad2e355f
Ability to Create Sub-Modules in Zoho CRM
We believe there needs to be a better, more native way to manage related records in Zoho CRM without creating clutter. Ideally, Zoho would support "sub-modules" that we can create and associate under a parent module. Our use case: We have a custom module
Installing EMAIL Setup in New Domain
Respected Support team, I'm facing an issue with cloudflare in Pakistan, I want to setup Zoho Mail Setup but I Don't know how to enable Zoho mail setup without cloudflare. My Website https://stumbleguymod.com/ is using CF, and I want a different Zoho
Signature change
I cannot see how to change signature or out of office details easily now in the new format.
Inventory API - Retrieve all uploaded product / item images
I know that I can get the primary image for each product / item or composite item, by using the /image endpoint. https://inventory.zoho.com/api/v1/compositeitems/<item-id>/image?authtoken=<TOKEN> This will return only one photo, even if the item has multiple images uploaded. Is there a way to retrieve all images stored for an item via the Zoho Inventory API?
Ebay Integration malfunction
My eBay integration in Inventory has always worked well. It suddenly malfunctioned. It is creating its own parts in Inventory that are unavailable instead of selling the parts I've always sold. Tech help was unable to resolve this. The latest sale attempt
Introducing Bin Locations In Zoho Inventory
Hello users, We are excited to let you know that your wait for the Bin Locations feature has now come to an end! Yes, you heard us right! We are here to introduce the much-awaited Bin Locations now in Zoho Inventory. But before we dive into the feature
how to get all the records in the custom View more than 200 records , Without using the page Concept
how to get all the records in the custom View more than 200 records , Without giveing page as default in the Loop Concept Pls help how We can Achive this void schedule.Lead_Attempt_To_contact_schedule_10_30() { pages = {1,2}; for each pg in pages { query_map
The way that Users can view the ticket
I have created users. What I would like to achieve is the following: All users under the same company account should be able to view each other’s tickets.
Zoho UAE SMS/WHATSAPP
Hello everyone, so I have a question as regards DC and their impact on automation, integration and app usage. For example I am working with a UAE clientniw but each time I tried to connect their WhatsApp and sms then automate their process I tend to receive
Next Page