A 12-Item Recurring Charges Checklist for Your Monthly Review
If you want a working monthly subscription audit, build a CSV with twelve columns: vendor name, exact charge string on statement, plan tier, billing cadence, charge date, amount, annual cost, payment method, last-used date, friction-to-cancel score, friction archetype, and renewal trigger. Open it the first Sunday of every month, sort by annual cost descending, and kill anything in the bottom half of "last used" that isn't load-bearing for your life. That's the whole protocol. Everything else in this article is why those twelve columns — and not the four most apps give you — are the ones that survive contact with a real billing cycle.
Most "subscription audits" fail not because people lack discipline but because the spreadsheet they're using is too shallow to fight the thing it's auditing. Vendors don't bill you in plain English. They bill you as SP * AFFRMD CV* on line 47 of a PDF, on a 13-month "annual" cycle that quietly bumps the renewal one month past your reminder, charged to a card you replaced in 2024 that Visa is still helpfully forwarding via Account Updater. A two-column tracker — "name" and "price" — never had a chance. After four years of doing this every month for myself and helping friends do it for themselves, the columns below are the ones I keep coming back to.
Why twelve columns, not four
The shortest honest subscription tracker is four columns: vendor, amount, frequency, status. That's what most apps give you and it's why most audits collapse by month two. Four columns can tell you that you're paying for Peacock Premium Plus. They can't tell you whether the charge string on your statement actually matches Peacock, whether the card it's hitting is one you forgot you replaced, whether your "monthly" is secretly a 28-day cycle that bills 13 times a year, or whether canceling requires a phone call between 9 a.m. and 4 p.m. Eastern.
The twelve-column version is built around a different premise: the charge is the easy part. The friction surrounding the charge is what actually decides whether you keep paying. A useful audit has to capture both — the dollar number and the structural cost of getting rid of it. If your spreadsheet doesn't have a column for "how hard is this to cancel," you don't have an audit; you have a wishlist.
I keep mine in a single Google Sheet with conditional formatting on three columns: amount (red above $20/mo), last-used date (red if older than 60 days), and friction score (red if 7+). Once a month, the red cells tell me what to do. The whole review takes about 25 minutes if I've kept the file current, closer to 90 if I've let it slip a quarter. There is no app for this. There doesn't need to be.
The twelve columns, defined
Each column does one job that the others can't. Skip one and the audit develops a blind spot exactly where vendors design the friction.
- Vendor name — the human-readable brand. "Peacock," not "NBCU."
- Charge string — the exact text that appears on your statement. NBCU*PEACOCK PRMPLS is what you'll Ctrl+F when you can't remember what the charge is for.
- Plan tier — Basic, Premium, Premium Plus, Family, etc. Tiers drift upward without notice; record what you're actually on.
- Billing cadence — monthly, annual, 28-day, quarterly. Flag anything not in the first two.
- Charge date — the day of the month it hits. Cluster these and you'll spot which week is your "thin" week before you live through it.
- Amount — the literal charge, including any tax and fees that show up on the statement, not the marketing price.
- Annual cost — amount × cycles per year. For 28-day plans, that's amount × 13.04, not 12.
- Payment method — last 4 of the card or the wallet (Apple Pay, PayPal balance, virtual card #3). This is where ghosts hide.
- Last-used date — the last time you actually opened, watched, listened, or logged in. Be honest. "I might use it" is not a date.
- Friction-to-cancel score (0–10) — your read on how hard exit is. Web one-click = 1. Phone call during business hours = 7. Phone + retention queue + win-back offer = 9.
- Friction archetype — one of six: Identity Tax, Friction Bypass, Sunk-Cost Anchor, Bundle Bait, Optionality Hedge, Sleeper Charge. (More on this below.)
- Renewal trigger — what causes the next charge. "Monthly auto," "annual on 7/14," "after 30-day trial converts on 5/03." Calendar this column.
Columns 9, 10, and 11 are the ones most people skip and the ones doing the heaviest lifting. Last-used date is the only honest answer to "is this worth it." Friction score is what tells you whether to cancel today or block out a Saturday morning. The archetype tag is what makes the whole thing portable — once you can name why something is sticky, you can predict which subs to never sign up for again.
Subscription bloat isn't a willpower problem you can solve with a sticky note. It's a friction-design problem, and you only beat it with a column for friction.
The friction archetype column is the one most people skip
The six-archetype tagging system is what turns a subscription list into a subscription diagnosis. Borrowed from the six archetypes that live in your wallet, each tag names the behavioral hook the vendor is using on you, which is far more predictive than category.
Identity Tax — you keep paying because canceling feels like admitting something about yourself. The unused gym, MasterClass, Duolingo Super, the meditation app. Friction Bypass — you're paying to skip a worse experience: ad-free YouTube, Amazon Prime for shipping, a calendar app that doesn't surface upsells. Sunk-Cost Anchor — you've paid for years and canceling feels like wasting all of it. Adobe CC, your domain registrar, the cloud storage at 87% full. Bundle Bait — you signed up for one thing and got four. Apple One, Disney+/Hulu/ESPN+, your carrier's "free" Netflix that quietly stops being free. Optionality Hedge — you keep it because maybe you'll need it. The VPN you used twice in 2023, the second cloud backup, the password manager you have two of. Sleeper Charge — you've forgotten it exists. The 2022 free trial that converted, the AOL subscription 2.1 million people were still paying for in 2021, the storage unit your dad put in your name (you're laughing until you read the r/personalfinance thread).
Tagging forces a small but uncomfortable moment of self-knowledge per row. "I'm paying $19.99 for the version of myself who runs at 6 a.m." is information you can act on. "Fitness — $19.99" is not.
That r/productivity thread is, structurally, a subscription audit. The book is the Identity Tax, paid in one lump instead of monthly. Your gym membership is the same transaction, just amortized.
How to actually fill the sheet (a 25-minute Sunday)
The sheet is useless if filling it takes a weekend. Here is the version that works in one sitting, the first time, on a normal Sunday with the NBA playoffs on mute in the background.
Start with three months of statements from every card and bank account, plus PayPal and Apple/Google wallet receipts. Three months catches quarterly billers and most "annuals" that hit once and disappear. Don't skip a card because "nothing recurring is on it" — the whole point of Account Updater is that you no longer know what's on which card. Pull the CSVs; don't eyeball PDFs.
Run a single pass with a regex or even just Ctrl+F for these strings: recurring, subscription, monthly, premium, plus, +, .com, *. Anything with an asterisk in the merchant string is almost always a third-party processor passing through a subscription. Drop every match into rows 1 through N of the sheet, charge string column first, vendor column blank. Filling vendor names from charge strings is its own little game (NBCU*PEACOCK = Peacock; SP * AFFRMD CV = Affirm Card; APL*ITUNES.COM/BILL = anything from Apple News+ to a six-year-old in-app purchase).
| Line item | Amount | Notes |
|---|---|---|
| Streaming stack (Netflix Premium, Max, Disney+ ad-free, Apple TV+, Peacock Premium Plus) | $78.95/mo | One household, two viewers |
| Music (Spotify Family, Apple Music duplicate from old trial) | $27.98/mo | Apple Music = Sleeper Charge |
| Cloud storage (iCloud 2TB + Google One 200GB + Dropbox) | $22.97/mo | Optionality Hedge ×3 |
| Productivity (Notion, ChatGPT Plus, 1Password Family) | $44.99/mo | One is load-bearing, two aren't |
| Fitness/wellness (Peloton App, Calm, MyFitnessPal Premium) | $36.97/mo | Identity Tax cluster |
| News/long-form (NYT All Access, The Atlantic, Stratechery) | $38.00/mo | Actually reads two of three |
| Other (Amazon Prime, Costco, AAA, two domain renewals amortized) | $31.50/mo | The "infrastructure" tier |
| Total | $281.36/mo · $3,376/yr |
The table above is a composite of three real audits I helped run last quarter. None of these households thought they were spending more than $150/month before we counted. The gap between perceived and actual spend was, on average, the cost of a domestic flight every month. BLS Consumer Expenditure Survey data is consistent with this — household spending on "other entertainment services," which is where most subscriptions land in their taxonomy, has been the fastest-growing line item in discretionary budgets for a decade.
The columns vendors hope you skip
If you read the twelve columns carefully, four of them are doing aggressive work against the seller's interest: charge string, payment method, last-used date, and friction score. These are the columns that vendors are quietly hoping you don't write down.
The charge string column matters because branding is how vendors hide. SXM*SIRIUSXM.COM looks like one thing on your statement and another in your inbox; the inbox tells you you've been "upgraded" to a tier you didn't pick. The payment method column matters because Visa Account Updater and Mastercard Automatic Billing Updater forward your subscriptions to your new card whether you want them to or not — that "expired card" you were counting on to cancel by attrition was politely renewed by your bank. The Visa Account Updater service is, technically, a feature.
The last-used date column matters because nostalgia is expensive. I have a friend who paid $14.99/mo for Adobe Lightroom for 31 consecutive months after she stopped taking photos. She "might get back into it." That's $464 — roughly a decent used Fujifilm body, which is to say, she could have bought the camera. The friction score column matters because when you finally do decide to cancel, having pre-rated the pain means you don't bail at step three of a seven-step cancel flow. If you knew it was a 9 going in, you blocked an hour. If you thought it was a 2, you rage-quit and the charge hits again next month. For more on why that flow has seven steps, see why cancel flows always have 4+ steps and the seven dark patterns that escort you from trial to autopay.
None of these columns are technically necessary to know what you're spending. All of them are necessary to do something about it.
What to do with the sheet once it exists
The audit is not the cancel. The audit is the inventory; the cancel is a separate, calendared action. Conflating them is why most people quit halfway through. Once your sheet is populated, the protocol I run is three passes, in this order:
Pass 1 — the obvious kills (10 minutes). Sort by last-used date descending. Anything older than 90 days with a friction score of 3 or below: cancel right now, in this session, before you talk yourself out of it. These are the rows where the cost-benefit is so lopsided that hesitation is just sunk cost wearing a costume.
Pass 2 — the calendared kills (scheduled, not done now). Anything older than 90 days with a friction score of 7 or above goes on the calendar as a 60-minute block, one per Sunday, until cleared. These are the gym memberships, the SiriusXM, the cable bundle that requires a phone call. Don't try to do them in the audit session; you'll burn out and the rest of the sheet will rot. Gym cancel tactics that actually work covers the high-friction-score crowd specifically.
Pass 3 — the archetype review (15 minutes, quarterly). Sort by archetype. Look at all your Optionality Hedges as a group. Look at your Identity Taxes as a group. The pattern across rows is more useful than any single row. If you have four Optionality Hedges, you don't have a subscription problem — you have an anxiety-budgeting problem, and no amount of canceling individual VPNs will fix it. That's the level the audit is meant to surface.
The bundle's broader argument is that subscription bloat is a structural artifact, not a personal failure. The twelve-column sheet is just the smallest tool that lets you act on that frame instead of just nodding at it. If you want to skip the spreadsheet entirely, the SubName Decoder tool takes a charge string, returns the vendor and the friction archetype, and gives you a friction score on the spot — which collapses three of the twelve columns into a paste-and-go. The other nine, you still have to fill in yourself, because nobody else can tell you when you last used Calm.
Takeaways: what to do this week
- Build the twelve columns this Sunday — vendor, charge string, plan tier, cadence, charge date, amount, annual cost, payment method, last-used date, friction score, archetype, renewal trigger.
- Pull three months of statements from every card and wallet, including the ones you don't think have anything recurring on them. Account Updater means they probably do.
- Tag every row with one of six friction archetypes — that's the column that turns the list into a diagnosis instead of a body count.
- Run three passes, not one — obvious kills today, high-friction kills on a future calendar block, archetype review quarterly. Don't try to do all three in one session.
- Reframe the result — the goal isn't a $0 subscription line; it's a subscription line where every row survives the question "would I sign up for this today, knowing what I now know about how it bills me?"
The sheet is not the point. The columns are. They exist because vendors have engineered the friction at exactly the spots where a four-column tracker goes blind. Fill in the other eight and the audit gets unreasonably durable, in the way that boring tools usually do.
This article is for general informational purposes only and is not professional financial advice. Consult a qualified advisor for decisions specific to your situation.