Jira License Audit: How to Find Jira Inactive Users Costing You Money
A 10-minute audit that could save you thousands on your Atlassian renewal
Last week, a Jira admin discovered 47 inactive users in their instance. Annual cost? $5,000+ for licenses nobody uses.
Your Atlassian renewal is coming. Before that call with your rep, here’s how to audit your licenses in under 10 minutes — and potentially save thousands.
The Hidden Cost of Inactive Users
According to the Zylo 2025 SaaS Management Index, the average organization uses only 47% of their SaaS licenses. Enterprise companies waste an average of $21 million per year on unused software.
For Jira specifically:
- Only ~20% of users are concurrently active at any given time
- Most teams find 15-30% of licenses assigned to inactive users
- Potential savings from a proper audit: 10-40% of your license costs
With Atlassian’s October 2025 pricing increase (+5-20% for Cloud) and February 2025 Data Center increase (+15-25%), every unused license hurts more than ever.
What Counts as “Inactive”?
Before deactivating anyone, you need clear criteria. Here’s the tiered approach recommended by the Atlassian Community:
| Status | Days Since Last Login | Recommended Action |
|---|---|---|
| Green | < 60 days | Active user, no action |
| Yellow | 60-90 days | Send email asking if they still need access |
| Orange | 90-180 days | Email + schedule deactivation |
| Red | > 180 days | Deactivate with notification |
Important Distinction
- Deactivated user = account disabled, doesn’t count toward license
- Inactive user = account active but user never logs in, still counts toward license
The standard Atlassian threshold is 90 days without login.
4 Checks Before Your Renewal Call
Run these checks to identify users costing you money:
1 Last Login > 90 Days
The most obvious indicator. If someone hasn’t logged in for 3+ months, they probably don’t need Jira.
2 Zero Issues Created or Updated (6 months)
Some users log in passively (dashboards, notifications) but never actually work in Jira.
3 No Comments or Work Logs
A user who logs in but never comments, logs work, or transitions issues is likely not actively using Jira.
4 No Dashboard or Filter Access
If they haven’t viewed any dashboards or saved filters, they’re probably not using Jira for reporting either.
How to Find Inactive Users: Data Center
For Jira Data Center, you’ll need to query the database directly. Here’s the SQL query for PostgreSQL:
SELECT
d.directory_name AS "Directory",
u.user_name AS "Username",
u.display_name AS "Display Name",
u.email_address AS "Email",
to_timestamp(CAST(ca.attribute_value AS BIGINT)/1000) AS "Last Login"
FROM cwd_user u
JOIN cwd_directory d ON u.directory_id = d.id
LEFT JOIN cwd_user_attributes ca
ON u.id = ca.user_id
AND ca.attribute_name = 'login.lastLoginMillis'
WHERE u.active = 1
AND d.active = 1
AND EXISTS (
SELECT 1
FROM cwd_membership m
JOIN licenserolesgroup gp ON m.lower_parent_name = LOWER(gp.GROUP_ID)
WHERE m.lower_child_name = u.lower_user_name
)
AND (
ca.attribute_value IS NULL
OR to_timestamp(CAST(ca.attribute_value AS BIGINT)/1000) <= current_date - INTERVAL '90 days'
)
ORDER BY "Last Login" DESC NULLS LAST;
For MySQL, use this version:
SELECT
d.directory_name AS "Directory",
u.user_name AS "Username",
u.display_name AS "Display Name",
u.email_address AS "Email",
FROM_UNIXTIME(CAST(ca.attribute_value AS UNSIGNED)/1000) AS "Last Login"
FROM cwd_user u
JOIN cwd_directory d ON u.directory_id = d.id
LEFT JOIN cwd_user_attributes ca
ON u.id = ca.user_id
AND ca.attribute_name = 'login.lastLoginMillis'
WHERE u.active = 1
AND d.active = 1
AND EXISTS (
SELECT 1
FROM cwd_membership m
JOIN licenserolesgroup gp ON LOWER(m.parent_name) = LOWER(gp.GROUP_ID)
WHERE m.lower_child_name = u.lower_user_name
)
AND (
ca.attribute_value IS NULL
OR FROM_UNIXTIME(CAST(ca.attribute_value AS UNSIGNED)/1000) <= (CURRENT_DATE - INTERVAL 90 DAY)
)
ORDER BY "Last Login" IS NULL, "Last Login" DESC;
Source: Atlassian Support KB
How to Find Inactive Users: Jira Cloud
Method 1: JQL Function
Jira Cloud has a built-in JQL function for finding issues assigned to inactive users:
assignee in inactiveUsers()
This works for any User Picker field. Use it to find issues that need reassignment.
Method 2: Export from Admin Console
- Go to admin.atlassian.com
- Navigate to Directory > Users
- Export users to CSV (includes "Last Active Time" column)
- Sort by Last Active Time in Excel/Sheets
- Filter for users inactive 90+ days
Method 3: REST API (Atlassian Guard required)
GET https://api.atlassian.com/admin/v1/orgs/{orgId}/directory/users/{accountId}/last-active-dates
This gives you precise activity data but requires Atlassian Guard (formerly Atlassian Access).
Source: Atlassian Developer Docs
What This Means in Dollars
Let's calculate the impact for a typical 500-user Jira instance:
| Scenario | Inactive Users | Annual Waste |
|---|---|---|
| Conservative (10%) | 50 users | $5,400 (Cloud) / $5,100 (DC) |
| Average (20%) | 100 users | $10,800 (Cloud) / $10,200 (DC) |
| High (30%) | 150 users | $16,200 (Cloud) / $15,300 (DC) |
Based on Jira Cloud Standard at $9/user/month and DC at $8.50/user/month
For larger instances (1000+ users), savings can reach $20,000-50,000 per year.
Automate Your License Audits
Manual audits work, but automation prevents the problem from recurring.
Option 1: ScriptRunner for Jira
ScriptRunner from Adaptavist includes a built-in script to automatically deactivate users after N days of inactivity.
// Example: Deactivate users inactive for 100+ days // Available in ScriptRunner's Script Services
Option 2: Marketplace Apps
| App | Platform | What It Does |
|---|---|---|
| Manage Inactive Users | Cloud/DC | Bulk deactivation based on inactivity |
| License Monitoring for Jira | DC | Monitors concurrent usage, recommends tier |
| User Auditor for Jira | DC | Permission audits, Excel exports |
| Microscope | Cloud | Instance cleanup, inactive detection |
Option 3: SCIM Provisioning (Best for Cloud)
If you use Azure AD, Okta, or OneLogin, set up SCIM provisioning through Atlassian Guard:
- Users removed from IdP are automatically deactivated in Atlassian
- No manual cleanup required
- Works across all Atlassian Cloud products
Best Practices: Don't Break Things
Before you start deactivating users:
Deleting users breaks issue history and @mentions. Always deactivate instead.
Send an email 7-14 days before: "Your Jira access will be removed on [date]. Reply if you still need it."
Some users might be service accounts running automations. Verify before deactivating.
Use bulk change to reassign open issues from deactivated users.
Create a formal policy: "Users inactive for 90+ days will be deactivated after notification."
Set a calendar reminder. One audit per month prevents buildup.
Why This Matters Now
Atlassian Pricing Changes (2025-2026)
| Date | Change |
|---|---|
| February 2025 | Data Center prices +15-25% |
| October 2025 | Cloud prices +5-20% |
| March 2026 | No new DC sales (new customers) |
| March 2028 | No new DC sales (existing customers) |
| March 2029 | Data Center End of Life |
Source: Atlassian DC EOL Announcement
If You're Planning a Cloud Migration
Every inactive user you migrate to Cloud becomes a monthly cost. Clean up your user base before migration to avoid paying for users who don't need access.
The math is simple:
- 100 inactive users × $9/month × 12 months = $10,800/year wasted
- 10 minutes of audit work = potentially $10,000+ in savings
Quick Start Checklist
- Run the SQL query (DC) or export users (Cloud)
- Identify users with no login in 90+ days
- Send notification emails to inactive users
- Wait 7-14 days for responses
- Deactivate non-responders
- Reassign their open issues
- Document the number of users removed
- Calculate and report savings to management
- Set up monthly audit reminder
- Consider automation (ScriptRunner or Marketplace app)
The Bottom Line
Most Jira instances have 15-30% of licenses assigned to users who don't need them. With Atlassian prices increasing and Data Center approaching end-of-life, now is the time to audit.
A 10-minute audit today could save your organization thousands of dollars per year.
Automate Your Audits with Home Directory Database Browser
Tired of running SQL queries manually? Home Directory Database Browser lets you:
- Audit 1,000+ users in seconds — no SQL knowledge required
- Export inactive user lists to CSV for management review
- See license cost impact before and after cleanup
- Schedule regular audits with saved queries
Used by 2,400+ Jira admins. Average reported savings: $18,000/year from removing inactive users.
Try free for 30 days →