How much are you wasting on unused Microsoft 365 licences?
19 Jul 2026
How much are you wasting on unused Microsoft 365 licences?
Licences are bought for a reason at the time. Then people leave, projects end, plans change, and it is nobody's job to notice. What is left is a quiet line item that renews itself every month, and the only way to size it is to look at your own tenant.
€404 = Microsoft 365 E3 at its list price of €33.70 per user per month, × 12.
Where the waste hides
Licence waste is rarely one big mistake. It is five small leaks, each invisible from the billing page, each only visible when you cross licence assignments with actual sign-in and usage data:
| Leak | What it looks like | How to find it |
|---|---|---|
| Leavers still licensed | Offboarding disabled the account but never reclaimed the licence. | Accounts with sign-in blocked and a paid SKU assigned. |
| Never signed in | Provisioned for a hire, a project or "just in case" — never used once. | Licensed users with no sign-in activity at all. |
| Dormant 90+ days | Real people who stopped using the account months ago. | Last sign-in older than 90 days, licence still assigned. |
| Over-sized SKUs | E3 or E5 assigned where usage says email-only. | Cross mailbox/Teams/OneDrive activity against the SKU per user. |
| Unused service plans | Waste inside seats you do use — paid add-ons nobody opens. | Per-SKU service plan usage vs. what the bundle includes. |
The audit, in four steps
Export licensed users with their SKUs, then join last-sign-in dates and per-workload activity (mailbox, Teams, OneDrive). This join is the whole audit — everything else is filtering.
Blocked accounts with licences are the safest removals: nobody can sign in to use them. Users who never signed in come next, after one check for a new hire who has not started yet.
90-days-inactive users need a human look: parental leave and sabbaticals are fine; the contractor whose project ended in March is not. Downgrade or reclaim case by case.
A one-off audit goes stale — waste is a flow, not a stock. Put the same report on a monthly cadence so reclaiming a seat becomes routine hygiene instead of an annual project.
Doing this without the spreadsheet marathon
You can run the whole audit by hand: two admin centers, three CSV exports, one careful spreadsheet join — and again next month. That is exactly the report GraphPaaS keeps for you: licences on disabled accounts and on people with no sign-in or activity for 90 days, down to the person, per tenant, refreshed automatically. It comes with a dry-run PowerShell script your admin runs to take the licences back (direct assignments only; we stay read-only). Step 3 is the part left for a human.
Either way, run the numbers once: the count of idle seats times the list price is the figure to take to whoever signs the renewal.
Free licence audit of your tenant: one admin consent, read-only, no credit card.
See your number →