Wondy.
·AI Tools·22 min read·Wondy

How to Find Forgotten Subscriptions on Your Bank Statement

Three months of statements misses annual renewals. Here is the 13-month audit I ran through Claude, and the seven recurring charges it pulled out.

Three surveys of American subscription spending put the average household at $273 a month, $219 a month, and $35.03 a month. Top to bottom, that is a spread of nearly eight to one, and all three are still in circulation.

Every one of them is self-report. West Monroe polled 2,500 people in June 2021, asked them to estimate their monthly subscription spending, then walked them through the categories one at a time. The estimate came out at $237 in the 2018 wave and $273 in 2021, and the finding the press release led with was that 100% of respondents underestimated their own number. C+R Research, fielding between April 22 and May 2, 2022, got $86 as the guess and $219 as the itemised total, a gap of $133. Self Financial's 2026 wave asks a narrower question about paid subscriptions and lands at $35.03 a month across an average of 3.4 active services, with 59.9% of respondents carrying at least one they never use.

These three are not measuring the same thing, and the only point they agree on is that people cannot recall what they pay, which is the reason to stop quoting any of them. Your number sits in your statement, and counting it takes about twenty minutes.

How many months do you actually need to pull?

Thirteen, and the reason is arithmetic rather than caution. An annual renewal charges once. If your window is twelve months and that renewal landed in week one of it, a slow month-end export or a bank that cuts you off at the statement boundary drops it. Thirteen months buys a month of margin on the only charge in your file that gets exactly one chance to appear.

The pages that rank for this search mostly tell you to review three months, which is the span most bank websites offer on the default screen. The file below shows what that shortcut costs.

Same account, same file, two windows
Three months (May to July 2026)
  • Finds 6 of the 7 recurring merchants
  • Annualizes to $1,139.40
  • Misses the $139 annual renewal
  • Sees $19.99, not the $15.49 start
Use this
Thirteen months (July 2025 to July 2026)
  • Finds all seven
  • Annualizes to $1,278.40
  • Catches a renewal 10 months back
  • Shows the whole price history
The gap between the two columns is one charge, and it is 10.9% of the answer.

The answer key, before anything else

The file is synthetic. I generated 390 transactions in code across a checking account and a credit card, seeded them with seven recurring merchants and three traps, and filled the rest with ordinary grocery, fuel and pharmacy activity at random amounts. Saying what is in it before showing what came out is the only thing that makes the run gradeable, and you can check the model against this table yourself.

#What is in the fileWhy it is there
1APPLE.COM/BILL at $0.00 on 2025-09-14, then $12.99 on the 14th of every month afterA free trial that converted. The $0.00 line is the only marker of it.
2A streaming charge at $15.49, then $17.99 from February 2026, then $19.99 in July, with the description string changing halfway throughPrice creep, plus a merchant-name trap
3Google One at $2.99 and Dropbox at $11.99, both live all 13 monthsTwo services doing one job
4AMZN Prime, $139.00, one charge on 2025-09-22The annual renewal. Invisible in a short window.
5A gym at $42.00 a month with nothing in January, February or March 2026An interrupted series that should not be dropped
6CITY UTILITIES, $88.15 to $133.74, every monthRecurring, auto-paid, not cancellable
7STEAMGAMES.COM, $9.99, once on 2026-02-11One purchase from a merchant that also sells subscriptions
8The same coffee shop at $4.75, twice, six months apartRepeated merchant plus equal amount is not a cadence
9A password manager at $4.99 a month, every monthThe easy case, to confirm it gets counted

Two names in that file are made up. The streaming service and the password manager carry invented merchant strings, because the price history I gave them is my construction and I did not want it read as a claim about a real company. Apple, Google One, Dropbox, Amazon Prime and Steam appear under their own descriptors at their real prices.

The prompt

I am attaching 13 months of transactions from my checking account and
credit card as a single CSV. Find every recurring charge.

1) List each recurring merchant with the amount, the billing day, the
   number of charges in the file, and the annualized cost.
2) Flag any free trial that converted, and give me the conversion date.
3) Flag any price increase, with the old price, the new price and the
   percentage.
4) Flag any two services that do the same job.
5) List what you excluded and why.
6) Give me the annualized total.

Treat the same merchant as one line even if the description text
changes. If you cannot tell whether something is a subscription, say
so instead of guessing.

The last paragraph is where most of the work happens. Bank descriptors mutate: a merchant adds a phone number, drops a store code, switches processors. Without that instruction a model matches on the string and hands you two half-length series that each look too short to worry about. And the closing clause buys you an ambiguity report, which turned out to matter more than I expected.

Items 4 and 5 are the ones no cancellation app will do for you. A list of merchants is a lookup. Deciding that two of them cover the same need, and that a third belongs in a category you cannot cancel, requires knowing what the services are.

What came back

AI 답변 (실제 실행)Claude (Opus 5)2026-08-07 실행

Recurring merchants found: 7

Merchant, as it appearsAccountChargesCadenceCurrent priceAnnualized
IRONGATE FITNESS #2214Checking 884210Monthly, 5th, gap Jan-Mar 2026$42.00$504.00
NORTHLIGHT STREAMING / NORTHLIGHT STREAM 800-555-0148Card 447113Monthly, 8th$19.99$239.88
APPLE.COM/BILL 866-712-7753Card 447111Monthly, 14th$12.99$155.88
DROPBOX*4T9K2MCard 447113Monthly, 21st$11.99$143.88
AMZN Prime*2X84L19N3Card 44711Annual, September 22$139.00$139.00
VAULTKEY PW MANAGERCard 447113Monthly, 27th$4.99$59.88
GOOGLE *GOOGLE ONECard 447113Monthly, 3rd$2.99$35.88

Paid inside the 13 months: $1,166.88. Annualized at current prices: $1,278.40, or $106.53 a month.

Converted trial. APPLE.COM/BILL posts $0.00 on 2025-09-14 and $12.99 on 2025-10-14, then every 14th after that with no further $0.00. Conversion date 2025-10-14.

Price increase. NORTHLIGHT ran at $15.49 through the 2026-01-08 charge, $17.99 from 2026-02-08 to 2026-06-08, and $19.99 on 2026-07-08. That is +$4.50, or +29.1%, over twelve charges. The description string also changed at the February charge, so matching on merchant name alone splits this into two series.

Duplicate coverage. GOOGLE *GOOGLE ONE and DROPBOX are both consumer cloud storage and ran in parallel for all 13 months. Combined: $179.76 a year.

Excluded, with reasons.

  • CITY UTILITIES ONLINE PMT, 13 charges from $88.15 to $133.74. Recurring and auto-paid, but a metered household bill.
  • RENT PMT MERIDIAN PROPERTIES, 13 charges at $1,485.00. Same category.
  • PAYMENT THANK YOU and PAYMENT RECEIVED, 13 each. Two sides of the same card payment.
  • PAYROLL DEP CORVUS ANALYTICS, 26 credits. Income.
  • STEAMGAMES.COM, one charge of $9.99 on 2026-02-11. A single purchase from a merchant that also sells subscriptions.
  • SQ *THE COFFEE BAR, two charges of $4.75 on 2025-10-02 and 2026-04-02, exactly six months apart. Same amount, but two occurrences is not a cadence.

Flagged, not resolved. STATE FARM AUTO INS, 8 charges on the checking account between $31.16 and $74.72, on no fixed day, including two on 2026-02-13 for $72.86 and $72.54. Auto insurance is a recurring commitment, but nothing in the file gives me the billing period or the premium, so I cannot annualize it. The two same-day charges are worth checking on their own.

Grading it

I rebuilt every figure in Python against the same file, using exact decimal arithmetic rather than floating point, and compared the result to the generator that planted the items.

Answer keyWhat the run returnedResult
7 recurring commitments7Match
Annualized total $1,278.40$1,278.40Match
Paid across the window $1,166.88$1,166.88Match
Trial converted 2025-10-142025-10-14Match
Price creep +29.1%+29.1%Match
Duplicate cloud storage flaggedflagged, $179.76 a yearMatch
Gym gap kept as one series, not droppedkept, 10 chargesMatch
Description change did not split the streaming linenot splitMatch
Utility, single game purchase and twice-yearly coffee excludedexcluded, with a reason eachMatch
No entrySTATE FARM AUTO INS flagged as unresolvedKey was incomplete

The insurance line at the bottom of that table got there by accident. Those charges came out of the random filler generator rather than my planting list, so the answer key had nothing to say about them, and they are the most realistic thing in the file: eight charges, variable amounts, no fixed billing day, and a pair on the same February day that reads like a double bill. The prompt's closing instruction is what stopped the run from either dropping them without comment or annualizing a premium it had no basis for.

Two other things the grade table does not capture.

The annualized total depends on a choice nobody stated. Multiplying today's prices by twelve gives $1,278.40. Dividing what was actually paid by thirteen and multiplying by twelve gives $1,077.12, because that method averages in the old, cheaper streaming price and the three months the gym was paused. Neither calculation is wrong. The missing input is which one you want, and that depends on whether you are budgeting forward or reconciling the year behind you. Name it in the prompt.

The $0.00 line is also less certain than it looks. A zero-dollar charge from a card processor can be a trial start or a card verification hold, and this file cannot tell you which. The conversion date holds up, because a $12.99 series begins thirty days later. Reading the anchor as a trial start is inference.

My file was an easier exam than yours. The descriptors are clean, there are no pending-versus-posted duplicates, no refunds, no reversed charges, and the merchant string mutates exactly once in a place I picked. A real export from a real bank has all of those.

Can you just upload the file to ChatGPT?

Yes, and three details decide whether the answer is worth anything.

Take the CSV, not the statement PDF. Most banks offer both from the same screen. A PDF, especially a scanned one, adds a character-recognition step that can turn an 8 into a 3, and a wrong input leaves no trace in the output the way a wrong answer does.

Strip the account number, your name and your address before uploading. Every recurring charge survives that removal, because a cadence is built from the date, the merchant string and the amount. Nothing in the audit needs to know who you are.

Then check what the model tells you about the next charge date. It is extrapolating from the last one. The renewal term lives in the merchant agreement, not in your bank file, and a service that moves its billing day or its price will not warn your statement first.

I ran this on Claude rather than ChatGPT, which is worth saying plainly since the prompt has ChatGPT's name on it in most places you will find one. The prompt is not model-specific. What differs between tools is file handling: a session with a code interpreter will write and run code over 390 rows, while a plain chat window reads them, and the second approach drifts on arithmetic as the file gets longer.

The list was never the hard part

Liran Einav, Ben Klopack and Neale Mahoney did not ask anybody what they were paying. In a paper dated January 14, 2025, they worked through card data covering roughly 30% of US subscribers between August 2017 and December 2021, and looked at what happens in the month a card gets replaced. Cancellations spike, sharply, at exactly the moment the customer has to re-enter a number and therefore has to decide.

They tested the obvious alternative reading. If people were just moving the charge to another card, that would show up as substitution in their other purchases, and it does not. So those cancellations are people who had already stopped wanting the service and kept paying until something interrupted the default. Across ten services the authors estimate that cancellation friction roughly doubles seller revenue. The NBER summary puts the range of the inattention lift between 14% and more than 200%, depending on the service.

The consequence for anyone running the audit above is uncomfortable. If inattention is the mechanism, a list is a document that competes with nothing. You will read it, cancel the two obvious ones, and the rest will keep charging, because nothing about having written them down forces a decision next quarter. The same NBER summary reports the fix from the paper's own policy simulation: requiring an active choice every six months would cut the inattention effect roughly in half, at almost no convenience cost.

You will not get that requirement from a regulator any time soon. The FTC's click-to-cancel rule was vacated by the Eighth Circuit on July 8, 2025, on procedural grounds, because the agency skipped a preliminary regulatory analysis on a rule whose compliance cost exceeded $100 million. The FTC restarted the process with an advance notice of proposed rulemaking published on March 13, 2026, with comments closing on April 13, 2026. As of spring 2026 that was still an advance notice, meaning no proposed rule and no deadline, and I have not been able to confirm anything the agency has done since the comment window closed. ROSCA and Section 5 enforcement continue, and several state auto-renewal laws, California's among them, were never affected. What does not exist is a federal one-click cancel button, and advice written in 2024 telling you one was coming is advice about a rule that got struck down.

Put a date on it, not a document

The audit produces two outputs, and the second one is what survives the month.

The first is the cancellation decision you make today. On this file I would start with the $179.76 of duplicated cloud storage, not with the $504 gym, and the gym is by far the bigger line. The household paused that gym for three months and restarted it, which means somebody is actively deciding about it. Nobody is deciding about paying for Google One and Dropbox at the same time. Wondy's rule here is the same one from the bank fee audit: sort by whether anyone is still making the choice before you sort by size.

The second is a repeating forcing event, six months out. A calendar entry that says "re-run the audit" is weaker than it sounds, because re-reading a list is not a decision. What works is a mechanism that makes the charge fail unless you act: a virtual card number with a set expiry on the subscriptions you are unsure about, or letting a card you use only for subscriptions roll to a new number rather than updating every merchant automatically. That is the same interruption the paper measured, applied on purpose instead of by accident.

Twenty minutes and a CSV gets you the number. Whether you are still paying it next August comes down to what you put in the calendar today.

FAQ

How many months of statements do I need to find every subscription?

Thirteen. Twelve leaves no margin for an annual renewal that lands near the edge of the window, and three is not close. In my test file, a three-month pull covering May to July 2026 found six of the seven recurring merchants and produced an annualized total of $1,139.40. The seventh was a $139.00 annual renewal that posted on 2025-09-22, ten months before the audit date. Adding it moves the total to $1,278.40, so the short window came in 10.9% low on a file where nothing else was hidden. A year-to-date export, which is the easiest one to generate in January, has the same blind spot for anything that renewed the previous autumn. Thirteen months also gives you a full price history, which is what turns a price increase into a trend instead of a number with nothing to compare it to. Pull more if your bank offers it. A longer file costs you a bigger upload, not a worse answer.

Which charges look like subscriptions but are not?

Metered household bills, rent, insurance premiums and card payments. In my test file the utility charge posted every month for 13 months, between $88.15 and $133.74, which is a stronger recurrence signal than most real subscriptions, and it is not cancellable in any sense that matters. Rent posted 13 times at exactly $1,485.00. Card payments show up twice, once as a debit on the checking side and once as a credit on the card side, so counting them as spending double-counts everything you already counted. Two other patterns fool naive matching. A single purchase from a merchant that also sells subscriptions, such as one $9.99 game, is not recurring. And two charges at the same merchant for the same amount six months apart is a coincidence rather than a cadence. Ask for the exclusion list with a reason attached to every item, because the reason is the part you can check against the file yourself.

Can I upload a year of bank statements to ChatGPT and get a list of every subscription?

Yes for the list, with a caveat on the next charge date. Export the transactions as CSV rather than a statement PDF, since a scan adds a character-recognition step that can misread a digit and leaves no trace of the error in the answer. Delete the account number, the name and the address first; every recurring charge survives that removal intact. The model then has the merchant string, the date and the amount, which is enough to establish a cadence and a price. What it cannot establish is the renewal term, because that lives in the merchant agreement and not in your bank file. Any next-charge date it gives you is extrapolated from the last one, which holds until the merchant moves the price or the billing day. I ran this prompt on Claude rather than ChatGPT, and rebuilt every figure in the answer with code against the same file before publishing it.

Why do I keep paying for subscriptions I never use even after making a list?

Because the list is not the thing that stops the payment. Liran Einav, Ben Klopack and Neale Mahoney studied roughly 30% of US card subscribers between August 2017 and December 2021 and found a sharp spike in cancellations in the month a card was replaced, which is the month the customer has to make a decision. They checked whether those people were simply moving the charge to a different card, found no substitution in their other purchases, and concluded the cancellations were real. Across ten services, they estimate that cancellation friction roughly doubles seller revenue. The NBER summary of the same work puts the revenue lift from inattention between 14% and more than 200%, and reports that requiring an active choice every six months would cut the inattention effect by about half. So the output of an audit should be a calendar entry, not a document. A list you wrote once competes with nothing. A date that forces the question again competes with the default.

Quick O/X quiz
  1. 01

    Pulling three months of statements is enough to catch an annual subscription renewal.

  2. 02

    Research on replaced credit cards suggests people cancel subscriptions when something forces the decision, not when they stop using the service.

Disclaimer

This article is an educational explainer, not financial advice, and it recommends no bank, card, service or cancellation tool. The 13-month transaction file behind the test run is synthetic: I generated all 390 rows in code and planted the recurring charges and the decoys inside them, so no figure in it describes a real account. Two merchant names in the file are invented, and the price history attached to them is my construction rather than any company's pricing. The AI output is a real run on August 7, 2026 on Claude, and every number in it was rebuilt with exact decimal arithmetic against the same file before publication; a different model, prompt or day will produce different output. Survey figures are dated to their fielding windows, which range from 2021 to 2026, and describe survey populations rather than your household. The FTC rulemaking status is current as of spring 2026 and was not verifiable past the April 13, 2026 comment close at the time of writing. Verify every charge against your own statements before cancelling anything.

For the same statement, read for a different problem, How to Audit Your Bank Fees With ChatGPT runs the planted-file method on overdraft, NSF and ATM charges, and I Uploaded My Credit Card Statement to ChatGPT covers the spending side. Once you have the freed-up money, ChatGPT Debt Payoff Prompt works out where it should go first.

Sources