SaaS Seat Creep: How to Audit Paid Licenses Nobody Is Actually Using
Your finance team just forwarded the quarterly SaaS invoice and the number is larger than last quarter, again. Nobody added a major new tool, nobody ran a big hiring push, yet the bill crept up. The culprit is almost always seats: licenses provisioned for people who changed roles, left the company, or simply stopped using a tool weeks after onboarding.
Seat creep is quiet, accumulative, and embarrassingly common. This guide walks you through a repeatable audit process to find those idle licenses, quantify what they're costing, and claw back the budget without disrupting the people who genuinely depend on the tools.
What You'll Learn
- How to build a complete license inventory across your SaaS stack
- Where to pull usage data and what signals actually indicate an idle seat
- How to classify seats into actionable tiers (active, dormant, ghost)
- How to reclaim licenses without blindsiding real users
- How to set up lightweight monitoring so seat creep doesn't compound again
Prerequisites
You don't need a dedicated SaaS management platform to do this audit, though one helps. At minimum you need: admin access (or a relationship with someone who has it) to your top tools, access to your payment method or finance system to see subscription line items, and a spreadsheet or simple database to track findings. If your company uses an identity provider like Okta or Azure AD, you'll want read access to user and app assignment data.
What Is Seat Creep and Why It Compounds
Seat creep happens when license counts grow faster than actual usage. An engineer joins, gets provisioned on six tools the first day, uses two of them regularly, and the other four sit idle. When that engineer moves to a different team or leaves, deprovisioning is inconsistent — IT closes the account on the identity provider but forgets to remove the Figma seat, the Notion member, and the GitHub Enterprise slot.
The compounding problem is that most SaaS vendors charge monthly per seat with annual minimums. You're often locked into a seat count at renewal, and if nobody ran an audit before the renewal window, you just committed to another year of paying for ghosts. Some tools also auto-upgrade your tier when you cross a seat threshold, meaning a handful of unconsidered provisioning decisions can quietly push you into a more expensive plan bracket.
If your organization has gone through rapid hiring, a reorg, or an acquisition in the past 18 months, the odds of significant seat creep are high. One useful entry point is understanding the broader picture of tools in your environment — including ones that never went through formal procurement. Our article on finding tools employees bought without IT knowing covers the discovery side of that problem well.
Build Your License Inventory First
Before you can audit usage, you need a complete list of what you're paying for. This sounds obvious, but most companies don't have one centralized record.
Start with three sources in order of reliability:
- Credit card and bank statements. Pull 12 months of transactions and search for recurring charges. Export to a spreadsheet, sort by vendor name, and deduplicate. Flag any vendor you can't immediately identify.
- Your identity provider's connected applications. Okta, Azure AD, Google Workspace, and similar systems show every OAuth-connected app. Some of these are free tiers, but many are paid — note all of them.
- Direct vendor billing portals. Log into each tool's billing section and record the current seat count, plan tier, next renewal date, and monthly or annual cost. Screenshot or export these pages.
Combine these into a single spreadsheet. Columns you need: Vendor, Plan, Seat Count, Cost Per Seat, Total Monthly Cost, Annual Commitment, Renewal Date, Primary Owner, and Admin Contact. The renewal date column will become critical when you prioritize which audits to run first — always tackle tools renewing in the next 60–90 days.
Pull Usage Data From Each Tool
With your inventory in hand, the next step is gathering actual usage signals. The goal is to identify which seats have seen zero or near-zero activity in the past 30, 60, and 90 days.
Built-in Admin Reports
Most mature SaaS products expose a user activity report inside their admin dashboard. Look for columns like
Last Login
Last Activity
Days Since Active
Projects Modified
Files Accessed
API Usage
Different vendors expose different metrics, but the objective is the same: determine whether the assigned user is actually consuming the license.
Examples:
- GitHub Enterprise → Last repository activity
- Figma → File edits and design activity
- Notion → Page creation and editing
- Atlassian → Product access and login history
- Slack → Last active timestamp
Export these reports whenever possible.
The raw exports will become your audit dataset.
Identity Provider Signals
Your identity provider often reveals inactivity faster than the application itself.
Check:
Last Login
Disabled Account Status
Department
Manager
Employment Status
A user who hasn't logged into Okta or Azure AD in 60 days is unlikely to be actively using a dozen SaaS products.
Former employees are especially important.
If someone no longer exists in the identity provider but still appears in vendor billing, you've found an immediate recovery opportunity.
API-Based Reporting
For larger environments, APIs save substantial time.
Many vendors expose:
User Lists
Activity Data
License Assignments
Billing Information
through REST APIs.
A simple Python script can collect usage metrics automatically and consolidate them into a single dashboard.
For organizations managing hundreds or thousands of licenses, automation quickly pays for itself.
Build a Seat Classification Model
Not every inactive user should be removed immediately.
A more effective approach is categorization.
Use three buckets.
Active
Characteristics:
- Logged in within 30 days
- Recent meaningful activity
- Clearly associated with current projects
Action:
Keep assigned
No further review needed.
Dormant
Characteristics:
- No activity for 30–90 days
- User still employed
- Usage unclear
Action:
Review with manager
These users often represent recoverable licenses.
Ghost
Characteristics:
- No activity for 90+ days
- User left company
- Duplicate account
- Contractor engagement ended
Action:
Reclaim immediately
Ghost licenses usually deliver the fastest savings.
Calculate the Cost of Inactivity
Executives respond to financial impact.
Translate inactivity into dollars.
Example:
| Tool | Ghost Seats | Cost Per Seat | Annual Waste |
|---|---|---|---|
| GitHub Enterprise | 8 | $21 | $2,016 |
| Figma | 12 | $15 | $2,160 |
| Notion | 15 | $10 | $1,800 |
| Jira | 20 | $8 | $1,920 |
Total:
$7,896 annually
from only four tools.
Most organizations discover significantly larger numbers.
A company with 300 employees commonly finds:
10%–25%
of seats generating little or no value.
Prioritize High-Cost Applications First
Not all audits produce equal savings.
Start with tools where:
Cost × Seat Count
is highest.
Example ranking:
| Vendor | Monthly Spend |
|---|---|
| Salesforce | $12,000 |
| GitHub Enterprise | $4,500 |
| Atlassian | $3,800 |
| Figma | $2,100 |
| Notion | $1,500 |
Reviewing Salesforce first will usually generate more savings than reviewing a small collaboration tool.
Apply effort where the financial return is highest.
Watch for Role-Based Overprovisioning
One common discovery is users assigned premium licenses they don't need.
Example:
Salesforce Enterprise
assigned to:
Read-only user
or:
GitHub Enterprise
assigned to:
Documentation contributor
In these cases:
- Downgrade
- Reassign
- Move to a lower-cost tier
rather than removing access entirely.
License optimization often produces savings beyond simple seat removal.
Reclaim Licenses Without Breaking Workflows
The biggest mistake is removing licenses immediately.
Instead, use a staged process.
Stage 1: Notify
Send a message:
We noticed no activity in the last 90 days.
Please confirm whether you still require access.
Many users voluntarily relinquish access.
Stage 2: Manager Review
Ask:
Does this employee still need the tool?
Managers typically know current project assignments.
Stage 3: Temporary Suspension
For uncertain cases:
Remove access
Retain data
Monitor support requests
If nobody complains after several weeks, the seat was likely unnecessary.
Stage 4: Full Reclamation
Reduce license counts before renewal whenever contract terms allow.
Look for Duplicate Functionality
Seat creep often hides a larger issue.
Example:
Marketing uses:
Canva
Design uses:
Figma
Product uses:
Miro
Each tool solves overlapping problems.
The question becomes:
Can one platform replace three?
Consolidation frequently produces larger savings than seat recovery alone.
Automate Future Audits
A one-time cleanup helps.
Ongoing monitoring prevents recurrence.
Create a monthly report containing:
- Total seats
- Active seats
- Dormant seats
- Ghost seats
- Monthly spend
- Renewal dates
Even a simple spreadsheet works.
The key is consistency.
Useful Automation Triggers
Flag users when:
No login for 30 days
or:
No activity for 60 days
or:
Employment status changes
These events often indicate reclaim opportunities.
Integrate Offboarding With License Recovery
The most effective fix happens before seat creep appears.
During offboarding:
Step 1
Disable identity provider access.
Step 2
Remove SaaS assignments.
Step 3
Transfer ownership of content.
Step 4
Reclaim licenses.
Step 5
Update inventory.
Many organizations complete Steps 1–3 and forget Step 4.
That's where ghost seats originate.
Renewal Negotiation Leverage
Seat audits improve vendor negotiations.
Imagine discovering:
500 purchased seats
380 active seats
before renewal.
You now have:
120 excess seats
worth of leverage.
Vendors frequently agree to:
- Reduced seat counts
- Better pricing tiers
- Contract restructuring
when presented with actual usage data.
The audit often pays for itself before any licenses are reclaimed.
Common Mistakes During License Audits
Using Login Activity Alone
Logging in isn't the same as using the product.
Combine login data with actual activity metrics.
Auditing Only Once Per Year
Seat creep accumulates continuously.
Quarterly reviews are more effective.
Ignoring Department Owners
Managers provide context that raw reports cannot.
Treating Every Dormant User as Waste
Some users require periodic access.
Review before removing.
Focusing Only on Expensive Tools
Small subscriptions accumulate too.
Ten overlooked tools at $500/month each become meaningful quickly.
A Simple Quarterly Audit Checklist
Every quarter:
✓ Export vendor billing data
✓ Export user activity reports
✓ Compare with identity provider records
✓ Identify dormant and ghost users
✓ Review with department managers
✓ Reclaim unnecessary licenses
✓ Update inventory
✓ Review upcoming renewals
✓ Negotiate reductions where possible
This process typically uncovers savings within the first audit cycle.
What Good Looks Like
Mature organizations maintain:
- Centralized SaaS inventory
- Assigned application owners
- Automated offboarding
- Quarterly license reviews
- Renewal tracking
- Usage reporting
They don't eliminate seat creep completely.
They catch it before it becomes expensive.
Final Thoughts
SaaS seat creep rarely arrives as a major event. It grows gradually through onboarding shortcuts, role changes, incomplete offboarding, and well-intentioned provisioning decisions that nobody revisits. The result is a growing pile of licenses assigned to users who no longer need them—or aren't even with the company anymore.
The solution isn't aggressive cost-cutting. It's visibility. Build a complete inventory, collect meaningful usage data, classify seats by activity level, and reclaim access through a structured process that respects legitimate users. Once you've completed one audit cycle, automate the reporting and tie license recovery directly into onboarding and offboarding workflows.
Most organizations discover enough wasted spend in their first audit to justify the effort immediately. More importantly, they create a repeatable process that prevents the same waste from quietly returning six months later.
Frequently Asked Questions
How do I find out which SaaS seats in my company are going unused?
Start by pulling a user activity report from each tool's admin dashboard, looking for accounts with no logins in the past 30–90 days. Cross-reference that list with your HR system to catch seats belonging to former employees, then flag any remaining accounts with consistently zero activity as candidates for removal.
How much money does seat creep typically waste in a mid-sized company?
The exact amount varies widely by stack and headcount, but audits at companies with 100–500 employees commonly surface 15–30% of paid seats as unused or dormant. Across a stack of ten or more tools, that often adds up to tens of thousands of dollars per year in recoverable spend.
Will removing unused SaaS licenses break anything for active users?
Removing a license only affects the specific user account being deprovisioned, not other users on the same tool. The safe approach is to send a heads-up email giving users 5–7 business days to confirm they need access before you remove the seat.
How often should I run a SaaS license audit?
A full audit once per quarter is a reasonable cadence for most teams, with a lighter monthly check on your highest-cost tools. Tying a focused audit to each vendor's renewal window — ideally 60 days before renewal — gives you time to negotiate a lower seat count before committing to another term.
Can my identity provider help automate SaaS seat audits?
Yes. Identity providers like Okta and Azure AD track the last login date per application per user, making them one of the most reliable sources of usage data across your entire stack. You can export this data or query it via API to build automated dormancy reports without logging into each tool individually.
📤 Share this article
Sign in to saveRelated Articles
Comments (0)
No comments yet. Be the first!