DEV Community

STACKFOLO
STACKFOLO

Posted on

The Subscription Audit That Saved Me $480 a Year

The Subscription Audit That Saved Me $480 a Year

A few months back I was paying for a headless CMS I had not opened in seven months. $19 a month. I noticed by accident, mid-coffee, scrolling through a credit card statement looking for something else entirely.

Then I kept scrolling.

By the end of the statement I had circled five charges for tools I either forgot about, replaced, or had paid annual upfront for and been re-billed monthly because I fat-fingered a setting somewhere. Total recurring bleed: about $40 a month. That is $480 a year, or roughly one decent mechanical keyboard I was handing to SaaS companies in exchange for dashboards I never logged into.

This post is the audit I ran that week, the five-minute cancel sweep that followed, and the system I set up so it would never creep back. If you build side projects, you are almost certainly carrying at least one of these ghost subscriptions. Often more.

Why Developer Subscriptions Quietly Multiply

It is not that we are careless. It is that the cost per decision is tiny, the decisions are spread across months, and nothing ever reminds us to re-evaluate.

Here is how the stack grows for a typical side-project developer:

  • You start Project A. You need a database. Supabase free tier is enough, but you upgrade to Pro because it has a feature you want. $25 a month.
  • Three months in, Project A stalls. You do not shut down Supabase because you might return to it.
  • You start Project B. Different stack, different database. Neon this time. $19 a month.
  • You sign up for a landing-page builder to test an idea. $15 a month on a monthly plan because you were not sure.
  • You replace your editor with a paid AI plan. $20 a month.
  • Free GitHub Copilot trial becomes $10 a month.
  • Domain renewals, email forwarding, a Figma seat from that one time you redesigned something.

Each decision at the time was rational. The problem is that the decisions never get revisited together. And when you pay by credit card, the cognitive distance between "I am using this" and "I am paying for this" is enormous.

The audit fixes that distance for one afternoon. The system that follows keeps the distance small permanently.

The Audit: Pull Six Months, Categorize, Decide

I set aside ninety minutes. It took forty.

Step one. Export the last six months of credit card and PayPal statements. One CSV per card. Filter anything that repeats with the same merchant and similar amount. That is your recurring list. Do not trust memory. Memory lies about which tools you actually use.

Step two. Put every recurring charge into one table. Columns I used:

  • Name of tool
  • Category: Dev infra, AI, Design, Hosting, Writing, Analytics, Email, Domain, Other
  • Monthly cost (convert annual to monthly for fair comparison)
  • Which project it supports (Personal, Project A, Project B, Client work)
  • Last time I actually used it this month: Daily / Weekly / Monthly / Zero
  • Decision: Keep / Downgrade / Cancel / Move to annual

Step three. Be honest about that fifth column. "I might use it" is not a tier. If you have not logged in this month, it is Zero usage. Your past self was optimistic. Your present self is paying for the optimism.

Step four. Act immediately. Close the laptop only after every Cancel row has a confirmation email. If you postpone, a week turns into three months and you pay another $120 for the privilege of still meaning to cancel.

What Actually Got Cut

My table had 14 rows. Here is the honest breakdown I walked out with:

  • Keep as-is (5 rows). Tools I used at least weekly with clear project value. Domain registrar, GitHub Pro, the AI plan I actually lean on, one hosting bill, one observability tool.
  • Downgrade (2 rows). A design tool I was on the team plan for, downgraded to the solo plan. A monitoring tool bumped from Pro to the free tier because I was only using one feature of Pro.
  • Move to annual (2 rows). Two tools where the annual discount was 20% or more and I was certain I would use them for a full year. Instantly cheaper without losing anything.
  • Cancel outright (5 rows). The forgotten CMS. A second database on a stalled project. A landing-page builder I had already replaced with plain Astro. A writing tool I used once. A social-scheduling trial that never got cancelled.

Delta: about $40 a month. Closer to $48 after the annual conversions paid off. Roughly $480 a year from a single afternoon.

What surprised me was not the savings. It was how many of those cancelled tools I did not miss even once in the following month. Not one "wait, I needed that" moment.

The System That Keeps It From Creeping Back

Audits only work if they happen again. My first mistake after the initial sweep was thinking "done, I am clean now." Four months later I had added three new subscriptions and forgotten to cancel two free trials that had converted.

The fix was to move subscription tracking out of my credit card statement and into the same place I manage the projects that justify the subscriptions.

I list every recurring charge next to the project it supports. Monthly cost, annual cost, billing cycle, the next renewal date, and whether the subscription is personal or tied to a specific project. When a project goes inactive, its attached subscriptions go on the chopping block the same week, not six months later when I trip over the charge.

Two rules that keep the list clean:

  1. No trial without a renewal reminder. Every free trial gets a calendar entry dated two days before the auto-convert, with the cancellation URL pasted into the note.
  2. Quarterly review, 20 minutes. Open the full list, sort by last-used, and run the same Keep / Downgrade / Cancel / Move-to-annual cuts. It is never forty minutes after the first time. It is usually under fifteen.

Bonus rule for multi-currency users: note the currency. If you pay for half your tools in USD and live on KRW or EUR, the exchange rate swings your real monthly cost more than you think. I track the billing currency separately and let the dashboard do the conversion so the monthly total I see is always in my home currency.

Where STACKFOLO Fits

I built the subscription tracker inside STACKFOLO because I was already living in a new-tab dashboard that knew about my projects. Instead of keeping a separate spreadsheet, I list subscriptions next to the project they belong to, tag them by category (AI, Dev, Media, Tools, Other), and get a monthly total that auto-converts across currencies.

The "Upcoming payments" strip at the top of the subscription view is the quiet hero. It shows renewals inside the next seven days with a D-day badge, which catches the trial-to-paid conversions I used to miss. Private Mode hides the amounts when I am screen-sharing, which is a small thing that stopped me from rage-closing the tab during pair-programming.

It is a 30-second habit, not a project. If you want to try the tracker yourself, STACKFOLO is free on the Chrome Web Store, and the subscription view is on the free tier.

The Part That Actually Shifted My Habits

The savings were real, but the bigger change was smaller and weirder. Once I could see every subscription attached to a project, I stopped signing up for tools the same way.

Before, a new SaaS trial felt free. Today I started it. It is just $15 a month. Future me would deal with whether it earned its keep.

Now, a new trial shows up on the same screen where I see the ten other tools I am already paying for. The question changes from "is this worth $15 a month" to "is this worth $15 a month on top of the $180 a month I already have running." The second question has a much higher bar.

Most trials do not clear it. The ones that do, I actually use.

If You Only Do One Thing

Export six months of statements this week. Build the table. Spend forty minutes. Send the cancellation emails before you close the laptop.

The rest of the system is optional. The audit is not.

Try STACKFOLO free on the Chrome Web Store if you want your subscriptions to live next to the projects that justify them.

Top comments (0)