River
Y CombinatorBacked by Y Combinator

Finance & AccountingFree

Bank Statement PDF to Excel Converter

One transaction table with a running balance, every row traced back to the page it came from, and the lines it could not read named.

Start here

River's bank statement to ledger tool reads statement PDFs, including scanned pages, and returns one transaction table you can work in. Every row carries its date, description, amount and a running balance, plus the page and line it was lifted from. Alongside it comes a short document naming the rows it could not read cleanly, the suspected duplicates, and the pages that needed vision rather than text extraction. Nothing is dropped without being named.

Unlike the converters that rank for this search, the table is not the finish line here. Most of them stop once the extraction agrees with the statement's own closing balance, which proves the reading was consistent and nothing more. This one carries that check and then hands you what the next step needs. Duplicates come flagged with both rows, exceptions are listed individually, and a provenance column means a disputed line is settled by opening one page rather than the whole PDF.

Written for bookkeepers onboarding a client who arrives with a year of PDFs, founders doing their own books before a raise, and anyone rebuilding records that were never kept. Reach for it when the bank's download only reaches back a few years, or when the account offers no CSV export at all. A marketplace deposit arrives as one line, and the settlement reconciliation breaks it back out. The same table is where a lender package starts, and where a startup cash flow forecast or a twelve month projection narrative has to get its actuals.

Tying to the closing balance is not a bank reconciliation

A converted statement that agrees with its own closing balance has passed an extraction check, not a reconciliation. The two numbers are different, and the gap is not small. In the IRS's own worked example the closing balance on the statement is $1,458.12, while the figure the books have to agree with is the adjusted balance of $2,149.03. The $690.91 between them is $1,217.41 of deposits in transit less $526.50 of outstanding checks, items that by definition appear nowhere on the statement being converted.

The reason that check matters at all is that a bank statement PDF usually contains no table. Tagged PDF, the feature that records rows and columns as structure, is optional in the PDF specification and its flag defaults to false. Reading order and explicit word breaks are only guaranteed inside a tagged document too. An ordinary statement is glyphs at coordinates, so every converter is inferring the table from geometry, which is why merged descriptions and out-of-order rows are a format problem rather than sloppy tooling.

Two facts make the arithmetic check free. Regulation E requires every US consumer statement to carry the balance at the beginning and close of the period, so the numbers to tie to are always printed. And the same regulation names the omission of a transfer from a statement as an error the consumer has 60 days from the statement being sent to raise. A row dropped quietly in March and found in a December cleanup is past remedy, which is why a converter should name what it could not read.

How it works

  1. Add the statements

    Paste or attach the PDFs, scans included, for one account or a whole year of them.

  2. River reads every page

    Each transaction pulled with its source page, then the running balance checked against the printed totals.

  3. Get the table

    A sheet of normalized transactions, plus a document naming exceptions, duplicates and pages needing vision.

  4. Resolve the exceptions

    Ask about any flagged row, correct a misread description, or add the next month and rerun.

What you get

  • One transaction table with date, description, amount and a running balance that ties out
  • Every row carries the page and line it came from, so a disputed figure ends fast
  • The lines it could not read named individually, rather than quietly missing from the total
  • Suspected duplicates flagged with both rows attached, since one payment often appears twice
  • Scanned and photographed pages handled, with the pages that needed vision listed separately
  • The opening and closing balances checked against your rows, and any shortfall reported in dollars

Common questions

Does it work on a scanned statement, or only a text PDF?

Both. A text PDF is more reliable because the characters are already in the file to be read, while a scan has to be recognized from the image first. Scanned pages are handled and then listed separately in the exceptions document, so you know which rows came from vision rather than text and can spot-check those first.

How do I know it did not quietly drop a transaction?

The running balance is checked against the opening and closing figures the statement prints, and any difference is reported as a number rather than absorbed. Lines it could not parse are listed with their page reference instead of being omitted. If the arithmetic does not close, you are told what it is short by and which pages to look at.

Is this a bank reconciliation?

No, and the distinction is the point. It produces a transaction table that agrees with the statement, which is the input to a reconciliation rather than the reconciliation itself. Outstanding checks and deposits in transit never appear on the statement at all, so tying the two sides together is where the bank reconciliation pack starts. Once posted, the trial balance normalizer takes the ledger from there.

Which date does it use, the transaction date or the posted date?

The date printed on the statement row, which is the posting date the bank credited or debited. A card receipt often carries an earlier date, so the two legitimately disagree by a day or more. Where a statement supplies both, both are kept and the columns are labelled, so you are never guessing which one you are looking at.

Can I use the output as audit evidence for cash?

No. A spreadsheet built from a client-supplied PDF is a bookkeeping input. Under the PCAOB standard on confirmation an auditor obtains cash confirmation directly from the financial institution, or views the balance on the bank's own system. Use this to get the books right, not to support a cash assertion.

How many statements can it take at once?

A year of statements for one account is a normal run, and several accounts is fine, the natural point to map the full account structure. One caution on completeness: a monthly statement is not guaranteed, because a low-activity account can lawfully be sent quarterly, so twelve files per year is the wrong assumption when a month looks missing. Company card cycles go to the card statement and receipt matcher instead.

What happens to the unpaid invoices I find in here?

The table shows what cleared, so a customer who never paid shows up as an absence rather than a row. Deposits are matched against whatever invoice list you provide, and the gaps come back as a list. From there the late payment reminder writes the chase email, and a clean transaction history is also what an investor-ready financial model gets built on.

Bank Statement PDF to Excel Converter

Fill in the form and your workspace opens with the work already underway.