Book a demo

Unassigned Microsoft 365 Licenses: How to Find and Reclaim Them

FinOps

24 Mins Read

|

Nadeem Ahamed
Nadeem Ahamed Azure FinOps Specialist

Every Microsoft 365 tenant has a few seats bought for a hiring plan that slipped, licenses freed up when someone left, a block of Copilot licenses that never made it past the pilot group. They sit in the available count on the Licenses page, and Microsoft bills for every one of them, every month, until you reduce the quantity (which for most subscriptions means waiting for renewal day). Nobody plans for this. A leaver gets offboarded, the seat drops back into the pool, and the next joiner gets a freshly purchased license because whoever handled the request didn’t check what was spare. Do that for a year and the pool quietly grows. So why do these seats survive until renewal? Mostly because nobody owns the number.

Unassigned licenses are the easiest M365 waste to fix, since you don’t need usage data to spot them. Here’s how to find them, what they really cost, when you can actually cut them, and how to stop the count creeping back.

Key takeaways

  • An unassigned license is a seat you’ve paid for that isn’t attached to any user. Microsoft bills on purchased quantity, so it costs exactly what an assigned seat costs.
  • Unassigning alone saves nothing. You have to unassign first and then remove licenses from the subscription, and on an MCA billing account that removal only works within seven days of buying or renewing.
  • The raw count lies a little. Free and trial SKUs inflate it, so filter to paid SKUs before you put a dollar figure in front of finance.
  • Blocking a leaver’s sign-in doesn’t free their license. That’s where most hidden waste sits.
  • Zero unassigned isn’t the goal. Keep a small buffer sized to your joiner rate and how fast you can buy.
  • Treat seat utilization like reservation utilization on Azure: one owner, one number, reviewed before every renewal.

What is an unassigned Microsoft 365 license?

An unassigned Microsoft 365 license is a seat your organization has purchased on a subscription but hasn’t attached to any user. You pay for it in full, and nobody can use it.

That’s really all it is. The license exists on the subscription, it shows up on your invoice, and it does nothing until someone assigns it.

You find them in the gap between purchased and assigned. In the Microsoft 365 admin center, Billing > Licenses lists every product with its assigned and available counts. The Entra admin center shows the same split under Identity > Billing > Licenses, as total licenses purchased against licenses assigned to users. And in Microsoft Graph, each subscribedSku carries prepaidUnits.enabled and consumedUnits. Subtract one from the other and you have the unassigned pool for that SKU.

Most of them arrive the same few ways. Someone leaves, their account gets deleted, and the license drops back into the pool. Procurement buys 50 seats for a team that ends up hiring 35. Or a Copilot pilot gets 100 licenses, 60 get assigned, and the other 40 wait for a broader rollout that keeps slipping a quarter.

The terminology gets muddled, though. People say “unassigned” when they mean “unused,” and search results don’t help (look up unassigned licenses and half of what comes back is about unlicensed users, which is a different thing entirely). These four states look similar on a dashboard but need different handling:

License state What it means Costs money? Where you see it What to do
Unassigned Purchased seat with no user attached Yes, full price Available count on Billing > Licenses; enabled minus consumed units in Graph Reassign to joiners, or reduce at the next renewal window
Disabled but licensed Seat assigned to an account with sign-in blocked Yes, and it hides as “assigned” Active users, filtered by sign-in status Convert the mailbox to shared if the mail is needed, then unassign
Unused (inactive) Assigned to an active account that isn’t touching the service Yes Usage reports, last sign-in and last activity dates Check with the owner, then reclaim or downgrade
Unlicensed user Account with no license at all No Active users, filtered to unlicensed Usually intentional (shared mailboxes, resource accounts), but confirm it

Only the first row shows up as unassigned anywhere in the native tools. The second and third count as assigned on every built-in report, and in plenty of tenants they’re the bigger pile. More on that when we get to why your unassigned count is wrong.

Do unassigned Microsoft 365 licenses cost money?

Yes. Microsoft bills on the number of licenses you’ve purchased, not the number you’ve assigned, so an unassigned seat costs exactly the same as one somebody uses every day.

There’s no discount for idle seats and no pause button. If the subscription says 500, you pay for 500, whether 500 people are using them or 460.

Here’s what that looks like with real numbers. Microsoft 365 E3 went from $36 to $39 per user per month on 1 July 2026. Say your tenant carries 40 unassigned E3 seats, which isn’t unusual for a 1,000-seat estate after a reorg or a hiring freeze:

  • 40 × $39 = $1,560 a month
  • Over a 12-month term, $18,720 for licenses nobody touched

That’s at list price. Your EA or CSP rate will move the number, but not the shape of the problem.

Most of that money is already committed

This is the part people miss. Finding 40 idle seats doesn’t mean you get $18,720 back.

On most annual subscriptions, the quantity you renewed at is the quantity you pay for until the next renewal. On an MCA billing account you have seven days to reduce the count; reduce it after that window and the change only shows up on the first invoice after the renewal date. So if you spot those 40 seats three months into the term, roughly nine months of cost ($14,040) is locked in regardless of what you do next.

Which doesn’t make the finding worthless. It changes what you do with it:

  1. Stop buying. Every joiner who gets one of those 40 seats is a mid-term purchase you didn’t make. Twenty new starters absorbed from the pool is twenty seats you never add to the commitment.
  2. Fix the renewal number. Whatever is still unassigned near renewal should come off the quantity before the window closes, not after.

Monthly-term subscriptions are more forgiving here, since they can come down at the next monthly renewal. We’ll cover the timing rules by agreement type further down.

Unassigned Copilot seats are the expensive ones

Copilot licenses are where unassigned waste hurts most per seat. The Copilot add-on still lists at $30 per user per month on an annual commitment, or $31.50 billed monthly under an annual commitment. And they tend to be bought in round numbers for a pilot, then assigned slowly.

Buy 100 for a pilot, assign 60, and the other 40 cost $1,200 a month. That’s $14,400 a year on seats with no user attached at all, before anyone even asks whether the 60 assigned ones are being used. (That second question is the unused-license problem, and it deserves its own article.)

How do you find unassigned licenses in Microsoft 365?

Compare purchased against assigned for every SKU. The admin center shows it per product, Microsoft Graph gives it to you for the whole tenant in one query, and a reporting tool turns it into something finance can read.

Which one you use depends mostly on tenant size and how often you need the answer.

In the Microsoft 365 admin center

Go to Billing > Licenses. Every product on your subscriptions is listed with its assigned and available counts, and available is your unassigned number. Click into a product and you’ll see who holds each seat.

For a small tenant with four or five SKUs, this is honestly enough. It falls apart when you have 30 products across several billing accounts, because you’re reading them one at a time and none of it adds up to a dollar figure.

With Microsoft Graph PowerShell

For a tenant-wide view, query the subscribed SKUs directly. The unassigned count per SKU is the enabled prepaid units minus the consumed units, floored at zero.

Connect-MgGraph -Scopes "Organization.Read.All"

Get-MgSubscribedSku |
Select-Object SkuPartNumber, CapabilityStatus,
@{n='Purchased'; e={$_.PrepaidUnits.Enabled}},
ConsumedUnits,
@{n='Unassigned'; e={[math]::Max(0, $_.PrepaidUnits.Enabled - $_.ConsumedUnits)}} |
Sort-Object Unassigned -Descending

Two things to know before you trust the output. SkuPartNumber gives you names like SPE_E3 rather than “Microsoft 365 E3”, so map them against Microsoft’s product names and service plan identifiers list. And the list will include SKUs you never pay for: free, viral, and trial subscriptions, some with very large unit counts. Don’t multiply the Unassigned column by a price until you’ve filtered those out (there’s a full section on that below, because it trips up almost everyone the first time).

Schedule the script and you have a monthly snapshot. Keep the snapshots and you have a trend, which is the thing the admin center never gives you.

With Turbo360’s License Consumption document

If you’d rather not maintain a script, Turbo360 reads the same tenant data and writes it up for you. The License Consumption document summarizes every Microsoft 365 SKU in the tenant (paid, free-tier, and trial) along with the service plans bundled in each, and shows how licenses are allocated, what’s available, and where consumption lags behind assignment. Its Waste Overview section surfaces unused licenses ahead of renewal.

It also goes past the unassigned pool. The License Optimization document lists accounts that are disabled in Microsoft Entra ID but still hold active license assignments, with a summary by SKU and a per-user breakdown. That’s the “disabled but licensed” row from the table earlier, the seats that look assigned on every native report.

Method Best for Effort Separates paid from free and trial SKUs Catches disabled-but-licensed seats Output
Admin center (Billing > Licenses) Small tenants, one-off checks Low, but manual per product You judge it by eye No On-screen view
Graph PowerShell Admins comfortable scripting Medium to build, low to rerun Only if you add the filter Only if you extend the script CSV you build yourself
Turbo360 License Consumption and Optimization documents FinOps and IT teams reporting to finance before renewal Low after setup Yes Yes Shareable document

Why is your unassigned license count wrong?

Because the raw number mixes billable seats with free, trial, and tenant-level SKUs, and it can’t see paid seats sitting on blocked accounts. It overstates waste in some places and understates it in others.

Run the Graph query from the last section on any tenant older than a couple of years and something odd shows up near the top. A SKU with thousands of unassigned units. Nobody bought those.

So before the number goes anywhere near a finance deck, correct it in both directions.

What inflates the count

Free and viral SKUs. Microsoft drops placeholder SKUs into tenants for free and self-service offerings, and they carry huge unit counts. Microsoft’s own Power BI team explained that the 1,000,000 Power BI licenses some tenants see have no subscription behind them and aren’t billed; they exist to track the free offering. Power Automate Free (FLOW_FREE) behaves the same way, typically showing 10,000 units. One of these left in the calculation and your “waste” is suddenly bigger than your entire M365 bill.

Trials. Trial subscriptions show up alongside paid ones and look identical in the unassigned math. They cost nothing until someone converts them. Check Billing > Your products for anything marked as a trial and exclude it.

Tenant-level SKUs. Each subscribedSku has an appliesTo value of User or Company, and only SKUs targeting User can be assigned. A Company SKU will never have users attached, so counting it as unassigned is meaningless.

Seats you already owe to someone. If group-based licensing fails because a subscription ran out of seats, those users sit in an error state without a license. Then someone frees up a few seats, the available count ticks up, and it looks like spare capacity. It isn’t. Those seats belong to the people stuck in the error queue. Check the errors on the Licenses page before you call anything surplus.

A corrected version of the earlier query that handles the first three:

$freeSkus = @('FLOW_FREE','POWER_BI_STANDARD') # extend with your tenant's free SKUs

Get-MgSubscribedSku |
Where-Object { $_.AppliesTo -eq 'User' -and
$_.CapabilityStatus -eq 'Enabled' -and
$_.SkuPartNumber -notin $freeSkus } |
Select-Object SkuPartNumber,
@{n='Purchased'; e={$_.PrepaidUnits.Enabled}},
ConsumedUnits,
@{n='Unassigned'; e={[math]::Max(0, $_.PrepaidUnits.Enabled - $_.ConsumedUnits)}} |
Sort-Object Unassigned -Descending

Trials still need a manual check, since they don’t carry an obvious flag in this output.

And watch for SKUs whose capabilityStatus is Warning. Possible values are Enabled, Warning, Suspended, Deleted, and LockedOut, with LockedOut meaning the customer canceled the subscription. Warning seats are usually on a subscription that’s lapsing. Not waste to reclaim, but something to sort out before users lose access.

What hides from the count

This is the bigger problem.

A leaver whose sign-in is blocked still holds their license. Blocking sign-in doesn’t release it, so the seat counts as consumed and never appears in your unassigned number. Same with shared mailboxes that got a full license because they started life as a user account, and service accounts built from a template that came with E3 attached.

All of that is paid-for, unusable capacity. It just doesn’t look like it.

Finding the blocked-but-licensed accounts takes one query:

Get-MgUser -Filter "accountEnabled eq false" -All `
-Property DisplayName, UserPrincipalName, AssignedLicenses |
Where-Object { $_.AssignedLicenses.Count -gt 0 } |
Select-Object DisplayName, UserPrincipalName,
@{n='LicenseCount'; e={$_.AssignedLicenses.Count}}

In a lot of tenants this list is longer than the unassigned pool itself. Which means the real “spare seats” figure is something like: corrected unassigned, plus disabled-but-licensed, minus seats owed to group-licensing errors. That’s the number worth taking into a renewal conversation.

How do you reclaim unassigned licenses without breaking anything?

Reassign spare seats before buying new ones, convert leavers’ mailboxes to shared before removing their licenses, clear group-licensing errors, and strip standalone licenses that duplicate a suite. Then reduce the quantity at the next window.

Reclaiming is the easy part to get wrong. Pull a license off the wrong account and you’ve deleted a mailbox someone in legal was counting on. So go in this order.

1. Reassign before you buy

The cheapest seat is the one already on the invoice. Before anyone approves a new purchase, check the available count for that SKU. Sounds obvious, and yet in most tenants the license request goes straight to procurement and nobody looks at the pool.

Group-based licensing fixes most of this on its own. Assign E3 to a “Licensed – E3” group, add joiners to the group, and Entra pulls from whatever’s unassigned. New purchases only happen when the pool actually runs dry.

2. Convert leavers to shared mailboxes, then unassign

This is where most of the hidden seats from the last section get recovered. The order matters:

  1. Convert the user mailbox to a shared mailbox if anyone needs the mail.
  2. Check its size and whether it’s on hold.
  3. Move OneDrive content to the manager or an archive location.
  4. Remove the license.
  5. Keep sign-in blocked (or delete the account, if your retention policy allows).

Skip step 1 and remove the license from a user mailbox directly, and you’ve started the clock on that mailbox’s deletion. Don’t.

Step 2 is the one people forget. A shared mailbox doesn’t need its own license, but without one it’s capped at 50 GB. Taking it to 100 GB needs an Exchange Online Plan 2 license, and putting it on litigation hold needs either Plan 2 or Plan 1 with the Exchange Online Archiving add-on. So a 70 GB mailbox belonging to a departed sales director still needs a license after conversion. Just a much cheaper one than the E5 it was carrying.

What happens if you get it wrong? If an unlicensed shared mailbox grows past 50 GB, Exchange stops delivering mail to it until it’s brought back under quota or licensed. Annoying for a team inbox, worse for anything under a legal hold decision.

Already have shared mailboxes carrying full licenses from years of this? Find them:

Connect-ExchangeOnline
Get-EXOMailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited |
ForEach-Object {
$u = Get-MgUser -UserId $_.ExternalDirectoryObjectId -Property AssignedLicenses
if ($u.AssignedLicenses.Count -gt 0) {
[pscustomobject]@{
Mailbox = $_.PrimarySmtpAddress
Licenses = $u.AssignedLicenses.Count
SizeGB = (Get-EXOMailboxStatistics $_.PrimarySmtpAddress).TotalItemSize
}
}
}

Anything under 50 GB with no hold and no archive is a seat you can take back today. Room and equipment mailboxes licensed out of habit usually turn up in the same list.

3. Clear group-licensing errors

Errors look like a technical problem, but they’re also a counting problem. Users stuck in an error state (not enough seats, conflicting service plans, a missing usage location) aren’t consuming a license, which makes the pool look bigger than it is. Fix the cause in the Entra admin center, reprocess the group, and then see what’s genuinely left over.

4. Remove duplicates

A user holding Microsoft 365 E3 doesn’t need a standalone Exchange Online Plan 1 on top, because E3 already includes Exchange. Same goes for Business Premium users with a separate Entra ID P1. These pile up after migrations and mergers, when the old licenses never got cleaned out.

Unassign the standalone and it drops into its own unassigned pool. Worth remembering that it reduces at its renewal date, which is rarely the same as the suite’s. Turbo360’s License Optimization document flags these overlapping assignments per user, so you don’t have to cross-reference service plans by hand.

And then? You’ve freed up seats. You haven’t saved a cent yet. That depends entirely on when you’re allowed to reduce the quantity.

When can you actually reduce your Microsoft 365 seat count?

Only inside a short window tied to your purchase or renewal date. Unassigning a license frees the seat but doesn’t change the bill; the quantity has to be reduced on the subscription, and when you’re allowed to do that depends on how you buy.

This is the step that turns freed-up seats into money. It’s also where most cleanup efforts quietly fail, because the work gets done in month four and the window closed in week one.

The order is fixed. To reduce the number of licenses, you first unassign them from users, then remove them from the subscription. You can’t remove a seat someone is still holding. After that, the calendar decides everything.

Buying direct (MCA through the admin center). You can only remove licenses within seven days of buying or renewing the subscription. Reduce after that and the change appears on the first invoice after the renewal date. Prepaid subscriptions can’t have licenses removed at all.

Buying through a CSP on New Commerce. Annual commitments work the same way, with a twist. Licenses can be decreased only within seven days of when they were added, whether that’s the initial purchase, a renewal, or a mid-term add, and a reduction inside that window is refunded in full minus the prorated days used. Every mid-term add starts its own seven-day clock, so a tenant that topped up four times this year has four separate windows to track. Monthly-term subscriptions are more flexible and can come down at the monthly renewal, though you pay more per seat for that flexibility. The full rules are in Microsoft’s new commerce cancellation policy.

Enterprise Agreement. Slower still. Microsoft’s product terms made Office 365 services reduction-eligible, with a formal process to reduce users, but only at each anniversary. Reductions for Enterprise Online Services also require you to keep the agreement minimum, generally 500 user subscription licenses. Whether a given SKU qualifies sits in the Product Terms, so confirm with your licensing partner well before the anniversary.

How you buy When you can reduce What it means for unassigned seats
MCA, direct in the admin center (annual) Within 7 days of buying or renewing; later reductions land after renewal Have the cleanup done before renewal day, not after
CSP, New Commerce annual Within 7 days of purchase, renewal, or each mid-term add Track every add as its own window; reassign rather than add mid-term
CSP, New Commerce monthly At the monthly renewal Reduce next month; weigh the higher price against the flexibility
Enterprise Agreement At the enrollment anniversary only, if the SKU is reduction-eligible and you stay above the minimum Start the count months ahead; work with your LSP on the anniversary order

The practical rule falls out of the table. Run the unassigned cleanup 30 to 60 days before each subscription renews, and walk into the window with the new number already agreed. Turbo360’s License Consumption document fits right there in the calendar: generate it a month out and you’ve got the per-SKU numbers before anyone has to argue about them.

And keep a renewal calendar per subscription, not per tenant. E3, Copilot, Visio, and Teams Phone almost never renew on the same day.

Which raises the obvious next question: should the target be zero unassigned? No.

How do you stop unassigned licenses from piling up again?How do you stop unassigned licenses from piling up again?

Tie license assignment to role-based groups, release leaver seats the same day they leave, put a review date on every add-on and pilot, and give one owner the renewal calendar. Cleanup without those four things just resets the clock.

Every tenant that’s been cleaned up once has the same story. Big effort before renewal, seats come off, everyone moves on. Eighteen months later the available count is right back where it was.

That happens because the cleanup fixed the number and left the process alone.

Assign by group, keyed to role

Direct assignment is where drift starts. A helpdesk tech licenses a new starter by hand, copies whatever the last person in that team had, and nobody ever revisits it.

Group-based licensing in Entra ID flips that. Build groups by role (knowledge worker, frontline, finance with Visio, whatever your real populations are), attach the license to the group, and let membership do the rest. Dynamic groups driven by HR attributes like department or employee type take it a step further: when someone moves teams, their license changes with them. When they leave the group, the seat goes back to the pool.

One catch. Users who have both a group license and an old direct assignment of the same SKU keep the direct one when they leave the group. Clear out the direct assignments once you’ve moved a population onto groups, or the automation only half works.

Make the leaver step same-day

The disabled-but-licensed pile from earlier in this guide is almost entirely a timing problem. Accounts get blocked on the last day, and the license removal waits until someone gets around to it.

So wire it to HR. Termination date hits, and a workflow converts the mailbox to shared, hands OneDrive to the manager, and removes the user from their licensing groups. Entra ID Governance’s lifecycle workflows can do this natively (it’s licensed separately), or you can build it in Logic Apps or Power Automate if that’s what your team already runs.

Then measure it. Days from leave date to seat reclaimed. If that number is over a week, the buffer math from the last section is working against you.

Put an expiry on anything that isn’t core

Copilot pilots, Visio for a process-mapping project, Power BI Pro for a reporting push, Project for a program office. These all start with a real need and an end date nobody writes down.

Give every add-on assignment a review date when it’s granted. Sixty to ninety days is reasonable. At review, the business owner confirms the need or the seat goes back. Running access reviews on the licensing groups makes this mostly self-service, since owners get prompted instead of IT chasing them.

Gate new purchases on the pool

Simple rule: no new seats for a SKU while its unassigned count is above the agreed buffer. Procurement checks the number before raising the order. Takes thirty seconds and stops most of the problem at source.

Give the renewal calendar to FinOps

This one’s less obvious, but it’s where Azure-heavy organizations already have an advantage.

Your FinOps team probably tracks reservation and savings plan expiries on Azure already. They know what a commitment window is, they review utilization before renewing, and they don’t let a three-year reservation auto-renew without a look. M365 subscriptions are the same kind of commitment with shorter windows. Put them on the same calendar, under the same owner, reviewed with the same discipline.

Turbo360 makes that easier because it’s one place for both: Azure cost data and the M365 license documents sit side by side, so the team reviewing reservation coverage in a given month can see which M365 subscriptions renew next.

What should that team actually be tracking, though? A handful of numbers.

Which Microsoft 365 license metrics should FinOps teams track?

Five numbers cover it: seat utilization rate, unassigned seats above buffer (in seats and dollars), disabled-but-licensed count, days to reclaim a leaver’s seat, and add-on activity rate. Track them monthly per SKU and review them before every renewal.

You don’t need a dashboard with forty tiles. You need a few numbers that someone owns and that move when the process improves.

Metric How to calculate it What it tells you Direction
Seat utilization rate Seats assigned to enabled accounts ÷ purchased paid seats How much of what you pay for is actually attached to a working user Up, toward 100% minus buffer
Unassigned above buffer (Corrected unassigned − agreed buffer) × list or contract price The real waste figure, in money, ready for the renewal conversation Down
Disabled-but-licensed count Blocked accounts holding one or more licenses Seats that look used and aren’t Down, ideally near zero
Days to reclaim Leave date to license removed, averaged per month Whether the leaver process actually works Down, under a week
Add-on activity rate Add-on seats with activity in the last 90 days ÷ assigned add-on seats Whether Copilot, Visio, Power BI Pro and similar are earning their keep Up

A couple of notes on reading these.

Seat utilization should use enabled accounts in the numerator, not just assigned seats. Otherwise the disabled-but-licensed pile counts as “utilized” and the number flatters you.

And the first and third metrics tend to move against each other when you start. Clean up blocked accounts and the disabled count drops, but the unassigned pool jumps, because all those seats just came back. That’s fine. It’s the honest number finally showing up. Watch the trend over two or three months, not the first reading.

The last row is technically the unused-license problem rather than the unassigned one. It belongs here anyway, because add-ons are where a seat quietly slides from “assigned and used” to “assigned and forgotten” to “unassigned” without anyone deciding anything.

Tools for managing unassigned Microsoft 365 licenses

Native tools (the admin center, Entra, and Graph PowerShell) are enough to find unassigned seats. Third-party tools earn their place when you need the corrected number, the hidden seats, and a report finance can act on, on a schedule, without maintaining scripts.

Roughly four options, depending on who’s asking the question.

Native Microsoft tools. The admin center and Entra show assigned and available per product, and Graph PowerShell gives you everything in this guide if you’re willing to build and maintain it. Free, accurate, and entirely manual. Fine for small tenants or a one-off cleanup.

M365 administration tools. Products like CoreView, ShareGate, AdminDroid, and Syskit sit on top of the tenant for admins: delegated administration, reporting, governance. Strong when the main problem is running the tenant, with licensing as one part of it.

SaaS management platforms. Torii, Zluri, and similar tools treat Microsoft 365 as one app among hundreds. Useful if your problem is SaaS sprawl across vendors. Less depth on M365-specific mechanics like service plans and group-licensing errors.

Turbo360. Built for teams that already run FinOps on Azure. It reads the tenant’s license and service plan data and produces three documents: License Consumption (every SKU, paid, free, and trial, with a waste overview), License Optimization (disabled users with licenses, inactive users, overlapping assignments, consolidation opportunities), and a Service Plan Matrix. The point isn’t another admin console. It’s that the same team looking at Azure reservation coverage and cost anomalies can see M365 seat waste in the same place, before the same renewal meetings.

If that’s the team you’re on, see how Turbo360’s Office 365 License Optimization works.

FAQ

Do unassigned Microsoft 365 licenses cost money?

Yes. Microsoft bills on the number of licenses purchased on a subscription, not the number assigned to users. An unassigned seat costs exactly the same as one in daily use, every month, until the quantity is reduced.

How do I see how many unassigned M365 licenses I have?How do I see how many unassigned licenses I have?

In the Microsoft 365 admin center, go to Billing > Licenses; each product shows its assigned and available counts. For a tenant-wide view, query subscribed SKUs in Microsoft Graph and subtract consumed units from enabled prepaid units for each SKU, excluding free, trial, and company-level SKUs.

Why does my tenant show thousands of unassigned M365 licenses?Why does my tenant show thousands of unassigned licenses?

Usually because of free or viral SKUs. Microsoft has explained that placeholder licenses like the 1,000,000 Power BI free licenses some tenants see have no subscription behind them and aren’t billed. Power Automate Free behaves similarly. Exclude these before calculating waste.

What’s the difference between unassigned and unused M365 licenses?What’s the difference between unassigned and unused licenses?

An unassigned license is a purchased seat attached to no user. An unused license is assigned to a user who isn’t using the service. Both cost money, but unassigned seats show up in the available count while unused ones only show up in usage reports and last-activity data.

Does blocking a user’s sign-in free up their M365 license?Does blocking a user’s sign-in free up their license?

No. A blocked account keeps its licenses and the seat stays billed and counted as assigned. Convert the mailbox to shared if the mail needs to be kept, then remove the license.

Can I get a refund for unassigned licenses?

Only inside the reduction window. On New Commerce through a CSP, reductions within seven days of a purchase, renewal, or mid-term add are refunded in full minus the prorated days used. Outside that window, the seats stay on the bill until the next renewal.

When can I reduce my Microsoft 365 license count?

It depends on how you buy. On an MCA billing account, you can remove licenses within seven days of buying or renewing; after that, the change takes effect after the renewal date. CSP monthly-term subscriptions can be reduced at the monthly renewal, and Enterprise Agreement reductions happen at the enrollment anniversary, subject to the product terms.

What happens to a M365 license when I delete a user?What happens to a license when I delete a user?

The license is released back to the subscription and shows up as unassigned. You keep paying for it until you assign it to someone else or reduce the subscription quantity in an allowed window.

Do unassigned Copilot licenses cost money?

Yes, at the full add-on price. Microsoft 365 Copilot lists at $30 per user per month on an annual commitment, so 40 unassigned seats cost $1,200 a month whether or not anyone uses them.

How many unassigned M365 licenses should I keep?How many unassigned licenses should I keep?

Enough to cover joiners during your purchase lead time, minus leaver seats you reclaim in the same period, plus a week of joiners as safety. With a same-day leaver process, that’s typically a small number of seats per SKU rather than a percentage of the estate.

Advanced Cloud Management Platform - Request Demo CTA

Related Articles