You get the count that actually moves a renewal: accounts that exist, accounts used in the last 90 days, and accounts still held by people who left. It comes from the access data you already have, not from the invoice.
Which reframes the problem. Licence waste is not a procurement failure. It is an offboarding failure that arrives on an invoice.
Someone leaves, their Salesforce seat is never released, and you pay for it every month until the renewal, when somebody negotiating the contract notices the count is higher than headcount.

Zugewiesene gegen tatsächlich genutzte Lizenzen. Die Differenz ist das Geld.
Why access data is better than spend data
SaaS management tools infer usage from expenses and SSO login events. That is a reasonable proxy and it is still a proxy.
Iden knows who holds which seat because it granted it, and knows whether they have opened it because the connector reports last activity. Assigned against used is a fact, not an estimate, and the gap between them is the money.
Where it actually accumulates
Leavers. The largest single source, and the one that keeps compounding because nothing revisits it.
Role changes. Somebody moves teams, gets the new tool, keeps the old one. Every mover is a potential duplicate seat.
Tier drift. Bought at the enterprise tier for one feature nobody now uses, on a plan that renewed twice.
Trials that became line items. Somebody signed up, the team adopted it, it never went through procurement, and now it is on a card.
What to do with the number
Reclaim the obvious ones automatically: a leaver's seat should never survive their offboarding, and that is a lifecycle fix rather than a finance one.
Surface the rest with evidence. A seat unused for 90 days is a conversation, not a decision, because sometimes the answer is that the person is on parental leave.
What still needs a person
The renewal. Knowing you have forty unused Salesforce seats is useful 3 months before the contract date and nearly worthless 3 days after it, and no tool makes that call for you.