Slow moving stocks may lead to issues like expiry (in case of food items), obsolescence, and high holding costs.
That's why you need the Inventory Aging Report. It
helps you maintain a healthy business by tracking how quickly your inventory moves.
It identifies the slow and fast moving inventory, and also lets you plan your warehouse capacity.
This report is done over a SQL query based on Advanced Analytics for Zoho Finance data. You can modify the query to suit your data structure.
Follow the below steps to do this.
-
Query Table - Stock In Hand
-
Query Table - Inventory Age Tier
-
Pivot View - Inventory Aging Report
Query Table -
Stock In Hand
This tracks the stock in hand by joining different tables.
|
SELECT
/*sum of Quantity On Hand from below query*/
T1.*
SUM
(T1.
Quantity
) OVER(
PARTITION
BY T1.
"Product ID"
, T1.
"Warehouse ID"
)
AS 'Quantity On Hand',
/*calculate cumulative sum of items count in reverse order until it's equal or more that Quantity On Hand*/
sum(if
(
T1
.
"In/Out"
=
'In'
,
T1
.
Quantity
,
0
)) OVER(PARTITION
BY
T1 .
"Product ID"
, T1.
"Warehouse ID"
ORDER BY
T1.
"Transaction Date"
DESC
)
"Reverse Cumulative Total"
/*stock in hand from Stock In Flow*/
FROM (SELECT
'In'
"In/Out",
"Transaction Date",
"Warehouse ID",
"Product ID",
sum
(
"Quantity In") "Quantity",
"Price (BCY)" "Purchase Price"
FROM
"Stock In Flow Table"
WHERE
"Stock In Flow Table"
.
"EntityType"
!=
'transfer_order'
GROUP BY
1,
2,
3,
4,
6
UNION ALL
/*stock in hand from Stock Out Flow*/
SELECT
'Out',
"Transaction Date",
"Warehouse ID",
"Product ID",
-1
*
sum
(
"Quantity Out"
),
null
FROM
"Stock Out Flow Table"
WHERE
"Stock Out Flow Table"
.
"EntityType"
!=
'transfer_order'
GROUP BY
1,
2,
3,
4
UNION ALL
/*stock in hand from Transfer Order*/
SELECT
'
In',
"Date",
"Warehouse ID",
"Product ID",
sum(if(
"Transfer Order".
"Status"
=
'transferred'
,
"Transferred Quantity"
,
0
)),
if
(
"Transfer Order"
.
"Status"
=
'transferred'
,
"Cost Price"
,
null
)
FROM
"Transfer Order"
LEFT JOIN
"Transfer Order Items"
ON
"Transfer Order"
.
"Transfer Order ID"
=
"Transfer Order Items"
.
"Transfer Order ID"
WHERE
"Status" not in ( 'draft' )
GROUP BY
1,
2,
3,
4,
6
UNION ALL
/*stock in hand from Transfer Order Item*/
SELECT
'Out',
"Date",
"Warehouse ID",
"Product ID",
sum
(
"Transferred Quantity"),
"Cost Price"
FROM
"Transfer Order"
LEFT JOIN
"Transfer Order Items"
ON
"Transfer Order"
.
"Transfer Order ID"
=
"Transfer Order Items".
"Transfer Order ID"
WHERE "Status" not in ( 'draft' )
GROUP BY
1,
2,
3,
4,
6
) AS T1
|
Query Table - Inventory Age Tier
The below query tracks the age of each inventory and bucket them into the following groups.
-
0-5 days old
-
6-10 days old
-
11-15 days old
-
16-20 days old
-
older than 20 days
|
SELECT
"In/Out",
"Product ID",
"Quantity",
"Quantity On Hand",
"Reverse Cumulative Total",
"Transaction Date",
"Warehouse ID",
"Purchase Price",
/*identify the Transaction Date by comparing Reverse Cumulative Total and Quantity On Hand */
if(min(if(
"Reverse Cumulative Total" - "Quantity On Hand"
>=
0
,
"Reverse Cumulative Total" -"Quantity On Hand "
,
99999999999
)) OVER ( PARTITION
BY
"Product ID" , "Warehouse ID"
ORDER
BY
"Transaction Date"
DESC
) !=
99999999999
, (
"Quantity On Hand" -("Reverse Cumulative Total" -"Quantity" )), "Quantity" ) "Final Qty" ,
if(min(if(
"Reverse Cumulative Total" - "Quantity On Hand"
>=
0
,
"Reverse Cumulative Total" -"Quantity On Hand"
,
99999999999
)) OVER ( PARTITION
BY
"Product ID" , "Warehouse ID"
ORDER
BY
"Transaction Date"
DESC
) !=
99999999999
, (
"Quantity On Hand" -("Reverse Cumulative Total" -"Quantity" )) * "Purchase Price" , "Quantity" * "Purchase Price"
)
'Inventory valuation',
/*classify into different age tier*/
if
( Datediff (
current_date(),
"Transaction Date"
) >=
0
AND
Datediff (
current_date()
,
"Transaction Date"
) <=
5
,
'0-5 days', if(
Datediff (
current_date()
,
"Transaction Date"
) >=
6
AND
Datediff (
current_date()
,
"Transaction Date"
) <=
10
, '
6-10 days', if
( Datediff (
current_date()
,
"Transaction Date"
) >=
11
AND
Datediff (
current_date()
,
"Transaction Date"
) <=
15
, '
11- 15 days', if(
Datediff (
current_date()
,
"Transaction Date"
) >=
16
AND
Datediff (current_date(), "Transaction Date" ) <= 21 ,
'16-20 days', 'greater than 20 days')))) 'Age tier'
FROM
"Stock In Hand"
WHERE
"In/Out" = 'In'
AND
"Quantity On Hand" - ("Reverse Cumulative Total" -"Quantity" )
>
0
|
Join Data using Lookup Column
Join the Inventory Aging Query table with the Warehouse and Items tables using the following
lookup columns.
-
Warehouse ID
from Inventory Age Tier
query table -
Warehouse ID
from
Warehouse
table
-
Items ID
from Inventory Age Tier
query table -
Items ID
from
Items
table
Pivot View - Inventory Aging Report
Now you can create the inventory aging pivot over the Inventory Age Tier query table.
Follow the below steps to do so.
-
Create a new pivot over the Inventory Age Tier query table.
-
Drop the columns as follows.
-
Column
-
Age tier
from
Inventory Age Tier
query table with
Actual.
-
Row -
Warehouse Name
from
Warehouse
table and
Item Name
from
Items
table with
Actual.
-
Data
-
Purchased Quantity from Inventory Age Tier
query table with
Sum.
-
The
Click Here to Generate Pivot
button allows you to generate the report.
-
Hide the totals by clicking
Show/Hide
for all Totals.
-
Click Sort > Custom Sort for Age Tier column to arrange the age tier.
-
Now apply the required Theme.
-
Your final Inventory aging report is ready.

You can explore the solution by copying the workspace from the below link.
https://analytics.zoho.com/workspace/19601000018963001
Recent Topics
Email Opt Out Question
Has the problem where if a customer is emailed opt out prevents you sending standard emails? For me this feature is simply to stop any email marketing and should not block people from receiving emails via Zoho mobile, which makes no sense.
Can No Longer Access Zoho Email Accounts from iPhone or iPad Apple Mail Apps ,.
Keeps asking for password, Says ID or password incorrect. Tried creating a new app specific password. Same result. Is this possibly related to the server maintenance. Have verified all email settings, userid and password. This has worked for years until
Latest update caused issue in using marathi typingzoho
With latest update now marathi typing does Not work in zohonotebook. I preferred zoho over other because it was supporting marathi font without any distortion.. But after new update,keyborad simply does not work
Login verification emails never received.
I can't login to my account. You send a verification email, but it never arrives. This is a common problem, frequently caused by some relay point out there classifying the sender as a spammer. Is there anything I can do to bypass this? Maybe get a text
Global lists for Multi select
It would be great if I could select a global list to use for a multi select dropdown filed.
Yahoo is rejecting e-mails sent from a Zoho server
Diagnostic-Code: 4.7.0 [TSS04] Messages from 136.143.169.51 temporarily deferred due to unexpected volume or user complaints - 4.16.55.1; see https://postmaster.yahooinc.com/error-codes Remote-MTA: dns; mta5.am0.yahoodns.net
Yahoo blocks e-mail sent from Zoho servers
Getting this for a bunch of Yahoo addresses. Do you know if some of your servers got blacklisted? Diagnostic-Code: 4.7.0 [TSS04] Messages from 136.143.169.51 temporarily deferred due to unexpected volume or user complaints - 4.16.55.1; see https://postmaster.yahooinc.com/error-codes
Working with dates and Function Field
Hello friends! I'm trying to add days to a date, however the field function will always shows 00:00:00 after the resultant date. How can I display only the date, whithout the time? toDate(input.request_date.addDay(input.Prazo_acordado),"MM,d,yyyy") The code above will result something like "11-Feb-2020 00:00:00", but I want to display only "11-Feb-2020"
What's New in Zoho Analytics - November 2025
We're thrilled to announce a significant update focused on expanding your data connectivity, enhancing visualization capabilities, and delivering a more powerful, intuitive, and performant analytics experience. Here’s a look at what’s new. Explore What's
Unable to send message;Reason:550 5.4.6 Unusual sending activity detected. Please try after sometime.
Please help my account got blocked automatically, can you help me how to avoid it? Thanks so much
temporary system errorlouis
J'essaye d'envoyer des mails avec mes 2 adresses mail qe nous avons sur le compte arthur@lepunch.fr et louis@lepunch.fr mais j'ai toujours le message temporaire system error, je reçois les mails mais impossible d'en envoyer a qui que ce soit
How to Cancel/Delete Queued Mail Merge?
Hi. I just tried to do a mail merge before realizing there's a limit on number of sends. I accidentally sent one of my lists twice, and all of those emails are currently queued. Is there any way to cancel or delete a queued mail merge? Would love to be
SOLVED: Stopping Multiple Invitations when sync with Google Calendar
I wanted to share this solution as I wasn't able to find it when searching through the Zoho community and via web search. The issue: When requestor books a meeting through Zoho Bookings, the requestor receives a confirmation email from both Bookings and
Need to add a new admin for my domain
Hello Zoho Support, I am the owner of the domain localeistanbul.com. The current super admin account (admin@localeistanbul.com) is not accessible. I do not want to reset or delete the existing account because I need to keep all existing emails. Please
Possible Fraud Site.
Hello. I received a text with the sender's name as zoho, claiming that my account was at risk and that I should sign in at https://verify.zohomails.ru/signin to verify my account. I signed in on the web address above, and a few days later someone hacked
Zoho mail to Teaminbox
Hello, We're searching for new mail program. Now I'm testing a bit with zoho mail and team inbox. My findings in the research: Pop mail throught zoho mail is almost instant. Any pop or imap via external provider takes a couple minutes to 15 minutes before
Crear tarea CRM con recordatorio desde Zoho Flow
Hola, estoy intentando crear desde Zoho Flow una tarea en CRM. Lo he logrado hacer pero sin recordatorio, ya que no se como se debe escribir el string adecuado. He probado varias alternativas, pero ninguna me funcionó hasta ahora. - FREQ=NONE;ACTION=EMAIL;TRIGGER=DATE-TIME:${FechaVto}
Inquiry Regarding Automated Assignment of Zoho TeamInbox Messages using Zoho Flow and Deluge
Hello, Our company is currently using Zoho TeamInbox, and we are interested in automating the assignment of responsible parties using tools such as ZOHO Flow and Deluge. Is it possible to achieve this? Allow me to provide more details. Currently, when
Multiple clients in one project
Hi team, What is the possibility to have more than one client to be linked for one project in the Zoho Books? Our business model is to have a project, and this project have expenses/bills, as well, we issue invoices for this same project to several customers.
Upgrade Zoho Desk Agent-Side Answer Bot to GenAI
Hello Zoho Desk Team, We hope you're doing well. Following the recent announcements and rollout of the GenAI-based Answer Bot in Zoho SalesIQ (Nova '25), we’d like to formally request a similar upgrade for the Answer Bot used by agents inside Zoho Desk.
Marketers' Space: The importance of warming up your sender domain
Hello Marketers, Welcome back to yet another post! Today, we'll talk about why warming up your sender domain matters. Imagine you've recently started a business and want to share the news with your customers. You've designed a great email campaign using
An Exclusive Session for Zoho Desk Users: AI in Zoho Desk
A Zoho Community Learning Initiative Hello everyone! This is an announcement for Zoho Desk users and anyone exploring Zoho Desk. With every nook and corner buzzing, "AI's here, AI's there," it's the right time for us to take a closer look at how the AI
Search Just Got Smarter in Notebook
Hello there! Introducing Our New & Improved Search Experience! We heard your feedback! Many of you shared that our previous search had some challenges like • Inconsistent results across different clients • Limited accuracy in finding the right content
Zoho Desk app update - AI Integration for IM Chats
Hello everyone! We have now introduced AI integration for IM Chats within the Zoho Desk mobile app. To access the feature, please enable the 'Generative AI' settings on the desktop site(desk.zoho.com). Please refer to the help link attached below: Zoho
Open A.I assistant Connect with Zoho Desk instant Message Conversations
I would like to know how do I connect my instant messenger in Zoho desk with my Open A.I Gpt Assistant. this is very easy to setup using the Salesiq Zobot but when it comes to Zoho Desk i cannot figure how to make the connection. Ideal workflow Customers
Zoho Projects - Refine Access to Collaboration Menu
Hi Projects Team, I noticed that Calendar, Chat and Meeting menu options in the Collaboration section are visible to client users, even when they don't have access to the features. This could be confusing and frustrating, because if it's there you expect
Cannot upgrade subscription plan due to payment error message
Hi Zoho team, This is to request support on an issue I am facing during an upgrade I am trying to make to our company's yearly Zoho subscription. I am trying to add 3 more license to my plan and during the payment phase I get the below error as in the
Enhancing Zia's service with better contextual responses and article generation
Hello everyone, We are enhancing Zia's Generative AI service to make your support experience smarter. Here's how: Increased accuracy with Qwen One of the key challenges in AI is delivering responses that are both contextually accurate and empathetic while
Zoho Desk app update: AI powered features
Hello everyone! We’ve introduced various AI-powered services on the Zoho Desk app. Let's take a look at what's new. Generate Content: Generate Content uses AI to formulate responses based on the your query and provides a ready-to-use reply which can be
Bulk update Archived Ticket
Dear All We would like to update the "Category" values to the new filed. We found the archived Ticket seems to be don't support the bulk action. Do we have any way to update it. Finally, we would to generate a report for our ticket system. Regards I
Channel Configuration and Default Channels
There are some of the default fields that cannot be removed or changed. Examples are the social media ones, such as Facebook. It would be nice to be able to remove these fields as it would be confusing if someone selected this but it's not configure
Delay function execute
I've got a workflow which uses a webhook to send information to Flow, which in return updates a record in Creator. Problem is, by the time this has executed, the rest of my script has run and can't find the (yet to be) updated info in the record. Is there
Support www.camcard.com
Hi, Is it possible CRM Zoho have integrations with https://camcard.com/? Thanks Br, Andy
Option to Customize Career Site URL Without “/jobs/Careers”
Dear Zoho Recruit Team, I hope you are doing well. We would like to request an enhancement to the Career Site URL structure in Zoho Recruit. In the old version of the career site, our URL was simply: 👉 https://jobs.domain.com However, after moving to
Can't make a document editable to anyone
Hey everyone, I am using Zoho Workdrive and trying to share a document so that it is editable by anyone with the link. I am trying to convince people to shift from Google to Zoho, but they don't have accounts yet. When I try to change the share settings
Edit Default Print
What I want to do is create / edit the "Default Print" template without changing the layout I'm using. Currently I can create "Email Templates" but I don't use them for emailing and getting to that selection takes multiple clicks. If an email template could be set to be the Default Print template that would be helpful. I'd also like to print these in bulk but don't see that option (there is a mail merge macro but that goes straight to emailing, not to print or PDF).
Widget shows error
Hi, May I ask why below characters will be auto added into the widget link and how to solve this error? As my widget shows 404 error now. ?serviceOrigin=https%3A%2F%2Fcrm.zoho.com&frameorigin=https%3A%2F%2Fcrm.zoho.com
How to print envelope labels from Zoho CRM
Can anybody give me any clue how to print envelope/package labels directly from Contacts view? Regards, Alexandru Moderation Update: The Canvas Print View, which also facilitates the formatting of mailing labels, is now available! Learn more here: Zoho
Data Import: New interface, improved field mapping, and more
Hello everyone! We’ve redesigned the data import process to ensure accurate field alignment and verify that every column in the uploaded file maps correctly with Desk fields before import. Here's how: Streamlined Import Steps Importing data is now more
Address labels
Hi, we've been searching for a long time for a simple way for our employees to print address labels using a Dymo Label Writer 450. We came up with two alternatives that work, bur aren't really optimal. First one is WebMerge. Webmerge is a great application that does 100% what we need but it is way too expensive for our needs. We only need to print a couple of labels per month. The second one is the integrated print tool in Zoho CRM, (Print preview) You would think this is the obvious way to do this
Next Page