4 Ways to Check License Count in Microsoft 365

Need a quick way to check Microsoft 365 license counts without second‑guessing totals? Whether you’re reconciling invoices, auditing assignments, or planning renewals, the right view saves time and avoids surprise overages.
This guide covers four options, Microsoft 365 admin center, Entra ID (Azure AD), PowerShell, and Microsoft Graph, to verify assigned and available SKUs and confirm subscription totals. Still, each method fits different workflows, so you’ll know what to use when.
Table of Contents
Use Microsoft 365’s UI
Here, you’ll use the Microsoft 365 admin center to see how many licenses you own, how many are assigned, and how many are still open. These steps follow Microsoft’s “View and manage licenses in the Microsoft 365 admin center” guidance.
Open the Microsoft 365 admin center
Sign in at admin.microsoft.com with an account that can view licenses. Global admin, Billing admin, or License admin roles work best.
Go to Billing > Licenses
In the left navigation, select Billing, then Licenses. The Licenses page lists every product (SKU) your organization has.
Read your license counts
On the Licenses page, look across each product row. You’ll see columns for:
- Total licenses: the number you’ve purchased for that product.
- Assigned: how many are now given to users.
- Available: how many are still unassigned.
If you need to confirm the math:
Available should equal Total minus Assigned.
Drill into a product for more detail
Click the product name to open its details. Here you can:
- View a quick summary of assigned and available licenses.
- Select Licensed users to see who holds a license for that product.
If you don’t see the Licenses page
You might not have the right permissions or your view is limited by role. Ask a Global admin, Billing admin, or License admin to check, or have them grant you the proper role.
Use Torii
Instead of checking Microsoft 365 directly, you can use Torii, a SaaS Management Platform, to see your Microsoft 365 license totals. SMPs centralize all your SaaS subscriptions in one place, giving you a single source of truth across your tools.
To view license counts for Microsoft 365 from Torii, do the following:
1. Sign up for Torii
Contact Torii, and request a free two-week proof-of-concept.
2. Connect your Microsoft 365 account to Torii
After your account is active, link Microsoft 365 to Torii (assuming you already have an account). Here are the instructions for the Microsoft 365 integration.
3. Search for Microsoft 365 within Torii
Use the search bar at the top of the Torii dashboard to find Microsoft 365. Open the Microsoft 365 page to view details such as total licenses, spend, upcoming renewal date, and more.

Or, chat with Eko
Torii’s AI assistant, Eko, also lets you retrieve Microsoft 365 details inside Torii using natural-language chat. Click the Eko icon in the bottom-right corner of the dashboard, then ask it to pull Microsoft 365 information. Eko will return the relevant data right in the chat window.

Use Microsoft 365’s API
Here, you’ll call Microsoft Graph to list your tenant’s subscribed SKUs and compute total, assigned, and available seats. This follows Microsoft Graph’s “List subscribedSkus” guidance.
Set permissions and get an access token
You need an access token for Microsoft Graph. The Microsoft identity platform’s OAuth 2.0 client credentials flow works well for server-to-server jobs.
- Required Microsoft Graph permissions:
- Application: Organization.Read.All or Directory.Read.All
- Delegated: Organization.Read.All or Directory.Read.All
Example curl to get a token with client credentials is:
TENANT_ID=""
CLIENT_ID=""
CLIENT_SECRET=""
ACCESS_TOKEN=$(curl -s -X POST "https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-D "client_id=$CLIENT_ID&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=$CLIENT_SECRET&grant_type=client_credentials" \
jq -r '.access_token')
If you’re using delegated flow, sign in a user and request the same Graph scopes, then capture the issued access token.
List subscribed SKUs and see seat counts
Call the Graph endpoint that returns your products and seat numbers. The response includes prepaidUnits and consumedUnits, which you’ll use to compute what’s available.
Example curl is:
curl -s -X GET "https://graph.microsoft.com/v1.0/subscribedSkus" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"
A trimmed sample response looks like:
{
"value": [
{
"skuId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"skuPartNumber": "ENTERPRISEPACK",
"capabilityStatus": "Enabled",
"consumedUnits": 125,
"prepaidUnits": {
"enabled": 150,
"suspended": 0,
"warning": 0
},
"servicePlans": [
{ "servicePlanId": ".", "servicePlanName": "EXCHANGE_S_FOUNDATION", "provisioningStatus": "Success" }
]
}
]
}
- Key fields:
- skuPartNumber: product code, for example ENTERPRISEPACK
- prepaidUnits.enabled: total purchased and active seats
- consumedUnits: seats assigned to users
Calculate available seats per SKU
Available seats are simply enabled minus consumed. You can compute that in your client code or with a quick jq filter.
Example jq to summarize:
curl -s -X GET "https://graph.microsoft.com/v1.0/subscribedSkus" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
jq -r '
.value[]
{
product: .skuPartNumber,
total: (.prepaidUnits.enabled // 0),
assigned: (.consumedUnits // 0),
available: ((.prepaidUnits.enabled // 0) - (.consumedUnits // 0))
}'
This gives you a clean list of products with total, assigned, and available counts. If prepaidUnits.warning or prepaidUnits.suspended are nonzero, those represent seats not now usable. Stick to prepaidUnits.enabled for the active total.
(Optional) Reconcile assignments by user
If you need to audit who holds which licenses, read users and inspect assignedLicenses. This uses Microsoft Graph’s Users API.
Example curl is:
curl -s -X GET "https://graph.microsoft.com/v1.0/users?$select=id,userPrincipalName,assignedLicenses&$top=999" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "ConsistencyLevel: eventual"
You can then group by assignedLicenses[].skuId in your code to count holders of a specific product. This is helpful if your consumedUnits don’t match expectations and you need to track down over-assignment.
What to remember
- The authoritative counts come from subscribedSkus in Microsoft Graph.
- Fields to use: prepaidUnits.enabled for total active seats, consumedUnits for assigned seats, and enabled minus consumed for available seats.
- The relevant Microsoft docs are “List subscribedSkus” in Microsoft Graph and the Microsoft identity platform OAuth 2.0 flows for obtaining tokens.
Use Claude (via MCP)
You can also retrieve this data directly from Claude using the Model Context Protocol (MCP). Claude is Anthropic’s AI assistant and a competitor to ChatGPT.
To pull Microsoft 365 license counts directly in Claude, follow these steps:
1. Set up Torii
Follow the above Torii steps to connect your Microsoft 365 account to Torii.
In your Torii settings, generate a new API key.
2. Set up MCP in Claude
Here are the Torii MCP instructions. There is also a blog post on the topic.
Install the Claude Desktop app and add the following to your claude_desktop_config.json
file:
{
"mcpServers": {
"Torii MCP": {
"command": "env",
"args": [
"TORII_API_KEY=YOUR_API_KEY",
"npx",
"@toriihq/torii-mcp"
]
}
}
}
Create this API key from the Settings tab in Torii.
3. Chat with Claude
Once configured, you can interact with your Torii environment right inside Claude. For example, ask it to review your Microsoft 365 tenant and provide license counts, total spend, upcoming renewal dates, and other relevant details.

Frequently Asked Questions
Use four options: Microsoft 365 admin center (Billing > Licenses), Torii SaaS management (connect M365 and use Eko chat), Microsoft Graph subscribedSkus API, or Claude via Torii MCP. Choose based on role, automation needs, and auditing requirements.
Global admin, Billing admin, and License admin can view license counts in the Microsoft 365 admin center. If you lack access, request one of these roles from your tenant's administrator to see Billing > Licenses and product-level assigned, total, and available counts.
Call the subscribedSkus endpoint and use prepaidUnits.enabled minus consumedUnits to compute available seats per SKU. Prefer prepaidUnits.enabled for active totals; account for prepaidUnits.warning or suspended if nonzero since those reduce usable seats.
Yes. Use Microsoft Graph to list users ($select=id,userPrincipalName,assignedLicenses&$top=999), include ConsistencyLevel when querying, then group assignedLicenses[].skuId to count holders. This approach reconciles consumedUnits with actual assignments and helps locate over‑assigned or unexpected licenses.
For server-to-server use the OAuth 2.0 client credentials flow and an app with Organization.Read.All or Directory.Read.All application permissions. Delegated scenarios also need Organization.Read.All or Directory.Read.All. Then request a token and call the Graph subscribedSkus endpoint.
Torii centralizes SaaS subscriptions; connect Microsoft 365 to see totals, spend, and renewal dates in one dashboard. Torii's Eko AI lets you ask natural-language questions to retrieve license counts and details instantly, speeding audits and reducing manual admin center checks.