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.
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
| Column | What goes in it | Worked out as |
|---|---|---|
| Service | Type any text. | |
| Category | Pick one: Streaming, Music, Software, Fitness, News, Gaming, Cloud Storage, Food and Delivery or Other. | |
| Status | Pick one: Active, Trial, Paused or Cancelled. | |
| Cost Per Bill | The amount charged each time it bills, not the yearly figure.Type an amount in £. | |
| Billing Cycle | Pick one: Weekly, Monthly, Quarterly or Annual. | |
| Next Renewal | Type a date. | |
| Paid By | Pick one: Card, Direct Debit, PayPal, App Store or Google Play. | |
| How Often Used | Your honest sense of it. The verdict column leans on this.Pick one: Daily, Weekly, Monthly, Rarely or Never. | |
| Last Used | Type a date. | |
| Cost A Month | Fills 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 Year | Fills 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 Logged | Fills 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 Use | Yearly 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 Renewal | Fills itself in. | Worked out from this row's Next Renewal. The formulaIF(ISBLANK([renewal_date]),"",[renewal_date]-TODAY()) |
| Days Since Used | Fills itself in. | Worked out from this row's Last Used. The formulaIF(ISBLANK([last_used]),"",TODAY()-[last_used]) |
| Verdict | Fills 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
| Column | What goes in it |
|---|---|
| Date | Type a date. |
| Service | Pick one of the Service entries on Subscriptions. |
| Sessions | How many times you used it that day. Usually 1.Type a number. |
| Minutes | Type a number. |
| Notes | Type any text. |
Summary
12 figures
| Figure | Worked 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 cancel | Never 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 look | Used, 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]) |