sheetsmith

Templates › Household money

Subscription Audit

Made for anyone leaking money on forgotten subscriptions.

A workbook for listing every subscription, what it really costs a year, how often it gets used, and which ones are worth cancelling. The summary carries a chart that redraws itself as you type.

Tabs
3
Columns
21
Fill themselves in
19

£7one payment, yours to keep

  • Opens in Excel, Google Sheets and Numbers
  • Delivered straight away
  • No macros, nothing to install
  • Change it free before you buy

Payment is handled by Stripe. Your card details go to them and never to us. Sales are final, which is why every tab, column and calculation is shown on this page first.

The workbook's summary and the table behind it
A row typed into the real file. Every figure that changes is the spreadsheet's own arithmetic.
The summary page, every figure calculated from the tables
The chart, drawn from the totals in the table beside it
What is inside: the tabs, the columns and what fills itself in
Where you type, and the shaded columns that work themselves out
The guide sheet that opens first and explains the file
Everything included in the download

Everything inside, before you pay

This is the whole design: every tab, every column and how each calculated one is worked out. White cells are yours to fill in; the shaded ones work themselves out and are locked so a formula cannot be overwritten by accident. There is room for 920 rows.

Subscriptions

One row per subscription. Fill in the cost, the billing cycle and how often you use it, and the yearly cost, cost per use and verdict work themselves out. Room for 120 rows.

ColumnTypeWorked out as
Servicetext
Categorychoice (list)
Statuschoice (list)
Cost Per Billcurrency
Billing Cyclechoice (list)
Next Renewaldate
Paid Bychoice (list)
How Often Usedchoice (list)
Last Useddate
Cost A MonthcurrencyIF(OR(ISBLANK([cost]),ISBLANK([billing_cycle])),"",ROUND([cost]*IF([billing_cycle]="Weekly",52,IF([billing_cycle]="Quarterly",4,IF([billing_cycle]="Annual",1,12)))/12,2))
Cost A YearcurrencyIF(OR(ISBLANK([cost]),ISBLANK([billing_cycle])),"",ROUND([cost]*IF([billing_cycle]="Weekly",52,IF([billing_cycle]="Quarterly",4,IF([billing_cycle]="Annual",1,12))),2))
Uses LoggednumberIF(ISBLANK([service]),"",SUMIF([Usage Log!service],[service],[Usage Log!sessions]))
Cost Per UsecurrencyIF(OR(ISBLANK([service]),ISBLANK([cost]),ISBLANK([billing_cycle])),"",IF([uses_logged]=0,[annual_cost],IFERROR(ROUND([annual_cost]/[uses_logged],2),0)))
Days To RenewalnumberIF(ISBLANK([renewal_date]),"",[renewal_date]-TODAY())
Days Since UsednumberIF(ISBLANK([last_used]),"",TODAY()-[last_used])
VerdicttextIF(OR(ISBLANK([service]),ISBLANK([cost]),ISBLANK([billing_cycle])),"",IF([status]="Cancelled","Already cancelled",IF([usage_rating]="Never","Cancel: never used",IF(AND([usage_rating]="Rarely",[annual_cost]>40),"Cancel: poor value",IF(AND([uses_logged]>0,[cost_per_use]>10),"Review: costly per use","Keep")))))

Usage Log

A quick note each time you actually use a subscription. This is what turns a guess about value into a cost per use. Room for 800 rows.

ColumnType
Datedate
Servicechoice (from Subscriptions › service)
Sessionsnumber
Minutesnumber
Notestext

Summary

What the subscriptions add up to, and where the waste is.

MeasureWorked out as
Active subscriptionsCOUNTIF([Subscriptions!status],"Active")
Total cost a year (active)SUMIF([Subscriptions!status],"Active",[Subscriptions!annual_cost])
Total cost a month (active)SUMIF([Subscriptions!status],"Active",[Subscriptions!monthly_cost])
Average cost a year per subscriptionIFERROR(SUMIF([Subscriptions!status],"Active",[Subscriptions!annual_cost])/COUNTIF([Subscriptions!status],"Active"),0)
Flagged to cancelCOUNTIF([Subscriptions!verdict],"Cancel: never used")+COUNTIF([Subscriptions!verdict],"Cancel: poor value")
Yearly saving if you cancel themSUMIF([Subscriptions!verdict],"Cancel: never used",[Subscriptions!annual_cost])+SUMIF([Subscriptions!verdict],"Cancel: poor value",[Subscriptions!annual_cost])
Worth a second lookCOUNTIF([Subscriptions!verdict],"Review: costly per use")
Most expensive subscriptionIFERROR(INDEX([Subscriptions!service],MATCH(MAX([Subscriptions!annual_cost]),[Subscriptions!annual_cost],0)),"")
Its cost a yearIFERROR(MAX([Subscriptions!annual_cost]),0)
Renewing in the next 30 daysCOUNTIFS([Subscriptions!days_to_renewal],">=0",[Subscriptions!days_to_renewal],"<=30")
Active with nothing loggedCOUNTIFS([Subscriptions!uses_logged],"=0",[Subscriptions!status],"Active")
Sessions logged in totalSUM([Usage Log!sessions])