Back to blogMETHODOLOGY

Your Invoice Hides Three Seat Counts

By SeatCompress Team·October 12, 2026·7 min read
Your Invoice Hides Three Seat Counts

The invoice shows one number. One line, one seat count, one total. Under that single number sit three different seat counts that almost never agree, plus a fourth number the invoice never mentions at all. The gaps between them are where the wasted spend lives, and reading them in the wrong order is how finance teams anchor a renewal on the wrong figure. Here is what the three counts are, which one you negotiate from, and which one you divide the bill by.

The three counts, plus the one that matters most

Contracted seats. What the contract commits you to. This is the number in the signed agreement, the one you extract from the PDF: you agreed to 1,000 seats at this rate for this term. It is a promise, not a headcount. You owe it whether or not anyone logs in.

Provisioned seats. What your identity provider says is assigned. Okta, Azure AD, or Google Workspace knows how many people have the app in their launcher. This is an operational number that IT controls, and it drifts as people join, leave, and change roles.

Billed total. The count the invoice actually divides into. Usually this equals contracted, because you are invoiced for what you committed to. Sometimes it does not, and that gap matters for the per-seat rate.

Then the number the invoice omits: active seats, who actually logged in over the trailing period. Your IdP or the app's own usage export knows this. The invoice does not, because vendors have no incentive to print it.

The headline a CFO wants is simple: wasted spend equals contracted minus active. You are paying for seats you committed to and nobody is using. Everything else is detail about where in the chain the waste accumulated.

The single source of truth

We resolve these four numbers into one negotiation anchor with a single helper, used everywhere in the product so no two screens ever disagree:

resolveSeats(t) = contractedSeats ?? provisionedSeats ?? totalSeats

Contracted wins when it exists, because that is what you are billed for and what you renegotiate down from. Provisioned is the fallback when there is no contract on file (an IdP-only customer). The legacy total is the last resort. The waste math and every downstream consumer (dashboard, PDF, renewal alerts, peer benchmarks) reads through this resolver, so the negotiation anchor is consistent whether you are looking at a chart or a renewal email.

There is one deliberate exception, and it is the part most people get backwards. The per-seat cost does not divide by the negotiation anchor. It divides by the billed total, because that is the number the invoice divides into. If your monthly bill is $100,000 for a billed total of 1,000 seats, your per-seat rate is $100. Divide that same $100,000 by your 620 active seats and you get $161, which is not a rate anyone quoted you or will honor. The invoice divides into the billed count, so the rate does too. We keep that denominator on the raw billed number on purpose, even while every other consumer reads the resolved anchor.

Worked example: when the three numbers disagree

Take an enterprise with 15,000 employees and one Salesforce deployment. The catalog reference rate is $100 per seat per month. The three counts come back like this:

  • Contracted: 1,000 seats (the signed commit)
  • Provisioned: 850 seats (what Okta shows assigned)
  • Active: 620 seats (logged in over the last 30 days)

You are billed for the contracted 1,000, so the billed total is 1,000 and the monthly cost is $100,000. Per-seat rate: $100,000 divided by 1,000, which is $100. That rate is correct regardless of how many people log in, because the invoice does not care about logins.

Now read the gaps.

Contracted 1,000 minus provisioned 850 equals 150 seats. These are seats you committed to that IT has not even handed out. Nobody has them assigned in the IdP. You are paying for 150 licenses that are not in anybody's launcher. At $100 a seat for twelve months, that is $180,000 a year of pure overcommit, and it is the most embarrassing gap to explain in a renewal because there is no usage story at all. You bought them and shelved them.

Provisioned 850 minus active 620 equals 230 seats. These are assigned to real people who do not log in. This is the classic dormant-license gap: a seat sitting in someone's launcher that they opened twice in March and never again. At $100 for twelve months, that is $276,000 a year.

Contracted 1,000 minus active 620 equals 380 seats of total waste, or $456,000 a year. The two gaps above sum to it exactly: $180,000 of overcommit plus $276,000 of dormant licenses. That $456,000 is the headline number, and the wasted-seat framing is why the combination of contract data and IdP data is worth more than either alone.

What each gap tells you to do

The two gaps are not the same problem and do not get the same fix.

The 150 overcommit seats are a renewal problem. You cannot claw them back mid-term; you committed to them. But at renewal you refuse to recommit to seats that were never provisioned. There is no adoption case to make, no "we are ramping" story to counter, because the seats never left the shelf.

The 230 dormant seats are a governance problem first and a renewal problem second. Some of those 230 are reclaimable now if the contract lets you flex down, and all of them are ammunition at renewal. Pull the login data, confirm the seats are genuinely idle rather than seasonal, and you have a documented case. The 30-second IdP audit is the fastest way to produce that list.

The renewal ask falls out of the active number. With 620 people actually using Salesforce, a defensible ask is to drop the commit to roughly 700, giving you an 80-seat buffer for growth above current usage. That is a 300-seat reduction from 1,000. At $100 for twelve months, the theoretical value is $360,000 a year. Our engine discounts renegotiations to half in year one, because vendors push back and minimums hold, so the realistic year-one number is $180,000. That is the figure that goes in the board deck, not the $360,000 ceiling.

When the billed total is its own number

In the example above the billed total equalled the contracted count. It does not always. Two common cases split them apart.

IdP-billed tools. Some vendors true up your bill to provisioned seats rather than a fixed contract commit. In that case the billed total tracks provisioned, and the per-seat denominator moves with it. The rate stays honest because it still divides into whatever the invoice charges.

Mid-term true-ups. You contracted 1,000, added 50 seats in month seven under an expansion clause, and now the invoice divides into 1,050 even though the base commit reads 1,000. The billed total is 1,050, the negotiation anchor is still the contracted base, and the two numbers coexist without contradiction because they answer different questions. The anchor answers "what am I renegotiating." The denominator answers "what is my rate right now."

The reason to keep all three counts distinct rather than collapsing them into one "seats" field is that they come from different sources, drift at different speeds, and answer different questions. The contract owns the left side of the wasted-spend equation. The IdP owns the right side. Neither one alone produces the $456,000 headline. The whole point of putting them side by side is that the gaps become visible, and unused seats stop being the only metric you look at. Open your IdP, pull the active count against the contracted count on every per-seat tool, and read the two gaps. The overcommit is your renewal spine. The dormant licenses are your governance backlog. The sum is the number the invoice worked hard to hide.

Find your savings number in 30 seconds.

No signup, no credit card. Get the number, screenshot it, and decide if your CFO needs to know about us.