NewYour AI employee is one email away →

Cost analysis tools that find unused SaaS seats and duplicate subscriptions

Published

Compare cost analysis tools that track recurring SaaS subscriptions, flag idle seats and duplicates, and run renewal reviews before notice dates pass.

The cost analysis tools that track recurring SaaS subscription spend fall into four groups: Viktor, the AI employee who builds the subscription ledger and runs the renewal review; SaaS management platforms such as Zylo, Torii, Zluri, Cledara and Flexera One SaaS Management; spend management platforms such as Ramp, Brex and Spendesk; and a well-kept spreadsheet.

The spend in question is recurring software: seats, usage meters and annual contracts that renew whether anyone logs in or not. Zylo’s 2026 SaaS Management Index announcement reports that organizations leave an average of 36% of their SaaS licenses unused, measured against industry-recommended utilization levels.

For a finance or operations lead who already suspects paid seats are sitting idle, the finished job is one ledger of every subscription, a flagged list of idle and duplicate licenses, and a renewal review that runs on a schedule.

What you need before you start

Collect access before building anything, because some login history expires. Okta keeps a 90-day sliding window of System Log events, and Microsoft Entra ID keeps sign-in logs for 7 days on the Free tier and 30 days on P1 and P2.

The inputs for a full first pass:

  • Card and AP exports: Twelve months of corporate card transactions and paid bills, so annual renewals and quarterly charges appear at least once.
  • Accounting system access: A QuickBooks Online or Xero login that can export vendor reports. QuickBooks Online offers Export to Excel or Export to PDF on its vendor totals report, and Xero’s Transaction Listing Details report exports to Excel or Google Sheets.
  • SSO or identity admin access: In Entra, Reports Reader is the least privileged role required to access the activity logs. In Okta, Report administrators can view and download reports and the System Log.
  • Vendor admin consoles: Owner or admin rights in the largest seat-based apps. Slack’s Billable Members Report, for example, can be exported only by the Workspace Primary Owner (and the Org Primary Owner on Enterprise).
  • Contract renewal dates: Order forms showing term end, notice period and any seat minimum for each annual contract.

Export the Okta and Entra sign-in data first, then request the rest.

Cost analysis tools for subscription spend

Viktor leads the list because he builds the ledger and runs the renewal review across the systems above, such as QuickBooks and Xero, rather than adding another console to check. SaaS management platforms specialize in app discovery and license usage; spend management platforms start from cards and bills.

Viktor is the AI employee who lives in Slack and Microsoft Teams, connects to 9,800+ tools, and does the work.

He works from the data he’s given: connected accounting systems such as QuickBooks, Xero and Stripe, card and AP export files, and seat exports from admin consoles, then returns an Excel ledger with formulas or a doc kept current at the same link. He’s an AI employee who waits for approval before he changes an account; for the category basics, see what an AI employee is.

Start free with up to $100 in credits, no credit card →

Pricing checked November 2026.

Tool

What it tracks

Pricing model

Best fit

Viktor

Builds the ledger from QuickBooks, Xero and other connected tools plus uploaded exports; runs the renewal review as a scheduled task

Shared workspace credits (pricing page)

Finance or ops leads who want the review done every month in Slack, Microsoft Teams or the web app

Zylo

Renewal calendar 90 to 120 days ahead; usage at app, feature and license level

Three tiers with no prices shown; “Request a Quote”

Enterprises with large app portfolios

Torii

App discovery, usage, overlapping apps and 30/60/90-day renewal alerts

Modules listed without prices; custom, quote-based

Teams that want discovery plus AI usage tracking

Zluri

Licenses purchased, unused and unassigned; renewal calendar with email alerts

Demo request; no public price

Teams pairing SaaS management with identity governance

Cledara

Seat utilisation insights, duplicate tool alerts, renewal alerts

Flat monthly or annual tiers capped by app count, plus modules

Smaller finance teams with up to 75 apps on standard tiers

Flexera One SaaS Management

Renewal management, license utilization, SSO login activity

Requires a dedicated SKU; no public price

Organizations already buying from Flexera

Ramp

Vendor tracking, contract extraction, price intelligence; suggested duplicate vendors; renewal reminders 30 and 60 days out by default

Free tier; Plus per user plus a platform fee; Enterprise custom

Companies already paying cards and bills through Ramp

Brex

Spend by tool, team or project; vendor-level spend limits

Essentials free; Premium per user; Enterprise custom

Brex customers who want per-vendor spend limits

Spendesk

Subscriptions on recurring virtual cards; renewal reminders 4 months and 1 month before the deadline in Procurement

Fixed monthly fee plus a variable fee per transaction; quote

Teams that pay each subscription from its own virtual card

Spreadsheet

Whatever someone enters

No license fee

Teams under the thresholds in the next sections

Cledara is the only platform in the table that prints flat tier prices: Basic at $75 per month, Premium at $200 per month and Pro from $500 per month on monthly billing. The same page’s title reads “Plans from £75 a Month,” while the tier prices carry dollar signs.

Three vendors in this category changed status in 2026:

Whatever tool runs the analysis, keep a ledger export the company owns.

Vendor admin consoles vs a third-party tool

Microsoft 365, Slack, Salesforce, Zoom and Atlassian each show seats and some last-activity data for their own product, and none of them sees the other four. Here is what each console exposes:

  • Microsoft 365: The Active users report shows a per-service “Last active date” for Exchange, OneDrive, SharePoint, Viva Engage and Teams, over 7, 30, 90 or 180 days. User names are hidden by default until an admin clears “Conceal user, group, and site names in all reports.”
  • Slack: The analytics dashboard gives each member’s “Last active” date, the day they last read or sent a message in a channel or DM.
  • Salesforce: Login History shows up to 20,000 user logins from the past 6 months, with a CSV download for more.
  • Zoom: The Sign in/Sign out report shows who signed in or out, with IP address, platform and version.
  • Atlassian: The managed accounts export includes “Last active,” defined as the last time the user viewed an app’s page for at least 2 seconds.

Consoles miss two things a finance lead needs. They cannot see overlap, so a company paying for Zoom and for Microsoft Teams meetings gets two clean reports and no warning. They also hold no renewal dates for contracts signed with other vendors, and Microsoft’s usage reports exclude perpetual license models entirely.

Use consoles as data sources for the activity column, and keep cross-vendor comparison and renewal dates in the ledger.

When a spreadsheet is enough

A spreadsheet holds up until roughly a few dozen apps, according to the vendors who sell the alternative. Opencloudware puts the comfortable limit at fewer than ten active subscriptions, Tropic says spreadsheet tracking breaks past roughly 30 contracts, and Spendesk says it works until around 50 applications.

No independent source sets a seat count or annual spend figure at which a platform pays for itself. The company’s own numbers settle it: run Step 3 once in the spreadsheet, total the monthly cost of the reclaim list, and buy a platform when that recoverable amount clearly exceeds the platform’s quote.

How to analyze subscription costs with AI: step by step

AI analyzes subscription costs by running seven steps on a schedule: consolidate every charge into one ledger, normalize seat and usage billing, match paid seats to activity, flag overlap, allocate costs to teams, alert on changes and review renewals before notice dates pass. Each step below produces an artifact the next one uses.

Step 1: Pull every subscription into one ledger

A complete ledger draws on four sources: card feeds, AP bills, the accounting system and the SSO app list. Each catches charges the others miss; SSO shows apps with no invoice, and card feeds show apps with no SSO connection.

Give the ledger these columns:

  • Vendor (normalized name)
  • Product or plan
  • Business owner
  • Cost center
  • Billing model (per seat, usage, flat, annual prepaid)
  • Seats paid
  • Monthly cost in reporting currency
  • Original currency and amount
  • Renewal date and notice period
  • Payment source (card, AP, expense report)

Two kinds of charge slip through. Annual charges appear once a year, which is why the export needs twelve months, and bank feeds add a lag: QuickBooks Online won’t download pending transactions, and Xero imports only cleared transactions.

Expensed charges are the second gap. Zylo’s 2026 index announcement reports expense-based SaaS spend up 267% year over year, with ChatGPT the most expensed application, so pull expense reports into the ledger alongside card and AP data.

Step 2: Normalize seat and usage billing

Every line needs one comparable number: cost per month in one currency. Per-seat lines multiply seats by price, annual prepaid lines divide by twelve, usage lines add the base fee to billed units times the unit rate, and foreign-currency lines convert at one documented rate.

The formula:

Monthly total = Σ(seats × monthly seat price) + Σ(annual contract ÷ 12) + Σ(base fee + billed units × unit rate), converted to the reporting currency at one rate rule.

The illustration below uses made-up figures for a sample 120-person company, not benchmarks or vendor prices. Replace each line with the company’s own invoices:

Line

Billing model

Math

Monthly cost

Design tool

40 seats, billed monthly

40 × $20

$800

CRM

25 seats, $9,000 annual prepaid

$9,000 ÷ 12

$750

Support platform

$300 base plus usage

$300 + 1,200 tickets × $0.50

$900

Video tool

€2,400 annual

€2,400 ÷ 12 = €200 × 1.08

$216

Total

 

 

$2,666

Then divide each line by active users, not paid seats. If 18 of the CRM’s 25 seats are active, the effective cost is $750 ÷ 18, about $41.67 per active seat against $30 per paid seat, and that gap is the number to bring to the renewal.

For annual prepaid contracts, the books follow the same logic. QuickBooks’ prepaid expense example records a $12,000 annual payment as a prepaid asset and moves $1,000 to expense each month, so match the ledger’s monthly figure to that amortization rather than the card date.

Step 3: Match paid seats to actual activity

Last-login data comes from two places: the identity provider and each vendor’s console. Entra’s signInActivity property gives lastSignInDateTime per user, but reading it requires an Entra ID P1 or P2 license and the AuditLog.Read.All permission. Okta’s Application Usage report gives a “Login Date” per user per app integration, within the 90-day retention window.

Set the idle threshold per app, by how often the job requires the app. Documented defaults vary:

A 90-day threshold needs at least 90 days of history. Okta queries past 90 days return nothing, so stream or export logs before the window rolls over.

The output is a reclaim list: user, app, last activity, threshold, monthly seat cost and the date a removal would stop the charge. That last column matters because vendors determine in their contracts when a removed seat reduces the bill:

Reclaim monthly seats immediately, and queue annual seats for the renewal window.

Step 4: Flag duplicate and overlapping tools

Overlap shows up in three patterns:

  • Two tools in the same category, such as two video platforms or two project trackers, each paid by a different team.
  • Several workspaces or sites of one app, each with its own bill.
  • Team-level purchases made outside procurement, often on a card or an expense report.

Spend platforms catch part of this. Ramp’s duplicate-vendor suggestions use a machine learning model that looks at name, contact, banking and tax info, and Torii advises comparing tax IDs, billing cadence and currency codes when checking for duplicates.

Group the ledger by category and by vendor, then list every group with more than one line. For each, consolidate onto the tool with more active users and time the exit to the other contract’s notice date.

Step 5: Allocate costs to teams

Allocation starts with a choice between showback and chargeback. The FinOps Foundation defines the difference: chargeback sends expenses to a product or department P and L, while showback shows the charges but keeps them in a central budget.

The Foundation states that “Showback is always required in any FinOps practice, but chargeback is dependent on organizational accounting policies” in its Invoicing and Chargeback capability. It also notes that when costs fall into a few easily allocated cost centers, the extra burden of formal chargeback may be unwarranted.

In the ledger, give every subscription two fields:

  • Business owner: The person who decides renewal, seat count and cancellation.
  • Cost center: The budget line the cost maps to, using the same codes as the accounting system.

For tools shared across the company, record the split rule, such as headcount or active users, next to the line. The FinOps Foundation treats at least 80% of spend allocated as comprehensive allocation at its Crawl maturity stage for cloud costs, a workable first target for SaaS too. Start with showback and move to chargeback only if accounting policy requires costs posted to departmental P&Ls.

Step 6: Set budget and anomaly alerts

Alerts catch changes between monthly reviews. Four signals are worth watching:

For each renewal inside 90 days, run a what-if: current seats at current price against active seats at current price. Check the contract first, because Salesforce’s MSA says a renewal with decreased volume is repriced without regard to the prior term’s per-unit pricing, so a smaller order can carry a higher unit rate.

Step 7: Hand the monthly renewal review to Viktor

Viktor runs the review as a scheduled task, set up once in plain language in Slack, Microsoft Teams or the web app at app.viktor.com. A finance lead can hand it over with an instruction like this:

On the first business day of each month, pull last month’s transactions from QuickBooks and the card export in #finance-ops, refresh the subscription ledger, list renewals due in the next 60 and 90 days with their notice dates, list seats idle past each app’s threshold, and post the summary in #finance. Ask before cancelling or reducing anything.

The task breaks down into three parts:

  • Input: The connected accounting system, card and AP exports dropped in a channel, and seat exports from admin consoles.
  • Transformation: Viktor normalizes vendor names, converts every line to a monthly figure, matches seats to last-login dates and checks each renewal against its notice period.
  • Output: A refreshed Excel ledger with formulas, a list of renewals 60 and 90 days out, the idle-seat reclaim list and an overlap list, posted in the finance channel with owners tagged.

Cancellations and seat reductions wait on approval cards in Slack or Microsoft Teams. For sensitive actions (viktor.com/security), “money moves, code pushes and customer emails wait for explicit approval in Slack,” while a rejected action never runs and admins can set any other tool to “needs approval” or “forbidden.”

An existing manual review can transfer directly. A finance lead screen-records the current process with narration, Viktor writes it up as an editable skill, and he proposes a scheduled task that stays paused until someone approves it.

Hampton’s published customer story records Viktor connecting 24 tools in 44 days, taking over reporting and taking on 26 recurring jobs per week.

Viktor is free to start with up to $100 in credits and no credit card. The Activity view shows credit use by person and task, and each scheduled task shows the time it saved and its credit cost.

Hand Viktor your first renewal review with up to $100 in free credits, no credit card →

Security and data access for spend tools

Spend analysis touches identity logs, billing data and admin consoles, so access scope decides the risk. Read-only scopes exist for most of the data: Google’s Reports API offers admin.reports.usage.readonly and admin.reports.audit.readonly, and Okta’s okta.apps.read only reads apps and their members.

Read-only scopes still need high-level admins to grant them. Microsoft lists AuditLog.Read.All as requiring admin consent, and in Okta, “Only the Super Admin role has permission to grant scopes to an app.”

Labels also mislead: Torii’s read-only Google Workspace setup avoids the Super Admin role, yet its custom role includes “License Management - All” and “Billing Management - All.”

Ask any spend tool vendor these questions before connecting it:

  • Which SOC 2 report, and what period? A Type 2 report covers operating effectiveness of controls over a period; for Type 1, a CPA quoted on the AICPA site said “the service auditor is evaluating controls as of a specific date.”
  • Which exact scopes per integration? Ask for the scope strings, and which ones write or revoke.
  • Which admin role must the connecting person hold? Compare it with the least privileged role the identity provider documents.
  • How long is data kept, and what does deletion cover? LicenseLogic’s checklist asks whether deletion covers databases, file storage, backups and stored OAuth tokens.
  • What happens to data if the vendor shuts down? Productiv customers had four days’ notice before access ended.

Viktor’s answers, as stated on viktor.com/security as of October 2026: SOC 2 Type 1, with SOC 2 Type 2 and ISO 27001 in progress. API keys and tokens are added at run time by a gateway the AI model never reads, customer data is never used to train models, each workspace is isolated, and data is US-hosted by default. Enterprise adds audit logs that include integration tool calls, SAML SSO and per-user spend caps.

Review Viktor’s security details →

Troubleshooting

Personal-card purchases, renamed vendors, shared logins and mixed currencies can leave gaps in a subscription ledger. Each needs a separate check.

Subscriptions bought on personal cards

Software bought on a personal card appears in expense reports, often under a generic category. Zylo states that 51% of software purchases are not properly categorized as software in expense platforms and other financial systems.

Pull expense reports into Step 1 and match them by merchant field. Torii’s Expensify integration, for example, matches SaaS expenses using the merchant, modifiedMerchant and comment fields.

Vendors renamed on statements

Card statements can show the payment processor or a truncated name instead of the vendor. Paddle’s customizable card descriptor uses PADDLE.NET COMPANYNAM, Apple subscription charges can appear as apple.com/bill, and Stripe truncates a merchant descriptor longer than 10 characters for the settlement merchant when a dynamic suffix is added.

Keep a descriptor lookup table in the ledger that maps each raw string to a clean vendor name, as Torii suggests with regex or lookup tables.

Shared logins hiding real usage

A shared login shows one active seat for several people, which makes usage look healthy while breaking the vendor’s terms and the reclaim math. Multiplier notes that applications with poor login data need manual review because the signal can’t support automatic action.

Route the app through SSO so each person signs in individually, then rerun Step 3 against the identity provider’s per-user data.

Mixed currencies

Tools convert foreign charges differently, so two reports of the same spend can disagree. Zluri converts at the rate on the day of the transaction, Torii converts contracts at the rate on the contract start date, and Flexera’s docs state the platform does not support currency conversion at this time.

Store the original currency and amount on every line, pick one rate rule for the reporting column, and record the rate date beside each conversion.

FAQ

A monthly review needs both billing totals and contract notice dates to identify which changes can reduce the next invoice.

How do I calculate total spend across seat and usage billing?

Convert every line to a monthly figure in one currency, then add them: seats times price for per-seat lines, contract value divided by twelve for annual lines, and base fee plus units times rate for usage lines. Step 2 shows the formula with a worked illustration.

Are vendor admin consoles enough?

No, each console reports seats and activity for its own product only, so none can show overlap between vendors or hold renewal dates for other contracts. Use console exports as inputs to a cross-vendor ledger.

Which pricing models do cost analysis tools use?

Cledara uses flat monthly or annual tiers capped by app count; Ramp Plus bills per user plus a platform fee; Brex Premium bills per user; Spendesk charges a fixed fee plus transaction fees; Zylo offers quote-based plans; Torii lists custom, quote-based pricing; and Zluri offers a demo request.

How should team size shape the choice?

Viktor fits any size because one AI employee serves the whole workspace and works from connected systems the company already has. Opencloudware recommends spreadsheets for fewer than ten active subscriptions; Cledara’s Basic and Premium tiers cap at 20 and 75 apps; enterprise portfolios usually go to platforms such as Zylo, with quote-based plans, or Torii, with custom, quote-based pricing.

Do these tools support chargeback?

Yes, finance can use a ledger with an owner and a cost center for every subscription to prepare chargeback entries for the accounting system. Start with showback, which the FinOps Foundation treats as required, and add chargeback when accounting policy calls for it.

Can I get alerts before invoices arrive?

Yes, renewal reminders fire before the bill: Ramp defaults to 30 and 60 days before contract events, and Spendesk Procurement alerts 4 months and 1 month before the renewal deadline. A monthly scheduled review that lists renewals 60 and 90 days out covers vendors outside either platform.

Spreadsheet or software?

Run one full pass in a spreadsheet first. If the reclaim and overlap lists from that pass are worth more per year than a platform’s quote, buy the platform or hand the monthly review to Viktor.

Hire your first AI employee with up to $100 in free credits, no credit card →

Ask ChatGPTAsk Claude
4.9 on G2G2 rating: 4.9 out of 5 stars

Start free. Viktor delivers.

Start for free today. No credit card required.

Get Started for Free