Insights › Guide

How to reclaim unused Microsoft 365 licences

Most licence reviews die in the first hour because every username comes back as a hash. Here is the whole job - measuring usage properly, when you can actually reduce seats, and what happens to the data.

Most Microsoft 365 licence reviews die in the first hour, and usually for the same reason: someone runs the usage report, every username comes back as a meaningless hash, and the exercise gets parked. That is a tenant setting, it is on by default, and clearing it takes about two minutes. What follows is the rest of the job - how to measure usage properly, when you are actually allowed to reduce seat counts, what happens to the data when you take a licence away, and which waste patterns are genuinely worth chasing.

Prices in this article are UK list, ex-VAT, observed in July 2026. Microsoft repriced most of the estate on 1 July 2026, so anything you read that was written in 2025 is now wrong. Its own UK pages were still catching up when we checked, so verify against a live CSP quote before you build a business case on a number.

On by default
the setting that hashes usernames
7 days
to reduce seats, from when they were added
D180
longest usage window Graph will give you
Day 93
when an unlicensed OneDrive is archived

First, turn off concealed names

In the Microsoft 365 admin centre there is a checkbox with a genuinely confusing name: "Display Concealed user, group, and site names in all reports". Some Microsoft documentation renders the same setting as "Conceal user, group, and site names in all reports". Either way, ticked means concealed.

It has been on by default since 1 September 2021, and Microsoft's rationale is reasonable: "By default, all reports hide user information such as usernames, display names, groups, and sites to help companies support local privacy laws."

The critical point for anyone scripting against Graph is that this is a single tenant-wide flag and it affects the API exactly as it affects the admin centre. A reclamation script will return hashed UPNs and be completely useless until someone clears it. This is the number-one reason M365 licence audits never get off the ground.

Via the admin centre: Settings › Org Settings › Services › Reports, then untick the box and save. It needs a Global Administrator and takes a few minutes to apply. Be warned that Microsoft's own instructions on that page say "select the checkbox" under a heading about showing details, which is the wrong way round - to show real names you untick.

Or do it properly, in code:

Connect-MgGraph -Scopes "ReportSettings.ReadWrite.All"
Get-MgAdminReportSetting          # displayConcealedNames : True
Update-MgAdminReportSetting -BodyParameter @{ displayConcealedNames = $false }

Do have the privacy conversation before you flip it, though - particularly if you are an MSP acting in a client tenant. Per-user activity data is personal data, and "we needed it for a licence review" is a purpose you should be able to point at in writing.

Where the usage data comes from

The single most useful call for reclamation is getOffice365ActiveUserDetail, because it returns, per user, which workload licences they hold and the last activity date for each - in one place:

GET https://graph.microsoft.com/v1.0/reports
    /getOffice365ActiveUserDetail(period='D90')

Around it sit the per-workload reports you will want for corroboration:

EndpointWhat it gives you
getOffice365ActiveUserDetailPer-user licence flags, per-workload last activity date, licence assign dates, assigned products
getTeamsUserActivityUserDetailChat and channel messages, calls, meetings organised and attended, audio/video/screen-share seconds
getEmailActivityUserDetailSend, receive and read counts; last activity date
getMailboxUsageDetailStorage used against quota, archive presence, last activity
getOneDriveActivityUserDetail / getOneDriveUsageAccountDetailPer-user file activity and per-account storage
getSharePointActivityUserDetailFiles viewed or edited, synced, shared
getM365AppUserDetail39 columns of per-user usage across Outlook, Word, Excel, PowerPoint, OneNote and Teams, split by Windows, Mac, mobile and web

Three practical notes that save an afternoon each:

  • Permissions. All of these need Reports.Read.All. For delegated calls you also need an Entra role - and here is the catch: Global Reader and Usage Summary Reports Reader return tenant-level data only, with no per-user detail. Reports Reader is the least-privileged role that actually returns what reclamation needs. App-only calls carry no role requirement at all, which is the sensible automation route.
  • Periods are D7, D30, D90 and D180. D180 is the maximum; there is no D365. A couple of endpoints are period-only, and the date parameter window is 28 rather than 30 days on the Teams device usage and email activity reports. Set period or date, never both.
  • The redirect trap. These calls return CSV indirectly - an HTTP 302 with a Location header pointing at a short-lived pre-authenticated URL that needs no Authorization header. HTTP clients that auto-follow redirects and helpfully forward the auth header will fail. Strip it on the redirect hop.
  • Viva Engage reporting still uses the old function names - getYammerActivityUserDetail and friends. Only the branding in the descriptions changed; there is no getVivaEngage* replacement and no deprecation notice.
  • Copilot is separate, on the /copilot path rather than /reports, and only returns data for users who hold a Copilot licence.

Why the data will mislead you if you let it

This is the section that separates a defensible reclamation exercise from an angry ticket queue.

The data is 24 to 72 hours behind, sometimes more. Microsoft's wording: "The reports typically become available within 24 to 72 hours, but might sometimes take several days to become available." Every export carries a Report Refresh Date column - read it rather than assuming it means today. The M365 Apps usage report is slower still, covering "up to the last two days" and refreshing with minor corrections every six days. Teams goes further and backfills retroactively: it validates the past three days and fills detected gaps, so historical Teams figures can legitimately change after you have exported them.

"Activity" means intentional activity. Microsoft defines last activity date as the most recent date a user performed "any intentional activity within the app". Presence is not activity. Having Teams running in the tray, being signed in, or showing green generates no signal at all.

That produces one very specific and very common false negative. The Teams report has an "Other activity" category, described as the user being active but doing things the report does not expose - Microsoft's own examples include changing a status message, or opening a channel post without replying. A user who reads Teams all day but never posts, calls or joins a meeting can show as low or zero activity. Reclaim on that alone and you will be wrong, publicly.

Other documented gaps worth knowing before you act:

  • Shared computer activations are excluded from the Apps usage report, so VDI, Citrix, RDS and kiosk estates are systematically under-counted.
  • Teams metrics exclude changes made through service integrations - app posts and replies, or emails into a channel.
  • For external collaborators, activity in their own tenant is not counted.
  • Non-optimised VDI clients can show non-zero call minutes without real audio or video use - the mirror-image risk, a false active.
  • New users sometimes appear as unknown because of delays creating profiles.
  • When a user account is deleted, Microsoft deletes that user's usage data within 30 days - so retrospective audit of leavers has a hard horizon.

A defensible method, given all that. Assess on D90 or D180, never D7. Require at least two independent signals to agree - for example the last activity date from getOffice365ActiveUserDetail plus lastSuccessfulSignInDateTime from Entra. Never reclaim on one workload's silence. And treat read-only Teams consumers, shared-computer users, integration-driven accounts, external collaborators and anyone on long-term leave as needing a human check.

Microsoft's own suggested threshold for inactive accounts, for what it is worth, is "between 90 and 180 days". Note that Entra sign-in activity reporting needs Entra ID P1 or P2.

When you are actually allowed to reduce seats

This is where good analysis meets commercial reality, and where most articles get it wrong. Under new commerce, the rule is seven calendar days - 168 hours - on any term, annual and monthly alike, with a refund prorated daily.

The nuance that matters most:

"The number of licenses on a subscription can be decreased only within the first seven days of when the licenses were added to the subscription... This rule applies whether the licenses were added at the initial purchase, on renewal, or at midterm."

So the clock runs from when those specific licences were added - not from the original subscription date. Seats added mid-term carry their own fresh seven-day reduction window. Miss it, and "the license count can't be decreased until the next cancellation window at renewal".

Increases, by contrast, can happen at any time and are co-termed to the subscription end date. The asymmetry is deliberate.

That leaves two routes for anything you find outside the window:

  1. Schedule the change before renewal - in Partner Center, on the subscription, under Manage renewal. It handles licence increases and reductions plus billing-term and frequency changes. Two traps: the subscription must be active with autorenew on, and saved scheduled changes are deleted if you subsequently cancel, turn off autorenew, change a quantity, upgrade a SKU or convert a trial.
  2. Use the fresh seven-day window after renewal completes, which starts at the exact datetime renewal finishes.

One more thing to avoid: a mid-term change of billing term does not open a cancellation window, and will leave you unable to reduce seats until the renewal date. If you are planning a reclamation, do the analysis first and the billing housekeeping second.

What happens to the data when the licence goes

There are three separate 30-day clocks here and they get conflated constantly:

ActionMechanismWindow
Remove licence, account remainsExchange holds the mailbox data30 days, then unrecoverable
Delete the user accountEntra ID soft-delete30 days, fully restorable
Delete the mailboxExchange soft-deleted retention30 days

An important correction to how the first row usually gets described: it is not 30 days of continued access. Microsoft is explicit that once the licence is removed, "the user's mailbox is no longer searchable by using an eDiscovery tool such as Content Search or eDiscovery (Premium)". eDiscovery visibility is lost immediately. The 30 days is a recovery window, not a service window.

Two operational rules follow. Remove any holds before you remove the licence - Exchange will throw an error if a hold exists, because it cannot disconnect a mailbox whose content must be retained. And if you want to keep a leaver's mailbox cheaply, convert it to a shared mailbox first, then unassign the licence - the mailbox needs a licence at the moment of conversion, and must be under 50 GB. Do not delete the old user account afterwards; it anchors the shared mailbox.

OneDrive: the change most articles missed

The old, widely-repeated answer was that only deleting the user starts OneDrive cleanup - "no other action causes the cleanup process to occur, including blocking the user from signing in or removing the user's license". Remove the licence, keep the account, and the OneDrive sat there indefinitely. That was a genuinely useful parking spot, and it is no longer safe.

A separate enforcement track for unlicensed OneDrive accounts now applies: each account is put into read-only mode on the 60th unlicensed day and archived or moved to the recycle bin on the 93rd. Microsoft adds that while these accounts stay visible to admins, "neither admins nor end users have access to their content".

Long retention settings do not save you - Microsoft states accounts are archived at day 93 even where the retention period is longer. Re-licensing reactivates within 24 to 48 hours at no charge, and there is no opt-out.

In fairness, Microsoft's own documentation currently contradicts itself on this - the older pages still say licence removal does not trigger deletion, while the unlicensed-accounts page describes the day 60 and day 93 behaviour. Plan for the stricter of the two.

On the user-deletion path the arithmetic is 30 + 93 = 123 days: the retention period defaults to 30 days and is configurable from 30 to 3,650 in the SharePoint admin centre, after which the OneDrive moves to the site collection recycle bin for 93 days, from where restoring it requires PowerShell. Also worth checking: by default the deleted user's manager automatically gets access, and if no manager or secondary owner is set, nobody is given access and nobody is warned. You get two emails - one at deletion, one seven days before expiry.

Keeping leaver data without paying for it

The compliant answer is an inactive mailbox, and the order of operations is everything: "Making a mailbox inactive requires a hold on the mailbox, and then deleting the mailbox or corresponding user account." Hold first, then delete.

Both halves of the licensing answer matter, because they are routinely conflated. "Inactive mailboxes do not require a usage license" - but you need the licence before deletion in order to apply the hold, and it is freed afterwards: "After the user account is deleted, any Exchange Online license associated with the user account will be available to assign to a new user."

Three traps that catch UK admins regularly:

  • Applying an Exchange retention policy (MRM) does not create an inactive mailbox when the account is deleted. It has to be a hold or a retention policy configured to retain.
  • If retention is configured to only delete content, the mailbox will not become inactive.
  • Litigation Hold requires Exchange Online Plan 2, or Plan 1 plus an Exchange Online Archiving licence. It is not available on EXO Plan 1 alone, Kiosk, Business Basic or Standard, Office 365 E1 or F3.

And one figure worth correcting, because much of the web still has it wrong: once the last hold is removed, an inactive mailbox remains for 30 days, not 183. Separately, eDiscovery case holds give no grace at all - if the hold is released or the case closed, the inactive mailbox is permanently deleted. Note too that a mailbox with auto-expanding archive enabled cannot be recovered or restored as an inactive mailbox, which makes that a one-way door worth thinking about before you enable it.

The waste patterns actually worth chasing

1. Service accounts and devices on full suites

This is the most reliably recoverable money in almost any tenant. Microsoft's own guidance is that a mailbox used to send email over SMTP - line-of-business applications, scanners, on-premises appliances - does need a subscription, but that the subscription "can be Exchange Online Kiosk or Exchange Online Plan 1 or Plan 2". Not E3. Not E5.

And it depends entirely on how the thing sends:

MethodLicence neededLimits
SMTP AUTH client submissionA licensed mailbox10,000 recipients/day, 30 messages/minute
SMTP relay via connectorNo licensed mailbox"Reasonable limits"
Direct sendNo licensed cloud mailboxStandard anonymous throttling

For genuinely high volume there is also High Volume Email, which needs no M365 licence and is billed pay-as-you-go at roughly $42 per million recipients, internal only. An estate with E3 on every multifunction device and LOB application is burning money for no functional benefit.

While you are in there: room and equipment mailboxes are free, and Microsoft explicitly frames a licensed shared mailbox as paying for something you do not need. A shared mailbox holds 50 GB unlicensed; it needs Exchange Online Plan 2 only if it exceeds that, needs Litigation Hold, or needs a larger in-place archive. Anything created before July 2018 is grandfathered at 100 GB.

One deadline to note while you are auditing service accounts. Basic authentication for SMTP AUTH is unchanged through December 2026, at which point it will be disabled by default for existing tenants, with a final removal date to be announced in the second half of 2027. If you find accounts using SMTP AUTH with basic auth, that is your window. Ignore any source still saying March 2026 - that timeline was superseded in January 2026.

2. Unused Copilot seats

At roughly £23 per user per month, this is usually the highest-value single target in a tenant. There is a first-party report for it - the Microsoft 365 Copilot usage report shows Enabled against Active with a per-user last activity date, over a 180-day window. A blank last activity date is an unused seat. Copilot is a paid add-on and is not included in E3 or E5; only the new E7 SKU bundles it.

3. Duplicate and overlapping SKUs

The anchor fact: Microsoft 365 E5 = Office 365 E5 + Enterprise Mobility and Security E5 + Windows E5. Conflating Microsoft 365 E5 with Office 365 E5 is the single most common error in articles on this subject, and it leads to real mistakes in both directions.

Add-onIn Microsoft 365 E5?In Office 365 E5?
Entra ID P2Yes (M365 E3 gets P1 only)No - Entra ID Free only
Defender for Office 365 P1 and P2YesYes
Defender for Endpoint P2Yes, via Windows E5No
Defender for Identity / Cloud AppsYes, via EMS E5No
Intune Plan 1YesNo
Microsoft 365 CopilotNo - paid add-onNo

The cleanest example of pure waste, in Microsoft's own words: "In the case where any Microsoft 365 E5 license is used, it isn't necessary to also assign the stand-alone Microsoft Teams Phone Standard license." Do check the reverse trap though - Teams Phone in E5 is the PBX entitlement only, with no PSTN minutes. A Calling Plan, Operator Connect or Direct Routing is a legitimate separate purchase, not waste.

And date-stamp your findings, because the July 2026 packaging changes moved the line. Defender for Office 365 P1 bought on top of E3 flips from legitimate to waste as that rollout completes, and Intune Plan 2, Remote Help and Advanced Analytics moved into E3 and E5 - so standalone purchases of those are now worth re-checking.

4. The no-Teams SKU trap

This one is counter-intuitive and expensive. Following the 2023 EEA and 2024 worldwide unbundling, no-Teams enterprise suites are cheaper - but standalone Teams Enterprise costs roughly the same as the discount. Putting E5 (no Teams) together with Teams Enterprise generally costs as much as or more than the Teams-inclusive suite, and gives you a second SKU to administer and a second licence to reclaim when someone leaves.

Two follow-ons. First, you can buy Teams-inclusive enterprise suites again - that changed on 1 November 2025, and anyone still repeating "you can no longer buy E3 with Teams" is a year out of date. Second, customers on the original E3 or E5 SKUs will need to move to the equivalent unified SKU at their next renewal, which makes 2026 a natural audit trigger. And for completeness: Microsoft 365 E5 (no Teams) still includes Phone System.

5. Leavers, and guests

The mechanics are above; the process point is the sequence. Removing the licence alone does not stop a leaver sending mail, because the mailbox still exists during the 30-day window. Microsoft's order is: block sign-in, reset the password, then remove the licence.

On guests, the headline is that they are usually free: "Guest access can be used with all Microsoft 365 Business Standard, Microsoft 365 Enterprise, and Microsoft 365 Education subscriptions. No extra Microsoft 365 license is necessary." External ID billing is by monthly active users with the first 50,000 free. Guests do need a licence for specific things - OneDrive storage, Power Automate flows, desktop Office apps, Power BI Pro workspace content - so the waste pattern is guests holding paid suite licences they never needed. Incidentally, if you find the old 1:5 guest ratio in a policy document, treat it as legacy; current Microsoft documentation describes guest usage under MAU billing instead.

The prices you are working against

UK list, GBP, ex-VAT, annual commitment paid yearly, as observed in July 2026:

SKUWith TeamsNo Teams
Microsoft 365 E3£33.50£27.00
Microsoft 365 E5£51.60£45.00
Microsoft 365 E7 (new for 2026)£81.60£75.00
Office 365 E1£7.70£5.20
Office 365 E3£23.30£16.70
Office 365 E5£36.80£30.20
Microsoft 365 F1 / F3£2.30 / £7.70£1.92 / £6.90
Business Basic / Standard / Premium£5.40 / £10.80 / £16.90

The 1 July 2026 increase was announced in December 2025 and ran roughly 5 to 14% on enterprise SKUs and 25 to 33% on frontline - F1 rose by a third, F3 by a quarter, while Business Premium held flat. Existing customers stay on their current pricing until renewal, with at least 30 days' Message Center notice. Consumer and education pricing did not change.

Three commercial mechanics that quietly add to the bill:

  • Monthly billing on an annual commitment carries a 5% uplift. It attaches to billing frequency, not to the term.
  • A monthly term costs 20% more than the annual-term equivalent. Microsoft does not state "20%" in prose, but it is exactly ×1.200 across every published price pair, in GBP as well as USD.
  • Since April 2026 there is a new 3% Extended Service Term uplift: the old free grace period on non-renewed subscriptions is gone, and continuation is priced at the standard monthly rate plus 3%, cancellable any time and prorated.

One forward-looking note for budgeting: from FY27, Microsoft moved to annual local-currency updates each January. The next GBP movement is due 1 January 2027, independent of any dollar change.

What the industry figures are worth

You will have seen the claim that around a quarter to a third of software licences go unused, attributed to Gartner. We tried to source it properly. It traces to a Gartner analyst blog post from May 2020 on "shelfware", and that post no longer exists - the URL now redirects to a generic insights page. Every downstream citation we followed attributed a percentage to Gartner or Forrester without naming a report.

So we are not going to print one, and neither should anyone building a business case that has to survive scrutiny. What is citable:

  • Flexera's 2026 State of ITAM report (June 2026) found 64% of respondents had been audited by Microsoft in the past three years, 48% within the last year, and 44% had spent over $1M on audits across three years. Survey of 512 technology professionals. It contains no unused-licence percentage, but it reframes the stakes usefully: this is compliance exposure, not just waste.
  • Zylo's 2026 SaaS Management Index (January 2026) reports an average of 36% of SaaS licences unused, measured against industry-recommended utilisation levels. Vendor data, not M365-specific - and worth knowing that Zylo's own statistics page frames the same report as utilisation rising from 47% to 54%, which implies 46% unused. Cite one framing and say which.
  • The only genuinely M365-specific dataset we found is CoreView's Global Office 365 Report, which put E5 at 23% inactive and 27% unassigned. It is vendor research from April 2020 - before Teams unbundling, the E5 repackaging and Copilot - so treat it as an illustration, not a benchmark.

There is no published UK-specific M365 licence waste figure from any credible publisher. If you need a number for a board, the honest options are to derive it from your own tenant or to say that none exists.

A process you can repeat quarterly

  1. Clear concealed names - once, with the privacy rationale documented.
  2. Pull getOffice365ActiveUserDetail at D90 or D180 and join it to Entra sign-in activity. Read the Report Refresh Date.
  3. Segment before you judge. Separate out VDI and shared-computer users, external collaborators, integration-driven accounts and anyone on leave.
  4. Start with the structural waste, not the people. Service accounts on full suites, licensed shared and room mailboxes, unused Copilot seats, duplicate add-ons, no-Teams split SKUs. None of it requires a conversation with a user.
  5. Check your reduction window before promising a saving. Know when each block of seats was added and when the subscription renews.
  6. Sequence leaver offboarding properly - hold first if you need the data, then block sign-in, reset password, remove licence. Convert to shared before unassigning if the mailbox needs to stay.
  7. Diarise the OneDrive clocks. Day 60 read-only and day 93 archive on unlicensed accounts are the ones that turn a saving into an incident.

Done in that order, most tenants give up a meaningful saving in the first pass without a single difficult conversation - because the largest single line is almost always service accounts and mailboxes that never needed a full suite in the first place.

Frequently asked questions

Why do Microsoft 365 usage reports show hashed or anonymous usernames?

Because of a tenant-wide setting in the Microsoft 365 admin centre, on by default since 1 September 2021, which conceals user, group and site names in all reports. It affects the Microsoft Graph reporting API exactly as it affects the admin centre, so scripts return hashed UPNs until it is cleared. Untick it under Settings, Org Settings, Services, Reports - it requires a Global Administrator.

Which Microsoft Graph endpoint shows unused Microsoft 365 licences?

getOffice365ActiveUserDetail is the most useful single call, because it returns per-user licence flags alongside the last activity date for each workload. It needs the Reports.Read.All permission. For delegated calls, note that Global Reader and Usage Summary Reports Reader return tenant-level data only - Reports Reader is the least-privileged role that returns per-user detail.

How far back does Microsoft 365 usage data go?

The reporting periods are D7, D30, D90 and D180. D180 is the maximum; there is no D365. Data is typically 24 to 72 hours behind and can take several days, so read the Report Refresh Date column rather than assuming the export is current.

Can I reduce Microsoft 365 seat counts at any time?

No. Under new commerce, licence counts can only be decreased within seven days - 168 hours - of when those specific licences were added, whether they were added at initial purchase, on renewal, or mid-term. After that, the next opportunity is the cancellation window at renewal, or a scheduled change made before renewal. Increases can be made at any time.

What happens to a mailbox when you remove a Microsoft 365 licence?

Exchange Online holds the data for 30 days, after which it is deleted and cannot be recovered. It is not 30 days of continued access - eDiscovery visibility is lost immediately. Any holds must be removed before the licence, or Exchange returns an error. To keep the mailbox cheaply, convert it to a shared mailbox first and then unassign the licence, and do not delete the user account.

Does removing a licence delete the user's OneDrive?

Effectively yes, now. Unlicensed OneDrive accounts are put into read-only mode on the 60th unlicensed day and archived or moved to the recycle bin on the 93rd, with neither admins nor users able to access the content. Longer retention settings do not prevent this. Re-licensing reactivates the account within 24 to 48 hours at no charge.

Do shared mailboxes need a Microsoft 365 licence?

Not usually. A shared mailbox holds up to 50 GB without a licence. It needs Exchange Online Plan 2 if it exceeds 50 GB, if it needs Litigation Hold or In-Place Hold, or if it needs a larger in-place archive. Room and equipment mailboxes are free. Shared mailboxes created before July 2018 are grandfathered at 100 GB.

What is the cheapest licence for a send-only service account?

Exchange Online Kiosk, if the account uses SMTP AUTH client submission. If it sends via an SMTP relay connector or direct send, no licensed mailbox is required at all. For high volume, High Volume Email needs no Microsoft 365 licence and is billed pay-as-you-go for internal recipients.

Sources: Microsoft Learn documentation on activity reports, the Graph reportRoot resource, new commerce subscription terms, removing licences from users, unlicensed OneDrive accounts, inactive mailboxes and shared mailboxes; and the 2026 Microsoft 365 packaging and pricing update. Prices are UK list, ex-VAT, observed 24 July 2026; Microsoft's own regional pages were mid-rollout at the time, so verify against a live CSP quote before relying on a figure. Industry percentages are attributed and dated in the text.

Find the licences nobody is using

APaaS Assure joins Microsoft 365 usage to real device and application telemetry, so reclaim candidates come with corroborating evidence rather than a single silent workload.

Book a demo