Blog · Costs · Updated · By the FitMySaaS team
Software license tracking spreadsheet: free template (2026)
Short answer: A software license tracking spreadsheet needs one row per tool and 16 columns; the core ones are owner, seats paid, seats used, price, renewal date and notice date. Add a "days to renewal" formula and a calendar reminder for each notice date. For a team of 10 to 40 people that covers the basics; it only falls short when you need automatic usage data.
What columns should a software license tracker have?
Copy this header row into Google Sheets or Excel. Each column answers a question you will be asked at renewal time.
Tool,Job,Plan,Owner,Billing cycle,Seats paid,Seats used,Price per seat (month),Monthly cost,Annual cost,Renewal date,Notice date,Days to renewal,Status,Admin login,Notes
| Column | Example | Why it matters |
|---|---|---|
| Tool | Asana | One row per subscription, not per vendor |
| Job | Tasks | Shows overlap: two rows with the same job is a flag |
| Plan | Advanced | Plans decide limits and price |
| Owner | Ops lead | One named person who answers for it |
| Billing cycle | Yearly | Yearly plans are harder to shrink mid-term |
| Seats paid / Seats used | 25 / 21 | The gap is your unused licenses |
| Price per seat (month) | $24.99 | From the vendor pricing page |
| Monthly cost / Annual cost | Formula | Seats paid x price, then x 12 |
| Renewal date | 2027-03-01 | From the vendor's billing page |
| Notice date | Formula | The last day to cancel or shrink |
| Days to renewal | Formula | Sort by this every month |
| Status | Keep / Shrink / Merge / Cancel | The decision from your last review |
| Admin login | Shared vault entry name | Where the login lives, never the password itself |
| Notes | "Seats sold in steps of 5" | Billing quirks you would otherwise forget |
Never put passwords in the sheet. Point to the entry in your password manager instead.
What does a filled-in tracker look like?
Here are sample rows for a 25-person team. Prices are list price, billed yearly, October 2026, from each vendor's pricing page.
| Tool | Job | Plan | Seats paid | Seats used | Per seat | Annual cost |
|---|---|---|---|---|---|---|
| Slack | Messages | Pro | 25 | 23 | $7.25 | $2,175 |
| Asana | Tasks | Advanced | 25 | 21 | $24.99 | $7,497 |
| Notion | Docs | Plus | 25 | 14 | $10 | $3,000 |
| HubSpot Sales Hub | CRM | Professional | 6 | 5 | $90 | $6,480 |
| Calendly | Scheduling | Teams | 8 | 8 | $16 | $1,536 |
The Slack row is a good example of why "seats used" matters. Under Slack's Fair Billing Policy, members who haven't used Slack in over 28 days are not billed, so the real cost can be below the sheet's figure. Note that in the Notes column.
How do you set up renewal reminders in the spreadsheet?
Use three formulas and one calendar habit. These work in both Google Sheets and Excel.
- Notice date. If the contract needs 30 days' notice, enter
=K2-30(where K is the renewal date). If there is no notice period, use 30 anyway; it gives you time to decide. - Days to renewal. Enter
=K2-TODAY(). Sort the sheet by this column at every monthly review. - Next renewal for yearly plans. After a renewal passes, enter
=EDATE(K2,12)to roll the date forward a year. Use=EDATE(K2,1)for monthly plans. - Highlight. Add conditional formatting to turn the row red when days to renewal is below 60.
- Calendar. Create one event per notice date in a shared calendar, with the owner invited. The spreadsheet only works if someone opens it; the calendar comes to you.
Which renewal rules catch small teams out?
Write these into the Notes column. They change how much a cut actually saves.
| Vendor | Rule | Source |
|---|---|---|
| Google Workspace | On the Annual/Fixed-Term Plan, removing licenses does not lower your payment until the contract renews | Google Workspace help |
| HubSpot | Unassigned seats are still billed; removals apply from the next billing period | HubSpot knowledge base |
| HubSpot | Sales Hub and Service Hub Professional add a one-time $1,500 onboarding fee | HubSpot pricing for Sales Hub and Service Hub |
| Asana | Seats are sold in steps (2 to 5, then 5 at a time up to 30) | Asana pricing |
| Jira | Yearly billing uses flat user bands (1 to 10 users $950 a year, 11 to 15 $1,450, 16 to 25 $2,450) | Jira pricing |
| monday.com | Seats are sold in fixed buckets starting at 3 | monday.com pricing |
The Asana and Jira rules mean removing one or two people may not change the bill at all. Check which step or band you would land in before you count the saving.
When is a spreadsheet not enough?
A spreadsheet tracks what you enter. It does not pull usage data, spot new sign-ups or alert you on its own. That becomes a problem when you have more tools than one person can check in an hour, or when several people buy software on their own cards.
At that point, look at SaaS management software, or reduce the number of rows. Our guide on software consolidation explains how to decide which tools can share a job.
When one system makes more sense
If your tracker shows several rows doing parts of the same job, such as tasks in one tool, docs in another and client records in a third, the cheaper fix may be fewer rows rather than better tracking. The SaaS cost calculator totals your stack at list price in a few minutes. FitMySaaS replaces those rows with one system the team tries free for a week, then runs it for one fixed monthly fee.
Questions
Should we use Excel or Google Sheets?
Use whichever your team already shares files in. Google Sheets is easier when several owners need to update their own rows.
How many days before renewal should we review a subscription?
Sixty to 90 days gives you time to compare options, test an alternative and give notice. For a tool you are sure about, 30 days is enough.
Who should own the tracker?
One person, usually the ops lead or office manager. Each tool still has its own owner who keeps its row up to date.
Should free tools go in the tracker?
Yes, in a separate tab. Free tools can hold customer data and often have admin accounts tied to people who have left.