## TL;DR
Seats are counted three times: provisioned in the directory, active in the product, and billed on the invoice. When the counts diverge, one ledger changed definition: deprovisioned users still billed, active users hidden by an identity merge, or a billing sync that stopped reading seat changes. Reconcile all three per account and fix the ledger that drifted.

```text
seat count declining but billing unchanged: data mismatch error
```

## Use this when
- Active seats trend down while the billed seat count is flat
- The gap grows over time rather than jumping once
- Finance and CS are quoting different seat numbers

## Not for this skill when
- A contract amendment froze billing on purpose
- The customer confirmed a headcount reduction not yet billed

## Steps
1. Export provisioned, active, and billed seats per account for the same date and join them. Verify: every account with a divergence and its size is listed
2. For the largest divergence, trace five users end to end through directory, product, and invoice. Verify: the ledger where those users disappear or linger is identified
3. Check the seat sync job and the identity-merge rules for changes in the divergence window. Verify: the sync failure or merge rule behind the drift is named
4. Repair the sync or merge rule, re-run the reconciliation, and issue corrected seat counts to CS and finance. Verify: all three ledgers agree or carry a documented, dated exception
5. Schedule the three-way reconciliation weekly with an alert past a small variance threshold. Verify: future drift surfaces in days, not at renewal

## Variant phrasings
### seats declining but invoice unchanged
A related phrasing for the same underlying problem.
### seat count mismatch billing vs product
A related phrasing for the same underlying problem.
### provisioned active billed seats diverge
A related phrasing for the same underlying problem.

Compatibility: Compatibility: identity directories (Okta, Google Workspace), product seat tracking, and billing systems (Stripe Billing, Chargebee, NetSuite), current versions.

## Why it happens
No single system owns the truth about seats; each owns one slice. Divergence is therefore a reconciliation problem, not a reporting problem, and it persists until someone joins the three ledgers user by user and finds where individuals fall out.

## Edge cases / pitfalls
- Identity merges can make active users vanish from counts while they keep working. Count distinct humans, not directory objects, in the trace.
- Billing true-ups at renewal can legitimise a gap for one cycle. Check the contract before issuing corrections.
- Guests, service accounts, and test users pollute seat counts differently per system. Agree the exclusion list before reconciling.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_ao71Gm09M5i7BtyxRekKbQ
