Subscription Audit: a monthly report of every SaaS charge — and which ones you forgot you pay for
An n8n workflow that scans your bank/card notification emails all month for recurring charges, and on the 1st has Claude reconcile them into a subscription report: what you pay, what changed price, what charged twice, and what nobody has logged into since — sent to your inbox.
- 1
Label and collect all month
Create a Gmail filter that labels bank/card charge notifications
charges. AGmail Triggeron that label feeds each email to Claude for a tiny extraction — {vendor, amount, currency, date, card_hint} — appended to this month's sheet tab. Runs silently all month. - 2
Reconcile on the 1st
A
Schedule Trigger(1st, 08:00) reads the month's charges plus yourknown_subscriptionstab (vendor, expected amount, owner, last-confirmed-used). ACodenode does the joins: matched, new, price-changed, duplicated, stale-owner. - 3
Claude writes the audit
Claude receives the reconciliation and writes the report: total recurring spend, month-over-month delta, and a flag section with one recommended action each ('Figma went $15→$20/seat — check the plan email', 'two Dropbox charges — likely personal + team'). Plain prose, ranked by money.
- 4
Deliver and reset
A
Gmailnode sends the report to you (and your accountant if you like), the month tab archives, and a fresh one is created. Fifteen minutes with the first report usually pays for a year of n8n cloud.
Frequently asked questions
How does it see my charges without bank API access?
It reads the charge-notification emails your bank and card already send (enable them in your banking app if off — usually one toggle). A Gmail filter labels them, the workflow reads that label. No bank credentials, no third-party financial aggregator, nothing sensitive stored beyond vendor + amount + date in your own sheet.
What counts as a 'zombie' subscription?
The report flags: charges with no matching entry in your known-subscriptions list, price increases vs last month, duplicate charges from the same vendor, and anything on your list marked with an owner who hasn't confirmed usage in 90 days (a simple column you tick). The flag is a question, not an accusation — but most flags turn into cancellations.
We pay from three different cards. Does that work?
Yes — label the notification emails from all cards into the same Gmail label and the merge happens naturally. The report groups by vendor regardless of which card paid, which is exactly how duplicate tools across teams get caught ('why do we have two Canva Pros?').