See where the money went, row by row
StatementLens reads the CSV or text-based PDF you download from your bank or card provider. You confirm how dates, signs and decimals are written, check each row, and only then see monthly and category totals.
No bank login. No upload. The file stays in this browser tab and disappears when you close it.
| Date | Description | Amount | Note |
|---|---|---|---|
| 03/02 | PAYROLL NORTHWIND LTD | +2,850.00 | Income |
| 03/03 | GREENLEAF GROCERY | -84.12 | Groceries |
| 03/03 | GREENLEAF GROCERY | -84.12 | Duplicate? |
| 03/05 | ONLINE TRANSFER TO SAVINGS | -500.00 | Transfer? |
| 03/07 | STREAMFLIX MONTHLY | -15.99 | Recurring |
| 03/09 | CITY TRANSIT CARD | -40.00 | Transport |
Review a statement
Choose the currency, then open a CSV or a text-based PDF. Nothing leaves this tab.
1 Currency and file
One currency per session. Amounts in different currencies are never added together.
Limits: CSV and PDF up to 10 MB, PDF up to 50 pages, 20,000 rows per file.
2 Tell StatementLens how to read the columns
3 Check every row
4 Totals
What it does, and what it will not do
It will
- Read comma, semicolon, tab and pipe separated CSV files, including quoted cells, line breaks inside cells and files saved with a byte-order mark.
- Read text-based PDFs where each transaction is one line starting with a date and ending with an amount, and list every other line it skipped.
- Add money as whole cents, so 0.10 plus 0.20 is exactly 0.30.
- Show rows it could not read, with the reason, instead of quietly dropping them.
- Check running balances and printed opening and closing balances when you provide them.
- Mark possible duplicates, transfers, refunds and recurring charges for you to decide on.
It will not
- Ask for your bank password or connect to any bank.
- Read scanned or password-protected PDFs, or guess at text it cannot see.
- Guess whether 03/04 is March or April.
- Convert or combine currencies.
- Delete duplicates or transfers on its own.
- Give tax, investment, credit or legal advice. The totals are arithmetic on the rows you approved.
New to this? Start with how to read a statement, then transfers and duplicates.
Questions
Is my statement uploaded anywhere?
No. The file is read by JavaScript in this page and kept in the tab's memory. StatementLens has no server-side code, no account system and no analytics. Like any website, the host (Cloudflare Pages) receives ordinary request data such as your IP address when the page itself loads, but the statement is never part of a request. You can check this in your browser's developer tools: open the Network tab, then load a file, and no new request carries it.
Which banks does it work with?
It reads files, not banks. Any CSV with a date, a description and either one amount column or separate debit and credit columns can be mapped. Text-based PDFs work only when each transaction sits on one line that starts with a date and ends with an amount. We have tested the layouts named in the PDF guide; other layouts may be read partly or not at all, and the review screen shows exactly which lines were not read.
Why does my scanned PDF not work?
A scan is a picture of text, so there is nothing to select or copy. StatementLens does not run OCR, because a misread digit in a financial figure is worse than no figure. Download a CSV or the original electronic statement from your bank instead.
Why do I have to choose the date format and the sign of amounts?
Because the file cannot tell us. 03/04/2026 is March 4 in the US and 3 April in most other places, and a positive 25.00 is a deposit on a bank account but a purchase on most credit card exports. Guessing would put rows in the wrong month or flip spending into income without any visible error.
Are duplicates and transfers removed automatically?
No. They are marked as candidates. Two identical coffees on the same day can be real, and a transfer to savings is spending from one account's point of view. You decide by unticking "Count" on rows that should stay out of the totals.
What happens when I close the tab?
Everything is gone. Nothing is written to local storage, cookies or IndexedDB. Use "Download CSV" first if you want to keep your reviewed rows and categories. "Clear everything" empties the session without closing the tab.
Can I mix two currencies?
Not in one session. Each session has one currency and every amount is added as whole cents (or the smallest unit of that currency). Exchange rates change daily and are not in your statement, so StatementLens will not convert or combine them. Clear the session and start again for the other currency.
Why is a refund counted under money in?
Money in is every positive row after your sign settings, so it includes refunds and transfers in as well as income. Refund-like rows get their own Refunds category rather than Income, and the totals show refunds separately. Move a refund into the category of the original purchase if you want that category to be net of it.
Does it use AI?
No. Categories come from a short list of keyword rules that you can see and override row by row. No description, amount or file is sent to any AI service or any other service.