## TL;DR
Filter license records by SKU and license type, excluding trials. The agent counts every license object, but trials are not spend.

## Error
```text
(reported spend $180k; actual bill $120k; difference is trial licenses counted as paid; no error text)
```

## Steps
1. Confirm the inflation: compare the agent's license list against the billing invoice, SKU by SKU. Expected: trial SKUs identified as the gap.
2. Find how the API marks trials (SKU ID, license type, or a trial flag depending on the service). Expected: the trial marker known.
3. Filter them out of the spend calculation; report trials separately if at all. Expected: the filter in place.
4. Re-run the spend report. Expected: reported spend matches the invoice.

## When to use
- Reported spend exceeds the actual bill
- The tenant has trial licenses alongside paid ones
- A new product trial just started

## When not to use
- Spend is inflated by double-counting (a dedup problem)
- Trials should be counted (then label them, do not mix them into paid spend)
- The bill itself is wrong (dispute it with the vendor)

## Tool compatibility
Microsoft Graph subscribedSkus, Salesforce, and similar license APIs.

### Variant phrasings
### agent counts expired trials too
Exclude expired licenses as well as trial ones.

### trial converted to paid mid-period
Handle the transition: the SKU changes, so re-evaluate each run.

## Why it happens
License APIs return all licenses uniformly; nothing marks trials as non-spend except the SKU metadata. Agents that sum without filtering treat trials as purchases.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_d_jzq8TpUd-ve7bop2BrCg
