GetNeatNumbers

How to track subscriptions in Google Sheets

A simple sheet that shows what every subscription costs per year, when it renews next, and highlights the ones renewing this week. Plus a formula that finds recurring charges you forgot about in your bank statement.

1. Set up the columns

Create a new sheet with these headers in row 1:

ABCDEF
NamePriceCadenceStart dateYearly costNext renewal
Music streaming11.99monthly2025-03-14formulaformula

For column C, use Data → Data validation → Dropdown with the options weekly, monthly, quarterly, yearly, so the formulas always get a value they recognize. Column D is the date you were first charged.

2. Yearly cost

In E2, then fill down:

=IF(B2="", "", B2 * SWITCH(C2, "weekly", 52, "monthly", 12, "quarterly", 4, "yearly", 1))

And the total somewhere visible, like H1:

=SUM(E2:E)

That total is usually the moment people start cancelling things.

3. Next renewal date

In F2, then fill down. It counts how many full periods have passed since the start date and adds one more:

=IF(D2="", "", SWITCH(C2,
  "weekly",    D2 + 7 * (INT((TODAY() - D2) / 7) + 1),
  "monthly",   EDATE(D2, DATEDIF(D2, TODAY(), "M") + 1),
  "quarterly", EDATE(D2, 3 * (INT(DATEDIF(D2, TODAY(), "M") / 3) + 1)),
  "yearly",    EDATE(D2, 12 * (DATEDIF(D2, TODAY(), "Y") + 1))))

Format column F as a date (Format → Number → Date). The start date must be in the past; DATEDIF returns an error for a future date.

4. Highlight renewals coming up this week

Select A2:F, open Format → Conditional formatting, choose Custom formula is and enter:

=AND($F2 <> "", $F2 - TODAY() <= 7)

Pick a fill color. Any subscription renewing in the next 7 days now stands out, which is your window to cancel before you're charged again.

5. Find recurring charges you forgot about

The list above only has the subscriptions you remember. To find the rest, download your bank statement as a CSV (most banks have Download or Export on the transactions page; pick CSV) and import it into a new tab with File → Import → Upload → Insert new sheet.

Say the merchant or description is in column B of that tab, called Statement. This lists every merchant that appears 3 or more times, most frequent first:

=QUERY(QUERY(Statement!B2:B, "select B, count(B) where B is not null group by B label count(B) ''", 0), "select * where Col2 >= 3 order by Col2 desc", 0)

Look through the result for anything that charges you on a schedule. Banks often add dates or reference numbers to the description (NETFLIX.COM 1234), which splits one merchant into many rows. If that happens, clean the descriptions first or match on the first word.

Want this done for you? The GetNeatNumbers Subscription Tracker is a ready-made Google Sheet that does step 5 properly. Import your bank CSV and it groups charges by merchant, detects recurring ones and their cadence (weekly, monthly, yearly), and builds the yearly cost and renewal calendar automatically. Or try the free subscription cost calculator first.