How to find and reclaim unused Salesforce licenses

Unused Salesforce licenses hide in five places: people who stopped logging in, frozen accounts, integrations sitting on full seats, add-on and app seats held by people who left, and seats nobody was ever given. Here's how to find each one, and what reclaiming them does (and doesn't do) to your bill.

By Pratik Poddar · Updated 23 October 2026 · About 8 minutes

1. Active users who don't log in

Start with active users who have no recent login: leavers nobody deactivated, people who moved teams, pilot users who never adopted. Query active users whose last login is older than your threshold, or blank:

SELECT Id, Name, Username, Profile.UserLicense.Name, LastLoginDate, CreatedDate
FROM User
WHERE IsActive = true
  AND (LastLoginDate < LAST_N_DAYS:90 OR LastLoginDate = null)

Pick one threshold (60 or 90 days are common choices) and apply it to everyone. Then remove people on leave and anyone created in the last few weeks before you act.

Look at how people logged in, too. Salesforce's login history covers the past 6 months and includes logins through the API. A user whose only recent logins are API calls from one application is not a person using Salesforce; it's an integration, which leads to the next bucket. Our license audit guide has the LoginHistory query.

2. Integration users on full Salesforce seats

Integrations (your ERP sync, marketing tool, data warehouse loader) often run as a regular user with a full Salesforce license, because that's how they were set up years ago. Salesforce now has a license built for this. Its documentation describes the Salesforce Integration license as one that "grants access to Salesforce data and features only through the API" and is "designed for system-to-system integrations." It can't be used by people who need the user interface.

Salesforce's license table says five Salesforce Integration user licenses are included in each Enterprise, Unlimited and Performance Edition org (one in Developer Edition), and more can be bought. If you have integrations on full seats and unused Integration licenses, moving them can free full seats. Test each integration in a sandbox first: the integration profile restricts the user to API access and you'll need to grant it the object permissions it actually uses.

3. Frozen users

Freezing is designed for the gap between "this person can't log in any more" and "we've finished cleaning up their account", for example when the user is referenced in a custom hierarchy field and can't be deactivated yet. The catch is in Salesforce's own words: "Freezing user accounts doesn't make their user licenses available for use in your organization. To make their user licenses available, deactivate the accounts."

SELECT UserId, IsFrozen FROM UserLogin WHERE IsFrozen = true

Reading UserLogin needs the Manage Users permission. Every active user on that list still holds a paid seat.

Freezing vs deactivating, side by side

FreezeDeactivate
User can log inNoNo
User license becomes availableNoYes: a deactivated user doesn't count against available user licenses
Your bill goes downNoNo, not by itself. You're billed for the licenses on your contract
Records and historyUnchangedKept; ownership stays until you transfer it
Managed package seatsStill assignedStill assigned until you remove them
Can be undoneYes (Unfreeze)Yes (reactivate), if a license is free

You can't delete Salesforce users at all. Salesforce explains that deleting could orphan records, so deactivation is the end state.

4. Package and add-on seats held by the wrong people

AppExchange apps you license per seat, and add-ons sold as permission set licenses, have their own counts separate from the main user license.

  • Managed package seats. Salesforce documents that a deactivated user "will continue to count against the available licenses associated to managed packages that were previously assigned to the user." To free the seat, go to Setup › Installed Packages, click Manage Licenses next to the package, and click Remove next to the inactive user.
  • Permission set licenses. Check PermissionSetLicense (Total vs Used) and who holds each one. Salesforce recommends removing permission set and permission set group assignments after you deactivate users. One exception worth knowing: since August 2026, Salesforce says permission set licenses for Salesforce CPQ, Salesforce Billing and Advanced Approvals are released automatically when the user is deactivated.

5. Seats nobody holds

On Setup › Company Information, any license with Remaining greater than zero is paid for and unassigned (allow up to 24 hours for counts to refresh after changes). The same check applies to permission set licenses and to PackageLicense (AllowedLicenses minus UsedLicenses).

A safe reclaim process

  1. Confirm. Send each manager the list of their people and ask for a yes or no. Silence isn't a yes.
  2. Freeze first if you need time. It blocks login immediately and is easy to undo.
  3. Transfer ownership of records, reports, dashboards and scheduled jobs the person owns. Salesforce recommends transferring ownership before deactivating a user who owns more than 10,000 records of an object.
  4. Deactivate. This frees the user license for someone else.
  5. Remove leftovers: package seats, permission set licenses, permission sets and groups.
  6. Reuse the seat for your next hire instead of buying a new one.

What reclaiming does to the bill

Be clear with finance about timing. Salesforce's standard Main Services Agreement says that, unless your order form says otherwise, "quantities purchased cannot be decreased during the relevant subscription term." Salesforce's help also notes that deactivating a user "doesn't reduce the number of licenses for which your organization is billed."

So reclaiming seats saves money in two ways: you stop buying new seats mid-term because you can reuse freed ones, and you go into renewal with evidence for a lower count. The renewal itself has its own catches, including re-pricing when volume drops. See our renewal negotiation guide.

Some "unused" seats are really "overpowered" seats: people who only use custom apps, accounts, contacts and reports may fit a cheaper license. See Sales Cloud vs Platform license.

Find every unused seat in one pass

RenewalReady reads users, login history, user licenses, permission set licenses, package seats and frozen users, read-only, and lists each unused seat by name with a monthly and yearly cost. It recommends; you decide what to change.

Run a free scan

FAQ

What counts as an unused Salesforce license?

A paid seat that isn't delivering value: assigned to someone with no human login in your chosen window, assigned to a frozen user, held by an integration that could use a Salesforce Integration license, an add-on or package seat held by an inactive user, or a license nobody is assigned to.

Should I freeze or deactivate a user who left?

Freeze straight away to block access if you need time to clean up, then deactivate. Only deactivation makes the user license available again.

Will deactivating users lower my Salesforce invoice?

Not by itself. Salesforce bills for the licenses on your contract, and standard terms don't allow reducing quantities mid-term. Freed seats can be reused, and the evidence supports a lower count at renewal.

Can I delete a Salesforce user?

No. Salesforce only allows deactivation, which removes login access but keeps the user's records and history.

Sources

  1. Salesforce Help, Standard User Licenses (Salesforce Integration license)
  2. Salesforce Help, Give Integration Users API Only Access
  3. Salesforce Help, Freeze or Unfreeze User Accounts
  4. Salesforce Help, Deactivate Users
  5. Salesforce Help, Considerations for Deactivating Users
  6. Salesforce Help, Delete Users
  7. Salesforce Help, Inactive users assigned package licenses (000386472)
  8. Salesforce Help, Revenue Cloud permission set licenses on deactivation (000394412)
  9. Salesforce Help, Manage Licenses for Installed Packages
  10. Salesforce Help, Monitor Login History
  11. Salesforce Main Services Agreement (October 15, 2026), section 5.1