A SaaS vendor audit from QuickBooks means pulling 12–18 months of software-expense transactions, consolidating every recurring vendor into one list, and checking each one for three things finance actually cares about: duplicate or overlapping subscriptions, silent price increases since the last renewal, and tools nobody can name an owner for. QuickBooks holds the most complete record you have of what the company actually pays — it just presents it as accounting history, not as a vendor inventory. The audit is the work of turning one into the other.
This is a finance exercise, not an IT one. The output is not a security posture or an access map; it is a defensible answer to "what does our software cost, where is that number drifting, and which contracts renew before we'd notice." If you already run spend through Ramp or Brex, you have card-level visibility — but card feeds tell you what cleared this month, not when a contract auto-renews or whether the annual price quietly went up 18%. QuickBooks plus a deliberate audit closes that gap.
What a Vendor Audit Is Actually For
The point of a SaaS vendor audit is not to produce a tidy spreadsheet. It is to surface money decisions that are currently invisible:
- Budget vs. actuals drift. Software is usually the second-largest line after payroll, and unlike payroll it grows without anyone approving it — a seat here, a tier upgrade there. The audit quantifies the drift.
- Duplicate spend. Two departments paying for separate Zoom or Notion tiers, or a tool that was replaced but never cancelled, are pure waste the ledger will show if you sort for it.
- Silent price hikes. Most SaaS contracts allow annual increases. A vendor that charged $14,000 last year and $16,500 this year did not send a memo — the increase shows up only as a larger transaction.
- Renewal exposure. Every annual contract has a date and, usually, a cancellation window. The audit is where you find the ones that renew before your next quarterly review.
Step 1: Pull the Source Data From QuickBooks
You want a CSV of every software-related transaction for the last 15–18 months — enough history to see annual cadence and year-over-year price movement.
In QuickBooks Online:
- Go to Reports → search Transaction Detail by Account.
- Set Report Period to Custom, last 15–18 months.
- Filter to your software expense accounts — commonly
"Software & Subscriptions","Dues and Subscriptions", and"Computer and Internet Expenses". - Customize columns to include Vendor Name, Transaction Date, Amount, and Memo/Description.
- Export → CSV.
In QuickBooks Desktop: Reports → Company & Financial → Transaction Detail by Account, customize the same date range and accounts, then Memorize the report so next quarter's audit is one click. Export via Excel → Create New Worksheet.
If SaaS spend is scattered across several accounts (some teams code tools to "Professional Services" or "Marketing"), run an Expenses by Vendor Summary for the full year as a cross-check and pull any recognizable SaaS names you missed. The detailed mechanics of mining the ledger are covered in building a SaaS vendor list from accounting data; this audit assumes you can get the raw export and focuses on what to do with it.
Step 2: Consolidate Into a Vendor Inventory
Sort the export by vendor, then by date. Your goal is one row per real vendor, with annual cost and billing cadence.
- Collapse duplicates in naming. QuickBooks routinely holds the same vendor under variants ("Zoom Video Communications," "Zoom US"). Merge them.
- Unmask payment processors. A charge that reads "Stripe" or "Paddle" is the processor, not the tool — the memo field usually names the real vendor (e.g. a Stripe line memo'd
LOOM.COM). Recode to the actual vendor. - Separate monthly from annual. Monthly vendors appear ~12 times a year; annual vendors once. The annual ones carry the renewal risk.
- Compute annualized cost. For monthly tools, multiply the steady-state charge by 12 so every vendor is comparable on an annual basis.
Step 3: The Three Audit Checks
This is the part that separates an audit from an inventory. For each vendor, run three checks.
Check 1 — Duplicate and overlapping spend
Look for two patterns: the same tool bought twice (two Notion subscriptions on different cards) and two tools doing the same job (Zoom and Google Meet both paid; two e-signature tools). Flag both. Overlap is the fastest cost to recover because cancelling one side requires no negotiation.
Check 2 — Silent price increases
For every annual vendor, find this year's charge and last year's charge for the same line. Compute the year-over-year delta. Anything over ~10% gets a note: was it a seat increase you approved, or a price hike you didn't? This is the single most valuable column in the audit and it exists nowhere except in the transaction history.
Check 3 — Owner and renewal date
For every vendor over $5,000/year, add two fields the ledger cannot give you: the internal owner (who decides whether to renew) and the renewal date with cancellation window (from the order form). Estimate the renewal date as the last annual charge plus 365 days; verify against the contract for the large ones.
Worked Example: A 14-Row Audit
Here is a condensed export with this year's and last year's annual charge shown side by side:
| Vendor | Account | This yr | Last yr | YoY | Note |
|---|---|---|---|---|---|
| HubSpot | Software & Subs | $22,400 | $19,200 | +17% | Price hike — verify at renewal |
| Salesforce | Software & Subs | $24,000 | $24,000 | 0% | Flat |
| Gong.io | Software & Subs | $28,000 | $24,500 | +14% | Seat growth — confirm |
| Notion (Ops) | Dues and Subs | $3,600 | $3,200 | +13% | Duplicate of below? |
| Notion (Eng) | Software & Subs | $2,880 | — | new | Overlapping subscription |
| Zoom | Software & Subs | $2,016 | $1,920 | +5% | Flat-ish |
| Google Meet (Workspace add-on) | Computer & Internet | $1,440 | $1,440 | 0% | Overlaps Zoom — review |
| DocuSign | Software & Subs | $4,800 | $4,800 | 0% | Renews Q3 |
| Adobe VIP | Software & Subs | $5,180 | $4,318 | +20% | Price hike — flag |
Three findings fall straight out of this table: two Notion subscriptions (consolidate to one workspace), Zoom and Google Meet overlap (decide on one), and three double-digit price increases (HubSpot, Adobe, Gong) to challenge at renewal. That is real recoverable cost, identified in about 25 minutes from data you already had.
Step 4: Turn the Audit Into a Live Renewal Calendar
An audit is a snapshot; renewal risk is continuous. Once each vendor has an annual cost, an estimated renewal date, an owner, and a cancellation window, import the cleaned list into a renewal tracker so the dates become alerts instead of a tab you forget to open.
In Satellite, the CSV import maps your audit columns directly to contract fields. After import you can attach the order-form PDF to each vendor, set the auto-renewal flag and notice window, assign an owner, and configure 60- and 30-day renewal notifications. Satellite's expense-based discovery can also re-ingest a fresh QuickBooks export each quarter to flag any new vendor that appeared since the last audit — including SaaS reimbursed through Ramp or Brex on personal cards, which never hits the company AP feed. There is no automatic sync between QuickBooks and Satellite, and that is deliberate: the ledger stays your accounting record of truth, the tracker stays your forward-looking operational system, and the quarterly export is your deliberate moment to catch what changed.
For the broader renewal workflow this audit feeds into, see the renewals pillar guide.
FAQ
How often should I run a SaaS vendor audit?
A full audit — the duplicate, price-hike, and owner checks — is a quarterly exercise for most companies with 20–60 tools, aligned to your finance close. The renewal-date tracking runs continuously in the tracker between audits; the quarterly pull is what catches new vendors and silent price changes.
Can't Ramp or Brex do this for me?
Card platforms give excellent real-time spend visibility, which is half the job. What they do not hold is contract context — auto-renewal clauses, cancellation windows, the renewal date itself — or a clean year-over-year price comparison per vendor. The audit pairs the card/ledger data with that contract layer so you can act before a renewal, not just see the charge after it clears.
What if SaaS charges are spread across multiple QuickBooks accounts?
Export from every relevant account and combine the CSVs before consolidating. Run an Expenses by Vendor Summary for the full year to catch tools coded to non-obvious accounts like "Professional Services" or "Marketing," and pull any recognizable SaaS vendor names regardless of where they were coded.
Does the audit replace contract management?
No. The audit tells you which vendors to scrutinize and roughly when they renew; the authoritative terms live in the order forms. For anything over $5,000/year, verify the renewal date and notice window against the contract and store it in the tracker.
Your QuickBooks ledger already contains the answer to "what is our software actually costing us, and where is that number drifting." A focused quarterly audit turns that history into recoverable savings and a renewal calendar you act on instead of react to.
Start with the free renewal tracker to load your audit today, or sign up for Satellite — $299/month flat, self-serve, no demo needed.