Proper Spreadsheets

Templates › Money

Subscription Review

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.

Of the 21 columns, you fill in 14 and the other 7 work themselves out, and all 12 figures on the summary do too. There is room for 920 rows of your own.

£4.99one 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.

Already have a spreadsheet of your own? Check it for mistakes, free.

The summary page, every figure calculated from the tables
The chart, drawn from the totals in the table beside it. See it full size
Where you type, and the shaded columns that work themselves out. See it full size

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. Open any tab to see its columns.

Subscriptions

16 columns

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. Ready for 120 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
ServiceType any text.
CategoryPick one: Streaming, Music, Software, Fitness, News, Gaming, Cloud Storage, Food and Delivery or Other.
StatusPick one: Active, Trial, Paused or Cancelled.
Cost Per BillThe amount charged each time it bills, not the yearly figure.Type an amount in £.
Billing CyclePick one: Weekly, Monthly, Quarterly or Annual.
Next RenewalType a date.
Paid ByPick one: Card, Direct Debit, PayPal, App Store or Google Play.
How Often UsedYour honest sense of it. The verdict column leans on this.Pick one: Daily, Weekly, Monthly, Rarely or Never.
Last UsedType a date.
Cost A MonthFills itself in.

Worked out from this row's Cost Per Bill and Billing Cycle.

The formulaIF(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 YearFills itself in.

Worked out from this row's Cost Per Bill and Billing Cycle.

The formulaIF(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 LoggedFills itself in.

The total of Sessions on Usage Log where Service matches this row's Service.

The formulaIF(ISBLANK([service]),"",SUMIF([Usage Log!service],[service],[Usage Log!sessions]))
Cost Per UseYearly cost divided by the sessions logged on the Usage Log tab.Fills itself in.

Worked out from this row's Service, Cost Per Bill, Billing Cycle, Uses Logged and Cost A Year.

The formulaIF(OR(ISBLANK([service]),ISBLANK([cost]),ISBLANK([billing_cycle])),"",IF([uses_logged]=0,[annual_cost],IFERROR(ROUND([annual_cost]/[uses_logged],2),0)))
Days To RenewalFills itself in.

Worked out from this row's Next Renewal.

The formulaIF(ISBLANK([renewal_date]),"",[renewal_date]-TODAY())
Days Since UsedFills itself in.

Worked out from this row's Last Used.

The formulaIF(ISBLANK([last_used]),"",TODAY()-[last_used])
VerdictFills itself in.

Worked out from this row's Service, Cost Per Bill, Billing Cycle, Status, How Often Used, Cost A Year, Uses Logged and Cost Per Use.

The formulaIF(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

5 columns

A quick note each time you actually use a subscription. This is what turns a guess about value into a cost per use. Ready for 800 rows, every one with its formulas in place.

ColumnWhat goes in it
DateType a date.
ServicePick one of the Service entries on Subscriptions.
SessionsHow many times you used it that day. Usually 1.Type a number.
MinutesType a number.
NotesType any text.

Summary

12 figures

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

FigureWorked out as
Active subscriptions

The number of rows on Subscriptions where Status is “Active”.

The formulaCOUNTIF([Subscriptions!status],"Active")
Total cost a year (active)

The total of Cost A Year on Subscriptions where Status is “Active”.

The formulaSUMIF([Subscriptions!status],"Active",[Subscriptions!annual_cost])
Total cost a month (active)

The total of Cost A Month on Subscriptions where Status is “Active”.

The formulaSUMIF([Subscriptions!status],"Active",[Subscriptions!monthly_cost])
Average cost a year per subscription

Worked out from Status and Cost A Year on Subscriptions.

The formulaIFERROR(SUMIF([Subscriptions!status],"Active",[Subscriptions!annual_cost])/COUNTIF([Subscriptions!status],"Active"),0)
Flagged to cancelNever used, or barely used and costing more than 40 a year.

Worked out from Verdict on Subscriptions.

The formulaCOUNTIF([Subscriptions!verdict],"Cancel: never used")+COUNTIF([Subscriptions!verdict],"Cancel: poor value")
Yearly saving if you cancel them

Worked out from Verdict and Cost A Year on Subscriptions.

The formulaSUMIF([Subscriptions!verdict],"Cancel: never used",[Subscriptions!annual_cost])+SUMIF([Subscriptions!verdict],"Cancel: poor value",[Subscriptions!annual_cost])
Worth a second lookUsed, but each use is costing more than 10.

The number of rows on Subscriptions where Verdict is “Review: costly per use”.

The formulaCOUNTIF([Subscriptions!verdict],"Review: costly per use")
Most expensive subscription

Worked out from Service and Cost A Year on Subscriptions.

The formulaIFERROR(INDEX([Subscriptions!service],MATCH(MAX([Subscriptions!annual_cost]),[Subscriptions!annual_cost],0)),"")
Its cost a year

The largest Cost A Year on Subscriptions.

The formulaIFERROR(MAX([Subscriptions!annual_cost]),0)
Renewing in the next 30 days

The number of rows on Subscriptions where Days To Renewal is at least 0 and Days To Renewal is at most 30.

The formulaCOUNTIFS([Subscriptions!days_to_renewal],">=0",[Subscriptions!days_to_renewal],"<=30")
Active with nothing logged

The number of rows on Subscriptions where Uses Logged is 0 and Status is “Active”.

The formulaCOUNTIFS([Subscriptions!uses_logged],"=0",[Subscriptions!status],"Active")
Sessions logged in total

The total of Sessions on Usage Log.

The formulaSUM([Usage Log!sessions])