Track software subscription growth

Sizes software and subscription spend, spots tools whose cost is rising and those that appeared recently.

Finance AnalystProcurement๐Ÿ“† MonthlyIntermediateRead-only

Ask it like this

What is our total software spend and how has it changed?

When to use it

Use it to review your software spend, spot price rises nobody negotiated and subscriptions that appeared without sign-off.

What it produces

Annualised total, tools ranked by annual cost, rises to look into and new subscriptions from the last three months.

How it works

  1. 1Identifies software spend by payment type and by category
  2. 2Works out each tool's annual cost and ranks them
  3. 3Compares the last six months with the previous six
  4. 4Flags tools whose cost has risen sharply
  5. 5Lists new subscriptions that appeared in the last three months

What protects you

  • This skill only reads: it changes nothing in Spendesk
  • It acts with your permissions and your role, never beyond
  • The assistant cannot approve or pay
โ–ธTechnical detail83/100 ยท 2 tools
Spend analysisSuppliersspendesk_analyze_spendget_expense_categories

# Software spend growth

## Purpose

Put a figure on software and subscription spend, spot tools whose cost is rising and those that appeared recently.

State the exact period (the last 12 months by default; 366 days at most per call).

## Two ways to identify software spend

Neither is complete on its own; use them together and say which one was used.

**A. By payment type** โ€” spend made with a subscription card:

```json
{
  "tool": "spendesk_analyze_spend",
  "params": {
    "fromDate": "YYYY-MM-DD", "toDate": "YYYY-MM-DD",
    "groupBy": ["supplier", "month"], "limit": 50,
    "filters": { "payableTypes": ["subscription"] }
  }
}
```

Misses: software paid by invoice.

**B. By expense category** โ€” a category cannot be filtered by name. Get its ID first:

```json
{ "tool": "get_expense_categories", "params": {} }
```

Pick the software category or categories (for example "Software & Subscriptions") and ask the user to confirm when the choice is not obvious. Then:

```json
{
  "tool": "spendesk_analyze_spend",
  "params": {
    "fromDate": "YYYY-MM-DD", "toDate": "YYYY-MM-DD",
    "groupBy": ["analyticalCode", "supplier", "month"], "limit": 50,
    "filters": { "analyticalCodes": ["<category id>"] }
  }
}
```

With this filter, put `analyticalCode` **first** in `groupBy` and read suppliers under the category's row: `summary.totalAmount` counts the matching expenses in full, including their lines on other categories. Misses: miscategorised spend.

With `limit: 50`, check that no significant tool fell into the "Others" row.

## Step 2 โ€” Annual cost per tool

For each supplier, from its monthly series:

- regular payments every month: monthly average ร— 12;
- a single payment in the year: it is an annual renewal, take that amount;
- irregular: the 12-month total.

Say which rule was applied to each tool. Rank by annual cost.

## Step 3 โ€” What is rising

For each tool, compare the monthly average of the last 6 months with that of the 6 months before.

- ๐Ÿ”ด more than 30%: rise to look into
- ๐ŸŸก 10 to 30%: to watch
- ๐ŸŸข stable or falling

A rise can come from a price change or from a change in the number of licences: Spendesk does not say which. An annual renewal falling in one of the two halves distorts the comparison: flag it rather than announcing a rise.

## Step 4 โ€” Tools that appeared recently

Suppliers whose first month of spend falls in the last 3 months. Present them as "new subscriptions": the data does not say whether they were approved or not.

## Report

```
Software spend โ€” from <date> to <date> (method: payment type / category)

Annualised total: X EUR โ€” N active tools
| Tool | Annual cost | Rule applied | 6-month change |
Rises to look into: tool, before, after, change
New subscriptions (last 3 months): tool, first month, monthly cost
```

Amounts in functional currency, including VAT, on the document date. Card purchases are included in these figures, once the transaction has appeared on the statement.

## Observed result (demo account, 5 October 2026)

No subscription-type spend over the last 12 months: the account's spend was invoices and card purchases. The "Software & Subscriptions" category exists but carried no spend over the period. The method could therefore not be tried on a real data set.

## Example prompts
- "What is our total software spend and how has it changed?"
- "Are there subscriptions whose cost has gone up?"
- "List the new subscriptions that appeared in the last 3 months"

How to install this skill

/
  1. 1
    Download the file s55-saas-spend-growth.md using the button above.
  2. 2
    Place the file in the .claude/ directory of your project (or ~/.claude/ for a global install).
    cp s55-saas-spend-growth.md .claude/s55-saas-spend-growth.md
  3. 3
    Use in Claude Code โ€” the skill is automatically discovered. Describe your need in natural language and Claude will apply the skill instructions.
๐Ÿ’ก Make sure the Spendesk MCP is configured in your .claude/settings.json with the tools spendesk_analyze_spend, get_expense_categories.

Similar skills

โ˜… Top
95/100ยท๐Ÿ” Ad hocยทExpert

Audit what the MCP covers

Probes all available MCP tools, re-evaluates coverage of 50 persona use cases, detects new fields or tools, and regenerates the gap analysis report.

CFOControllerAP Manager
90/100ยท๐Ÿ“… WeeklyยทBeginner

Card requests via get_requests

Explains how to use get_requests for card requests and why expense reimbursements don't appear there. Avoids a frequent source of confusion between two distinct workflows.

ControllerFinance Analyst
90/100ยท๐Ÿ” Ad hocยทIntermediate

Active vs archived cost centers

Distinguishes active cost centers from archived ones with correct use of get_cost_centers. Avoids the counter-intuitive isArchived vs isActive naming convention pitfall.

ControllerFinance Analyst

Interested in AI Agent services or Custom Integrations?