Guide · 8 min read · Updated May 8, 2026
How to find unused SaaS licenses (without buying SaaS to find SaaS)
A practical, six-step playbook for surfacing wasted SaaS spend using the data you already export from Slack, Google Workspace, Zoom, and your finance ledger.
If your company has 50 employees, odds are you've already paid this month for at least three SaaS seats nobody is using. The frustrating part isn't that the waste exists — it's that finding it doesn't require a procurement team or a $40k tool. You almost certainly already have the data. Here's how to surface it in an afternoon.
1. Pull a license export from each top vendor
Start with your six largest SaaS line items. For each one, look for an admin export that includes user email, plan name, and last sign-in (or last activity). The exports you want — without OAuth, without paying anyone — typically live under "User management" or "Billing & licenses."
- Slack — Admin → Members → Export (CSV)
- Google Workspace — Admin Console → Reports → User Reports → Apps usage activity
- Microsoft 365 — Admin Center → Reports → Usage
- Zoom — Admin → User Management → Users → Export
- Notion — Settings → People → Export members
- GitHub — Org Settings → Billing → Export user list
2. Normalize emails and vendor names
The biggest source of false positives is the same human appearing twice on the same vendor under different emails — usually corporate and personal. Lowercase every email and strip whitespace before you compare. For vendor names, fold variants like "G Suite" and "Google Workspace" together so spend rolls up cleanly.
3. Tag every seat with one of six waste categories
The deterministic rules below catch 80–90% of recoverable spend. They don't require AI, machine learning, or a benchmark database — just a few well-chosen if-statements over the data you already have.
- Never logged in — active license, no last_login_at recorded.
- Inactive — active license, last_login_at older than 90 days.
- Suspended but billing — status = suspended, monthly cost > 0.
- Duplicate accounts — same normalized email appears twice on the same vendor.
- Unknown owner — license has no full_name attached (often shared accounts).
- Over-tiered — premium plan name (Enterprise / Business Plus) on a barely-used seat.
4. Estimate savings conservatively
For inactive, never-logged-in, suspended, and unknown-owner findings, the savings are equal to the monthly license cost — you'd recover the seat outright. For duplicates, the savings is the cost of every duplicate seat after the first. For over-tiered plans, use a 40% heuristic of the current seat cost; you'll need vendor-specific downgrade pricing to refine it later.
Always show a confidence level alongside the savings number. If you can't trace a finding back to a specific seat, mark it low confidence and let your IT lead decide.
5. Group findings by vendor and rank by annual savings
Your CFO doesn't care about a list of 60 user-level findings. They care about the three vendors with the largest recoverable spend. Group findings by vendor, sum annual savings, and put the highest line items first.
Inside each vendor, sort findings by severity (suspended-but-paid is high, unknown-owner is low) and then by annual savings. This is the order you should attack them in.
6. Make a renewal-aware action plan
Reclaiming a seat after the renewal locks is a year-long mistake. Build a renewal calendar — vendor name, renewal date, plan, monthly cost — and review every audit finding 30 days before each renewal. That's the only window where reclaiming matters most.
If you'd rather not build the spreadsheet, Wabiro does this for you: upload a license CSV, pick your thresholds, and the savings report comes out the other end with vendor-level breakdown, recommended actions, and confidence levels. Run it every quarter.
Frequently asked
- Do I need OAuth or a vendor connector?
- No. Every major SaaS admin console has a CSV export. The connector economy was built mostly so vendors could charge for what's already exportable. Wabiro's V1 is CSV-first by design.
- How long does the first audit take?
- Pulling exports from six vendors is usually 30–45 minutes. Running them through a rules engine is seconds. The bottleneck is people, not data — schedule a 60-minute block on the calendar and you'll be done.
- What's the most common finding?
- Suspended-but-paid accounts. Someone left, IT suspended the SaaS account, but the seat keeps billing because no admin removed it. It's almost always at the top of the high-severity list.