Revenue Management: #1 What does it mean to "recognize" revenue?

Revenue Management: #1 What does it mean to "recognize" revenue?

Earning revenue isn't just about collecting cash from your customers. It's about recording the income correctly and consistently. Revenue recognition is the process of deciding when and how to record revenue in financial statements so that they reflect the true value after the goods or services are delivered.


Today's business models are more dynamic than ever. Subscriptions, long-term projects, bundled products, and usage-based pricing make it challenging to determine when a sale is truly earned.

We will be going through a series of posts on Revenue Recognition and how it works with different industries, starting with,

     What is revenue recognition?

     What are the principles behind the standards?

What is Revenue Recognition?

Revenue Recognition is an accounting principle that defines when and how businesses can record revenue in their books. It ensures revenue is reported only when the company has delivered the promised goods or service, not simply when a payment is received.

For instance, if a customer pays upfront for 12 months of service, the business cannot recognize all of that money immediately. It must recognize it gradually over the period the service is delivered.

To address these challenges, Accounting standards like IFRS 15 and ASC 606 were introduced.


What Do IFRS 15 & ASC 606 Say?

Both IFRS 15 & ASC 606 are closely aligned. They denote that companies must recognize revenue when they satisfy their performance obligation, that is, when they deliver the promised goods or services fully to the customer.

The core principle is:


Quote
"Recognize revenue to depict the transfer of promised goods or services to the customer in an amount that reflects the consideration to which the entity expects to be entitled."

To make this consistent across industries, these standards use a five-step model.


This model helps businesses recognize revenue accurately by following a structured process. Each step ensures that income is recorded only when a company truly earns it by delivering the promise.

Steps

Description

Example

Step 1: Identify the Contract with a Customer

Confirm there is a legal, enforceable agreement with clear payment terms and obligations.

A software company signs a 12-month service contract with a client with proper terms and a clear payment schedule.

Step 2: Identify the Performance Obligations

Break the contract into separate performance obligations that provide unique values.

Contract includes access to software, onboarding support, and monthly training. These are distinct services and are treated separately.

Step 3: Determine the Transaction Price

Calculate the total expected payment, including any discount, bonus, or other variables.

The total contract worth is $12,000, but the customer gets a discount of $1000 for an annual payment upfront. The transaction price becomes $11,000 in this case.

Step 4: Allocate the Transaction Price to the Obligation

Distribute the transaction pricing across the performance obligation based on their standalone selling prices.

If software is usually sold for $9,000, support for $1500 and training for $1500, the $11,000 will be proportionally allocated to each of these.

Step 5: Recognize Revenue When (or As) Obligations Are Satisfied

Revenue is recorded either over time or at a point when the customer gains complete control of the product or service.

In case of software licensing and implementation, the revenue is recognized monthly over 12 months, but the onboarding is recognized as and when it's delivered.

 

This single contract shows how IFRS 15/ASC 606 helps businesses handle complexity like discounts, variable consideration, multiple deliverables and other aspects in recognizing revenue.

Ultimately, these standards require companies to:

Notes

    • Recognize revenue only when the performance obligation is met.

    • While selling services and goods together, consider them as individual deliverables.

    • Allocate the total contract value fairly across all deliverables.

    • Adjust discounts, bonuses, and other variable pricing.

    • Provide an audit-ready document for how and when revenue is recognized.

The bottom line of revenue recognition is straightforward. But while computing, it doesn't look the same when you are dealing with different billing models and while handling hundreds of contracts/transactions.

In the next post, we'll look at where computing revenue recognition gets tricky with some real-time business scenarios. 
    • 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

    • Introducing parent-child ticketing in Zoho Desk [Early access]

      Hello Zoho Desk users! We have introduced the parent-child ticketing system to help customer service teams ensure efficient resolution of issues involving multiple, related tickets. You can now combine repetitive and interconnected tickets into parent-child
    • Separate Items & Services

      Hi, please separate items and services into different categories. Thank you
    • Log a call: Call Duration for Inbound is mandatory but inbound is optional

      Hi Team Can you advise on why the call duration for the inbound call type is a mandatory field? We have a use case where we are manually logging a call but do not use the call duration field. The field does not have the option to make it non mandatory
    • Zoho Sign 2025–2026: What's new and what's next

      Hello! Every year at Zoho Sign, we work hard to make document signing and agreement execution easy for all users. This year we sat down with our head of product, Mr. Subramanian Thayumanasamy, to discuss what we delivered in 2025 and our goals for 2026.
    • New Account, Setting up Domain Question

      Hello, I recently set up a new account with a custom domain. But after paying and setting up my account, it says OpenSRS actually owns the domain, and I have to sign up with them to host my site. But OpenSRS wants to charge me $95, which is ridiculous.
    • 【開催報告】東京 Zoho ユーザー交流会 NEXUS vol.1 ~ データドリブン経営・少人数組織のCRM活用・AIエージェントの最前線 ~

      ユーザーの皆さん、こんにちは。 コミュニティグループの中野です。 2026年3月27日(金)、東京・新橋にて「東京 Zoho ユーザー交流会 NEXUS vol.1」が開催されました。 今回は「マーケティング領域のZoho 活用法 × AI」をテーマに、ユーザーさん2名による事例セッション、Zoho 社員によるAIセッションなどを実施しました。 ご参加くださったユーザーの皆さま、ありがとうございました! この投稿では、当日のセッションの様子や使用した資料を紹介しています。残念ながら当日お越しいただけなかった方も、ぜひチェックしてみてください。
    • Monthly Webinar : Getting Started with Zoho LandingPage

      Our monthly Getting Started with Zoho LandingPage webinar is back! If you're building your first page and want a little guidance, this is where to start. Learn how landing pages fit into your strategy, generate leads, and improve conversions. Here’s what
    • Mass emails - Allow preview of which emails will receive the email based on the criteria

      Feature request. Please allow us to view and confirm the exact recipients of the mass emails based on the criteria we've chosen before sending. It can be quite sensitive if you send the mass email to some wrong accounts accidently, so it would be great
    • Limitation in Dynamic Constant Sum Based on Previous Question Selections in Zoho Survey

      Zoho Survey supports the Constant Sum question type, allowing respondents to distribute a fixed total (such as 100) across a set of options. However, it does not support dynamically populating these options based on selections made in a previous question.
    • SAP Business One(B1) integration is now live in Zoho Flow

      We’re excited to share that SAP Business One (B1) is now available in Zoho Flow! This means you can now build workflows that connect SAP B1 with other apps and automate routine processes without relying on custom code. Note: SAP Business One integration
    • sync two zoho crm

      Hello everyone. Is it possible to sync 2 zoho crm? what would be the easiest way? I am thinking of Flow. I have a Custom Module that I would like to share with my client. We both use zoho crm. Regards.
    • Import MSG to Yandex Mail Account | Fast & Reliable Solution

      If you are facing problem to import MSG files to Yandex Mail account can be challenging if done manually, especially when handling multiple files. A reliable solution is using the MacGater Mac MSG Converter, which simplifies the entire process with accuracy
    • Copy all reports in a folder

      I currently have a database that I need to create multiple charts filtered by market. All of the charts are identical, I just change to of the filters and then I have the next market's set of charts. The only way I've been able to copy charts (reports)
    • OpenURL working Intermittently

      Never had this issue before, everything was working fine up to a few days ago. We have a buttons on reports to open forms with pre-filled fields. Now, there are instances where it will throw and error and gives no feedback. What is really strange is not
    • Zoho Recruit mailserver get blocked by Microsoft!

      Hi, We have experienced this issue twice now, where Zoho Recruit outbound IP addresses are being blocked by Microsoft. We are confident that Microsoft is the blocking party, as all outbound emails to candidates with @hotmail.com, @live.com, and @outlook.com
    • Calculate Hours Minutes Sec in Zoho Creator Using Deluge

      check_In = "8-Aug-2023 10:00:00".toDateTime().toLong(); checkout = "8-Aug-2023 18:00:00".toDateTime().toLong(); //difference = start.timeBetween(end); check_In = "8-Aug-2023 17:56:50".toDateTime().toLong(); checkout = "8-Aug-2023 18:00:00".toDateTime().toLong();
    • Build Smarter Apps with AI in Zoho Creator

      Build Smarter Apps with AI in Zoho Creator This is truly the era of AI, and businesses that adapt now will lead tomorrow. Zoho is already moving ahead in this direction, continuously evolving its platform with powerful AI capabilities. With Zoho Creator,
    • Zia Dashboard Insights : turn your dashboard into decisions

      When you look at a chart or KPI in a dashboard, you would possibly see something like: Revenue: $2.4M ↓ 18% vs last month. It can be a positive growth or a negative one, or a dip in revenue, a spike in deals, a slowdown in renewals—all you usually see
    • Tickets without registration

      Hi, would it be possible to give customers the opportunity to be able to read their tickets without registration?
    • Zoho Desk Answer Bot vs. Zia Agents – Knowledge Base & Ticket Access

      Hi everyone, I’m currently evaluating AI options in Zoho Desk and ran into some limitations with the Answer Bot: Answer Bot limitations Only uses Knowledge Base articles No access to tickets Limited control over sources: Either one Help Center or all
    • Como estruturar automações eficientes no Zoho Creator

      Como estruturar automações eficientes no Zoho Creator Introdução No contexto de aplicações empresariais, automação não é apenas uma conveniência, é um fator crítico para ganho de produtividade, redução de erros e escalabilidade operacional. O Zoho Creator
    • Changing the status of a work-order

      Is there a way to change the status of a work-order?
    • Online Payment Fees

      We don't take many online credit card payments so the merchant service provider (PayPal) charges us the 2.9% fee for processing the amount. I would like the ability for the fee to be automatically added to the total amount for "ease of payment". We'd
    • What is a realistic turnaround time for account review for ZeptoMail?

      On signing up it said 2-3 business days. I am on business-day 6 and have had zero contact of any kind. No follow-up questions, no approval or decline. Attempts to "leave a message" or use the "Contact Us" form have just vanished without a trace. It still
    • Zia Agents in Zoho CRM: a better way to set up digital employees

      Hello everyone, If you've been using Zia Agents in Zoho CRM, so far using Connections was the only deployment method you're familiar with. You create an agent in Zia Agents (define its objective, write instructions, use tools, add knowledge base) and
    • Bank Feeds

      Since Friday my bank feeds wont work. I have refreshed feeds, deactivate and reactivate and nothing is working
    • Logged out

      Hi, just been working on a sheet when a pop up box appeared telling me I'm going to be logged out in x number of seconds and if I reload I may lose any edits, or words to that effect. It did indeed log me out and I did indeed lose my last edits. Any idea
    • Zoho API

      I have little experience with API. I'm trying to get a Custom API working with Zoho creator. I have created a Custom API and created an Endpoint URL, but i get a 9400 error code "The provided HTTP method is not valid for this custom API". Based off the
    • #157127950

      Where did my initial question go?
    • Zoho writer unable to merge documents to PDF with basic fonts in Hebrew or fonts from my computer

      I created several forms that will be merged into PDF files through Zoho Writer and I am unable to receive the PDF in the basic fonts of the Hebrew language or in the fonts I have on my computer. The writer exports to PDF an exchange font that looks very
    • How I Implemented Subscription-Based Access Control and Expiry Handling in Zoho Creator

      I recently worked on a use case where users come into the application to request a service, but they should only be able to continue the process after completing a subscription. The challenge was not just controlling access, but also making sure that
    • Zoho Forms API

      Is there any way to get all form entry list using API? Looking forward to hear from you
    • Zoho Projects : Task should auto-update to 'In Progress' if timer started

      Namaskaram. Right now, if a Task's timer is started, the Task stays in 'Not Started' status. One has to manually update it to 'In Progress'. From a #uxdesign standpoint, it is an unnecessarily two step process to start working on a task. It would be better that, if I start the timer on a task, it should automatically change to 'In Progress' status. Crafted with ❤️ Zoho Gurus | Zoho One Practice Team @ CubeYogi Zoho Authorised Partner | 7+ Yrs | 200+ Projects | 100+ Customers
    • Laatste facturen en betalingen niet zichtbaar in mijn account

      Wij gebruiken ZOHO invoice al jaren, maar sinds afgelopen week is mijn laatst verzonden factuur niet zichtbaar in mijn account, en tevens de laatst betaalde facturen zie ik niet. Hoe kan dit? Ik heb de pagina al diverse keren gerefreshed.
    • Undelivered Mail uncategorized-bounce errors when sending invoices

      Recently we have been getting Undelivered Mail bounce notification when sending invoices. Reason: uncategorized-bounce Some go through no problem some bounce back. We recently sent 10 invoices, 6 received bounce notifications. After reaching out to the
    • Can I import MSG files into Microsoft 365 without Outlook?

      Yes, absolutely. You do not need Outlook installed to import MSG files into Microsoft 365. Aryson MSG file Converter is a dedicated tool that eliminates the Outlook dependency entirely, making the migration process simple and efficient for all users.
    • Feature Request - A Way To Search Item Groups

      Hi Inventory Team, I can't find any way to filter or search by fields of Item Groups. It would be great to see that functionality added. I have a use case where a single product might come from 5 or more suppliers and each supplier's item is an Item in
    • Zoho Books/Inventory - Update Marketplace Sales Order via API

      Hi everyone, Does anyone know if there is a way to update Sales Orders created from a marketplace intigration (Shopify in this case) via API? I'm trying to cover a scenario where an order is changed on the Shopify end and the changes must be reflected
    • Ticket id issues

      When I reply a ticket from desktop, it doesn't have ticket id in the subject and it's great. When I reply a ticket from Zoho desk mobile, Zoho adds ticket id in the subject and I don't want that. Please help in this matter.
    • Advanced email configuration - agent's name vs. department name

      We currently have all four Advanced Configuration options turned ON at the Global-level (Channels > Email > Advanced Configuration) - including the "Show Agent name in Ticket replies and outgoing emails" option. We also had that same option turned ON
    • Next Page