Skip to content
All free tools

Review subscriptions

Recurring charge finder

Find repeated charges in a bank or card CSV without connecting your account. See the dates and amounts behind each candidate, then decide what belongs on your review list. A repeating charge isn't necessarily a subscription.

By AnyStatement

Published , 4 min read

Contents
  1. Start with the charges, not a yearly total
  2. The rules are small enough to check yourself
  3. A recurring payment can still be groceries
  4. Missing months are missing evidence
  5. What happens to your file
  6. If the older card history is only in PDFs

A review list, not a subscription verdict.

See which charges repeat, inspect the dates, then decide what belongs on your list. Nothing is included in your list automatically.

Your file and the values you enter are processed in this browser tab. They are not uploaded or sent to analytics. We do not save them between visits. Downloads you choose to save remain on your device.

Clear or reload clears active input. Back navigation can restore uncleared input. This is not secure deletion of browser memory or saved downloads.

Choose the rows and what they mean

UTF-8 .csv or .txt, up to 5 MB. File contents never leave this tool.

One UTF-8 CSV or text file, up to 5 MB and 10,000 data records. Larger files need a smaller date window.

File read: Waiting for readable CSV.

Format checks: Waiting for your confirmation.

Recurrence calculation: Not calculated.

No row issues reported by these checks.

Start with the charges, not a yearly total

Load a CSV, choose its date, description and amount columns, and confirm the signs. You can map account and currency columns or give the whole file a label for each. Card exports don't all use the same signs, so check a purchase and a refund before confirming. The review treats charges as negative and lists incoming amounts separately. It doesn't subtract refunds from observed charges.

The fictional example has STREAM charges of 10.00 USD on January 15, February 15 and March 15, 2026. That is a monthly candidate with 30.00 USD observed outgoing. Include the group and confirm it is one charge series to see the optional assumption: 12 charges at the last observed 10.00 = 120.00 USD. That multiplication is not a prediction. GROCERY charges on January 2, 4 and 9 remain repeated but irregular.

Every group starts as not reviewed. Check its source rows before including or excluding it from your list. You can exclude individual rows, merge descriptions manually, or give rows separate review names when one bank description covers two services. The evidence download keeps those decisions alongside the original cells.

The rules are small enough to check yourself

Automatic groups use only matching descriptions after trimming their outer spaces and normalizing case. Punctuation, internal spaces and numbers stay significant. There is no merchant database or fuzzy matching. Accounts and currencies never mix, even if you give their manual groups identical names.

  • At least three charges on distinct dates are required for a cadence candidate.
  • A monthly candidate has one charge in each consecutive calendar month. Every day-of-month must be within three days of the first, or both dates must fall in their month's final three days.
  • A weekly candidate has only 6-8 day gaps. A quarterly candidate uses consecutive three-month steps and the monthly day rule.
  • An annual candidate needs three consecutive years in the same month, with the same day rule. February 28 and 29 fall in the end-of-month family, so leap years don't create a false gap.
  • Other repeated patterns are irregular. One or two charges are insufficient evidence. Multiple charges on the same date need review before any cadence or yearly assumption is offered.

Changing amounts don't disqualify a pattern. They also don't prove a price increase: the descriptor might cover different services or plans. Optional yearly amounts use the last observed charge multiplied by 12, 52, 4 or 1. The calculation is shown only after you include the group and confirm the assumption.

A recurring payment can still be groceries

Rent, loan payments, card repayments and regular shopping can all repeat. This tool finds patterns in the supplied rows, not definite subscriptions. It doesn't identify your next renewal date, promise savings, cancel anything, monitor your accounts or detect fraud. Check the bill or the service's account page to learn what a charge actually pays for.

Same-day rows might be duplicate exports or two real purchases. They stay in the observed amount, clearly flagged, until you decide otherwise. Compare them with the duplicate finder if your source files overlap. Even an exact match isn't proof that a row should be deleted.

File reading, format checks and recurrence calculations have separate status messages. None authenticates a statement, reconciles an account, guarantees another app will accept the download, or provides tax, legal, lending or accounting advice.

Missing months are missing evidence

The first and last transaction dates are not a statement coverage check. A missing month prevents a monthly candidate under these rules; it doesn't mean a service was cancelled. Use the coverage checker with periods from your statements if you need to check the history you collected. Transactions from other cards or accounts won't appear here unless supplied.

The tool accepts one UTF-8 CSV or text file up to 5 MB and 10,000 data records. It shows five groups at a time, with paged source tables. Dates must be unambiguous or explicitly chosen. Select posted or transaction dates consistently because a few days' difference can change the candidate. Removed timestamps and weekday labels are reported before you confirm the interpretation.

Amounts use exact decimal units, never rounding to force a match. All rows use the precision you select; amounts with extra decimal places block calculation. A file with only headers has nothing to review. Blank, malformed, repeated-header and subtotal-like rows block calculation rather than quietly disappearing. You can download the issues and correct a working copy of the CSV.

What happens to your file

Your file and the values you enter are processed in this browser tab. They are not uploaded or sent to analytics. We do not save them between visits. Downloads you choose to save remain on your device. There's no bank login or merchant submission.

Use Clear or reload to clear active input. Navigating away isn't a clearing action: Back can restore uncleared data. Clearing this tool doesn't securely erase browser memory or copies you saved elsewhere.

Downloads create new files and never alter your source. Formula-like text cells receive an apostrophe prefix for spreadsheet protection, while interpreted negative amounts remain numbers. The original-cell columns are protected text, not byte-for-byte copies. Spreadsheet software can remove protection when saving or reopening a CSV, so inspect a copy before using it elsewhere. The report may still contain sensitive account labels and transaction details.

If the older card history is only in PDFs

Already have a bank CSV? This tool is free. Only have PDF statements? First check your bank's native export or any included extraction option. AnyStatement can convert PDFs into reviewable transaction data. That is a separate upload workflow, not a requirement for this free review, and nothing you entered here is carried into it automatically.