Skip to content

How it works

What happens between dropping a PDF and downloading a spreadsheet, and why you can trust the numbers.

1. Your PDF stays on your device

When you drop a statement, your browser opens it with the same PDF engine Firefox uses (pdf.js). The page reads the text and its position on the page, finds the transactions and builds the spreadsheet, all inside your browser tab. For most statements that is the whole story: the file is not uploaded. If your browser cannot read a statement, or its balances do not add up, the page sends it to our server, reads it there with stronger text recognition, and keeps whichever result checks out. The server deletes the file after reading — unless it still cannot read it: then the file is kept encrypted for up to 14 days so we can add support for that bank.

We do count anonymous events so we know what works: for example “a 3-page statement was converted with the generic reader and the check passed”. These counters contain no names, account numbers, amounts or text from your statement.

2. Finding the transactions

A statement is a table drawn on a page, not a spreadsheet. StatementEasy rebuilds the table:

  • Lines and columns. Text pieces on the same height form a line. Amounts that line up on their right edge form a column, even when the printed header is missing.
  • Dates. Numeric dates (31/01/2025, 01-31-25, 2025-01-31), dates with month names (31 Jan, 3 janv., 15 mei) and dates without a year. Whether 04/05 means 4 May or April 5 is decided from the rest of the statement.
  • Amounts. 1,234.56 and 1.234,56, spaces as thousands separators, minus signs before or after, brackets, and CR/DR/OD markers.
  • Descriptions. Text that wraps onto a second or third line is joined to its transaction, including payment types printed above the date line.
  • Sections. “Deposits” and “Withdrawals” sections set the direction of unsigned amounts. Daily balance tables and summary boxes are left out.

3. The balance check

Most statements print a running balance after each transaction. StatementEasy uses it to prove the result:

previous balance + money in − money out = balance on this row

When this holds on every row, you see a green Balances match. When it fails, the rows are highlighted so you can see exactly where a value was misread or a row is missing. The same check also decides which column is money in and which is money out when the headers are unclear.

Statements without a running balance (many US statements and card statements) are checked on totals: opening balance + money in − money out must equal the closing balance printed in the summary.

4. Any bank, with or without a profile

Some layouts are tested on real statements and listed on the banks page. For those, the bank is recognised and its date format is known in advance. Every other statement goes through the same generic reader, which works out the layout on its own. That is why most banks work without being listed.

5. Scanned statements (beta)

If a PDF has pictures of pages instead of text — or you drop a photo (JPG, PNG, HEIC) — StatementEasy asks where to read it. On our server the pages are read at high resolution with Tesseract’s most accurate models and deleted after reading (a scan we still cannot read is kept encrypted for up to 14 days so we can support it); this gives the best result. On this device the same engine runs in your browser after a one-time 10 MB download, and nothing is sent. Clear, straight scans give the best results, and the balance check shows how good the result is. If a scan read on the device does not add up, you can send it to the server with one click.

6. When something is off

  • Click any cell in the preview to correct it. The check updates as you edit.
  • Use Columns look wrong? Fix them to say which number column is money in, money out, a single amount or the balance, and whether dates are day-first or month-first.
  • Remove rows you do not need, such as fee summaries a bank prints in the table.
  • Tell us about the layout. We add new banks every week.

7. What you download

The Excel file has a Transactions sheet with real dates and numbers, a frozen header and filters, and a Summary sheet with the period, totals, opening and closing balance and the check result. The CSV is UTF-8 with a header row, ready for accounting software.