← All guides
Guide

Are You Overpaying for SaaS? A 30-Minute Self-Audit

A 30-minute walkthrough of your own software bill: what to keep, downgrade, cancel, or replace with a one-time custom build.

The 10% problem

Here's a pattern worth checking for in your own business: a company pays $30K, $60K, sometimes $100K a year for a piece of software, and uses a small fraction of what it does.

Not because anyone's dumb. Because SaaS is priced for the whole feature set, and you bought it for one job. The vendor bundles ninety features to justify the price; you needed six. Then the price goes up 8% a year, a few more seats get added when people join, nobody removes the seats when people leave, and five years later the bill is a line item nobody questions because it's "just what the software costs."

The good news: you don't need a consultant to find this. You need 30 minutes, your card statements, and three honest questions. This guide is the exact walkthrough. Do it yourself this afternoon.

Before you start: what you need

  • Twelve months of credit card and AP statements (or exports from your accounting software)
  • A spreadsheet, or the table template at the bottom of this guide
  • Whoever knows what the team actually uses day to day — if that's not you, get them on the phone

Block 30 minutes. Real ones, door closed. This pays better per minute than almost anything else you'll do this quarter.

One note before you start: this isn't an anti-software rant. Some of your subscriptions are the best money you spend, and the audit will tell you that too. The goal isn't a smaller list. It's a list where every line earns its keep.

Step 1: Pull the full list (10 minutes)

Search your last 12 months of card and AP statements for software charges. Don't trust your memory — the whole reason this works is that memory is exactly what these subscriptions hide behind.

A few tricks:

  • Search the statements for common billers: Stripe, Paddle, FastSpring, and Apple all process other companies' subscriptions, so the charge name may not match the product name.
  • Check every card. The gym-membership subscriptions live on the owner's personal card, the office manager's card, and that one card from 2019 nobody remembers.
  • Annual renewals only show up once, so a single month's statement misses them. That's why you pull twelve months.
  • Ask each department head: "what software do you pay for that I might not know about?" Shadow IT is real, and it is almost always a bigger share of the bill than the owner expects.

Write down every subscription and its annual cost. Monthly tools times twelve. Per-seat tools times seats times twelve. Most owners have never seen this number in one place, and most are surprised by it. Divide it by headcount too — the per-employee figure is usually the one that stings.

Step 2: Three questions per tool (15 minutes)

Go down the list. For each tool, answer three questions. Gut answers are fine; you're triaging, not litigating.

(a) Who used it in the last 30 days?

Names, not roles. If the answer is "I think Sarah's team uses it," that's a no until Sarah says otherwise. If nobody has logged in for a month, you have your answer already — that one goes straight to the cancel pile. You'd be amazed how many tools fail this first, easiest question.

(b) Which 10% of the features do we actually use?

Every tool has a core job. Name it in one sentence. "We use the CRM to store contacts and log calls." "We use the project tool as a shared to-do list." Now look at what tier you're paying for. If you're on the $89/seat Enterprise plan and your one sentence is covered by the $19/seat Starter plan, that gap is pure waste — and tier mismatch is one of the most common things this exercise turns up.

(c) What number would get worse if it vanished tomorrow?

This is the keeper question. If the tool disappeared tonight, what breaks Monday morning? "Payroll doesn't run" — keep, obviously. "We'd lose our customer history" — keep, or migrate carefully. "Honestly... nothing, we'd use email" — well, there it is. If you can't name what gets worse, you're paying for insurance against a risk you can't describe.

Watch for the answer "we might need it someday." That's not a number getting worse; that's a feeling. Someday-tools go in the cancel pile, and if someday arrives, the vendor will be delighted to take your money again.

Step 3: Sort into four buckets (5 minutes)

Every tool lands in one of four buckets:

  • Keep. Used daily, priced fairly, breaks something real if it vanishes. Pay the bill and move on. Plenty of SaaS is worth every penny.
  • Downgrade. Used, but on the wrong tier or with too many seats. Drop the plan, kill the ghost seats, or switch from monthly to annual for the discount. This is usually the fastest money in the audit — one email to the vendor.
  • Cancel. Nobody used it in 30 days, or its job is already covered by something else you pay for. Cancel it today, while you're annoyed enough to actually do it. If someone screams in the next month, you can resubscribe — that almost never happens.
  • Candidate to replace with a custom build. Expensive, lightly used, but doing a real job. This bucket deserves its own section, because it's where the biggest money hides — and if you want to try it yourself, rebuilding one narrow tool in an afternoon walks through the whole thing.

The replace bucket: when a one-time build beats a subscription

Here's the pattern worth understanding. You pay $40K a year for a big platform, and your one-sentence job for it is something like "it takes our orders and produces a reorder report." That's not a $40K/year problem anymore. Building custom software used to cost so much that renting bloated software was the only sane option. It isn't anymore. A focused internal tool that does your six features — and nothing else — is now often a one-time build in the $1,500–$15,000 range. Against a $40K annual bill, that pays for itself in months and then it's just yours. No per-seat pricing, no annual increase, no feature you're subsidizing for someone else's use case.

There's a second advantage: a purpose-built tool does exactly your job, so it gets cheaper per location or per user as you grow — instead of more expensive per seat, which is how every subscription is priced to behave.

A tool is a good replacement candidate when:

  • The annual cost is high relative to the narrow job it does
  • You can describe everything you use it for in a couple of sentences
  • The workflow is specific to your business (which is usually why you only use 10% of the generic tool)
  • Two or more of your subscriptions exist just to patch gaps in each other — a common tell that no rented tool actually fits your workflow
  • The data in it is yours and exportable

And honestly — when a custom build loses

A bad build is worse than an honest subscription, so here's the other side:

  • Deep vendor ecosystems. If your accounting tool connects to your bank, your payroll, and your accountant's entire workflow, the integrations are the product. Don't rebuild QuickBooks. Nobody should rebuild QuickBooks.
  • Compliance-heavy tools. Payroll, tax filing, HR compliance, anything touching regulated data. The vendor's compliance team is what you're paying for, and that's a fine deal.
  • Network effects. If the tool's value is that everyone else is on it — your customers, your vendors, your industry — a private replacement is worthless by definition.
  • Genuinely deep usage. If you honestly use 60–70% of a tool, you're not overpaying. You found a good one. Keep it and go audit something else.
  • Nobody to own it. A custom tool needs someone — internal or a builder on retainer — who answers when it hiccups. If you have no appetite for that at all, the subscription's support line has real value.

Real talk about switching costs

One more honest note, because this is where audits turn into regret if you skip it. Canceling a tool isn't free even when the tool is useless. Somebody has to export the data, check that it imported cleanly somewhere else, and retrain the two people who used it. Data migration is always messier than it looks — mismatched fields, duplicates, seven years of attachments.

So budget for the switch, not just the build. A $6K build with $2K of migration and two weeks of parallel running is still a bargain against $40K a year — but go in with your eyes open, and never cancel the old tool until the new one has run alongside it for a full billing cycle. Overlap is cheap. Data loss is not.

The audit table (copy this)

Paste this into a spreadsheet or a doc and fill in one row per tool:

ToolAnnual costWho used it (30 days)The 10% we useWhat breaks if goneBucketAction & owner
Example CRM$21,600Sales team (4)Contacts, call logsCustomer historyDowngradeMove to Starter tier — Chris, Fri
Example dashboard$14,400NobodyNothingCancelCancel today — Chris
Example ops platform$38,000Ops (2)Orders in, reorder report outReorderingReplace candidateScope a custom build

Two rules that make this stick:

  • Every row gets an owner and a date. An audit without actions is a spreadsheet with feelings.
  • Put the renewal date on the calendar. Most SaaS auto-renews annually with a 30–60 day cancellation window. A recurring calendar reminder 90 days before each big renewal is worth more than most software you'll buy this year. Then rerun this whole audit every twelve months — subscriptions grow back like weeds.

Run the numbers when you're done. Add up the downgrade and cancel buckets alone — before you touch the replace bucket — and compare that to what the last 30 minutes cost you. That is the whole argument for doing this once a year.

Where Hoven fits

If you do this audit and find a big, lightly-used tool you suspect could be a one-time build, that's exactly the kind of question I dig into. Most clients start with a $999/day audit (most take 1–5 days): you get a prioritized plan plus a "don't build this" list, and if it isn't worth more than you paid, you don't pay. Details on the pricing page, or get in touch and tell me what's on your bill.

Get the next deep dive in your inbox.

The complete material, free. No gate, no pitch parade. Unsubscribe anytime.