What you actually pay for in Azure DevOps
Azure DevOps charges per user, per access level. Two of those levels cost money; the rest don't. Knowing the difference is the whole game, because most waste hides in paid seats that should be on a free level — or on no seat at all.
| Access level | Cost | Notes |
|---|---|---|
| Stakeholder | Free | Limited access — work items, dashboards |
| Basic | ~$6/mo | Full features except Test Plans |
| Basic + Test Plans | ~$52/mo | Adds test-case management & test execution |
| Visual Studio subscriber | Free* | Covered by an existing VS subscription |
*A user with a Visual Studio subscription is entitled to Basic-level access at no extra Azure DevOps charge. If they're assigned a paid Basic seat anyway, you're paying twice.
The three sources of Azure DevOps license waste
Every dollar of recoverable spend falls into one of three buckets. The first two are firm — you can act on them today. The third needs a quick human check.
1. Inactive paid seats (firm waste)
Azure DevOps records a last-access date for every user under Member Entitlement Management. A paid user (Basic or Basic + Test Plans) who hasn't accessed the org in six months or more — or has never accessed it at all — is almost certainly recoverable spend. These are people who left, changed teams, or were provisioned "just in case."
2. Trending-stale seats (near-term risk)
Paid users inactive for three to six months are on the way to becoming firm waste. They're worth a review now, before another two quarters of spend go out the door.
3. Over-tiered seats (contingent savings)
Basic + Test Plans costs roughly nine times what Basic costs. Any active Basic + Test Plans user who isn't actually authoring or running test plans is over-tiered. Downgrading them to Basic keeps their access intact and cuts ~$46/user/month. This one needs a quick check of who genuinely uses Test Plans — hence "contingent."
| Finding | Action | Annual recovery |
|---|---|---|
| 15 paid seats inactive 6+ months | Revoke | ~$18,000 |
| 10 paid seats 3–6 months stale | Review & revoke | ~$13,000 |
| ~8 over-tiered Basic + Test Plans | Downgrade to Basic | ~$5,000 |
That's roughly $36,000/year — about 27% of paid ADO spend — on a mid-size org, recovered without a single person losing the access they actually use. Recovery of 25–33% of paid spend is typical.
A phased plan that won't break active work
- Phase 1 — Revoke (days 0–30): remove paid seats inactive 6+ months and never-accessed users. Firm savings, low risk.
- Phase 2 — Right-size (days 30–60): review 3–6 month stale seats, and downgrade over-tiered Basic + Test Plans users to Basic.
- Phase 3 — Prevent recurrence (days 60–90): set a recurring review so reclaimed seats don't quietly refill. Waste is a flow, not a one-time cleanup.
How to do this without a spreadsheet marathon
You can pull user entitlements and last-access dates from the Azure DevOps API yourself and reconcile them by hand each quarter. Or you can point a tool at the org and have the whole picture — every paid seat, its tier, its months of inactivity, and a phased savings plan — in a few minutes.
See your recoverable Azure DevOps spend — free
HALA scans your Azure DevOps org with a read-only token and names every recoverable seat, with a phased 30/60/90-day plan. The headline scan is free.
Run a free audit →Frequently asked questions
How much does an Azure DevOps license cost?
Basic is about $6/user/month and Basic + Test Plans is about $52/user/month. Stakeholder access is free, and users covered by a Visual Studio subscription get Basic-level access without a paid seat.
How do I find inactive Azure DevOps users?
Azure DevOps records a last-access date for every user under Member Entitlement Management. Paid users inactive for six months or more (or never accessed) are the clearest candidates to revoke; three-to-six-month inactivity is trending stale.
Will revoking a license delete someone's work?
No. Removing or downgrading a user's access level does not delete their work items, commits, or history — it only changes what they can do going forward. That's why revoking inactive seats is low-risk.
How much can I typically save?
25–33% of paid Azure DevOps spend is recoverable in a typical audit, across inactive, never-accessed, and over-tiered seats.