Bank statements to Excel, with the wrong row already marked

Upload a bank or credit-card statement as a PDF, a scan or a phone photo, and download clean transactions. Every conversion is checked against the printed running balances, and any row that doesn't add up is flagged before you import it.

  • 3 free pages every day, no account
  • Files deleted right after processing
  • Credits never expire
statement.xlsx6 rows
Sample extraction. Each row carries the date, description, amount and running balance read from the statement, and the balance column is rebuilt from the amounts to check it against the figure the bank printed.
DateDescriptionAmountBalance
2026-03-03Card payment-42.601,866.31
2026-03-05Deposit2,140.004,006.31
2026-03-08Utilities-118.753,887.56
2026-03-12Supplier-960.002,927.56
2026-03-15Card payment-63.402,864.16
2026-03-19Transfer in500.003,364.16

Rebuilt balance 3,364.16 matches the printed closing balance

Sample statement. Run this one and watch the check happen on your own screen.

What format does my accounting software need?

Xero and most other tools take OFX, QuickBooks takes QBO, Quicken takes QFX, older desktop software takes QIF, and a spreadsheet takes Excel or CSV. Pick the format on the way out. Excel and CSV for spreadsheets, OFX for Xero and most others, QBO for QuickBooks, QFX for Quicken, QIF for older desktop software, JSON if you're building something.

  • Excel.xlsx with real dates and number columns
  • Google Sheetsvia CSV, dates as YYYY-MM-DD
  • Xerovia OFX, Import a Statement
  • QuickBooks Online.qbo, Upload from file
  • QuickBooks Desktop.qbo Web Connect
  • Quicken.qfx
  • QIFfor older desktop software
  • JSONevery field plus per-row check status

Format compatibility only. We are not affiliated with any of these companies. Compare the formats

How do I convert a bank statement PDF to Excel?

Upload the PDF, scan or photo, wait while each page is read, and download the spreadsheet with the balance check already run over it.

  1. Upload

    Drop in a PDF, a scan, or photos of a paper statement. Bank statements and credit-card statements both work. Up to 20 MB or 100 pages per file.

  2. We read it, then we check it

    Every row is extracted: date, description, debit, credit, balance. Then the arithmetic is verified: opening balance plus transactions has to equal each printed balance and the closing balance. Rows that don't reconcile get flagged.

  3. Download

    Excel, CSV, QBO, OFX, QFX, QIF or JSON. Your file is discarded the moment the conversion finishes.

See it step by step

The converted statement in the app: dated rows with debit, credit and balance columns, and the balance check reported above them
The result screen. Every row, and the check that says the column adds up.

Most converters guess. This one checks.

Every row is recalculated against the running balance the bank printed beside it, and any row that does not match is flagged in the file you download.

A converter that reads a statement and hands you a spreadsheet is asking you to trust it. We would rather prove it. StatementTable rebuilds the running balance from the transactions it extracted and compares it, row by row, against the balance printed on your statement.

Excerpt of the printed statement
Printed on the statement
DateDescriptionWithdrawalsDepositsBalance
Opening balance1,908.91
05/04STANDING ORDER RENT42.851,866.06
05/07SERVICE FEE310.991,555.07
05/10PAYROLL ACME CORP512.092,067.16
05/11HOME DEPOT #61012.882,064.28
The extracted table with the reconciliation check
What you download
DateDescriptionDebitCreditBalanceCheck
2026-05-04STANDING ORDER RENT42.851,866.06
2026-05-07SERVICE FEE310.991,555.07
2026-05-10PAYROLL ACME CORP512.092,067.16
2026-05-11HOME DEPOT #61012.882,064.28

Rebuilt from the four rows above, the closing balance lands on the printed 2,064.28.

Everything lines up

You get a green badge and can import with confidence.

A row breaks the chain

That row is highlighted so you can fix one cell instead of re-reading 80. We never silently correct an amount.

No balance column

Most credit-card statements print no running balance. The export marks the check as unavailable on those, rather than implying it passed.

How the check works

Seven layers, not one pass

Ask a general-purpose assistant to convert a statement and it does one thing: it reads the document and answers. A conversion here passes through seven layers, and four of them exist only to catch what the reading missed.

  1. Route the file

    Before a single row is read, the file is classified.

    A PDF with real text under it, a scan, and a photo taken on a phone are three different problems. This layer counts the pages, decides whether the text layer can be trusted, and picks the reading path and the model from that. A native PDF never pays for image work it does not need.

  2. Split into pages

    The statement is cut into single pages and read in parallel.

    A sixty page statement becomes sixty small independent problems, five in flight at a time. Nothing depends on one model holding sixty pages in mind at once, which is where long documents quietly lose rows out of the middle.

    One pass instead The whole document in a single context, where the middle gets the least attention.

  3. Read every row

    Date, description, debit, credit and balance, as structured fields.

    Each page comes back as data with a fixed shape, not as prose that has to be picked apart afterwards. A field the statement does not print comes back empty. Turkish and European number formats are converted, dates are disambiguated from the document's own country and language, and DR and CR suffixes keep their sign.

    Worth knowing The statement is treated as data, not as instructions. Text planted inside a document to steer the model is ignored.

  4. Stitch the pages together

    Page breaks are repaired before anything is counted.

    Statements print things at the page edge that are not transactions: balance brought forward, carried forward, devreden, nakli yekûn, page subtotals. Those come out. A transaction whose description runs over the break is joined back into one row. A row printed on both sides of a boundary is deduplicated.

    One pass instead Those lines arrive as transactions, and the total is wrong by an amount nobody thinks to look for.

  5. Reconcile against the printed balance

    The running balance is rebuilt from the transactions and compared with the statement.

    Opening balance plus every credit minus every debit has to equal each printed balance, and then the closing balance. Statements that print newest first are detected and checked in that direction. On credit-card statements the sign flips, because the printed figure is debt: purchases raise it and payments lower it.

    One pass instead Nothing adds the column up, so a misread digit looks exactly like a correct one.

  6. Repair what broke

    A failed check triggers a targeted second read, not a blind retry.

    When the chain breaks at a page boundary, the two pages on either side are read again together in one request so the join is visible. The new answer replaces the old one only where it scores better against the printed balances. If the chain is still broken, the exact pages the failing rows came from go to a stronger model, up to five of them, under the same rule.

    One pass instead Run the whole thing again and compare two answers by eye.

  7. Report what is true

    Every conversion says which check ran and what it found.

    A statement whose chain closes is marked reconciled. A row that breaks it is flagged where it sits, and the amount is never quietly corrected on your behalf. A statement with no running balance column, which is most credit-card statements, is marked Check unavailable rather than passed. The status travels with the data into the JSON export.

The full walkthrough, with the failure each layer was built for

Why not just ask a chatbot?

For a two-page personal statement you'll read over by hand, a general-purpose assistant may be enough. It stops being enough at the point where an accountant's work starts.

A general-purpose chatbot compared with StatementTable
The jobA general-purpose chatbotStatementTable
Confidentiality for client data Your problem Consumer chat inputs can be used to improve the model, depending on plan and settings. Under the AICPA confidentiality rule, sending client information to a third-party AI without consent is a disclosure. Not kept The file exists only while your conversion runs. Our AI document-processing provider does not train on our data, and no file name or account number is logged.
Arithmetic and dropped rows Unchecked A dropped row or a misread digit looks exactly like a correct one, and nothing adds the column up for you. Reconciled The running balance is rebuilt and compared with every printed balance. Rows that don't add up are flagged.
A record for the reviewer A transcript When someone asks how a figure was produced, a chat log is what you have. Per-row result The check status sits beside every row, in the spreadsheet and in the JSON, and goes in the workpapers.
Repeatable results Varies No memory between chats, and the columns and categories come out differently from one run to the next. Same every time The same columns, the same checks, and a JSON export with the check status on every row.
Page limits on uploads Capped Every plan caps pages per conversation and uploads per day, and the ceilings change. A year of statements for one client rarely fits in one chat. Per file Up to 100 pages per file, as many files as you have pages for. 3 free pages a day, then from $0.079 a page.
Accounting import files CSV to map A CSV has to be mapped to the right columns on every import, and QuickBooks Desktop takes bank transactions only as a QBO file. OFX, QBO, QFX, QIF Plus Excel, CSV and JSON, all from one conversion.

The full comparison, including where a chatbot is the better choice

Can I convert a scanned statement or a phone photo?

Yes, and the balance check runs on those exactly as it does on a native PDF. Not every statement arrives as a clean PDF. Clients photograph paper statements, and banks hand out scans. Both go through the same pipeline, and the same balance check runs on the result, so a misread figure surfaces as a flagged row instead of a quiet error in your books.

That's the point of the check. On a scan you shouldn't have to trust the reader; you should be able to see where it went wrong, in a highlighted row.

  • Scanned PDFs, or up to 10 JPG or PNG photos of one statement
  • Slower than a native PDF: about 20–40 seconds a page, because every pixel is read
  • Rows that don't reconcile are highlighted for you to check against the paper

Tips for photographing a statement

From your phone

Open the converter on your phone and take a photo of each page. Photos are downscaled in your browser before upload and treated as one statement, in the order you choose.

Built for the people who do this every month

Accountants

Month-end closes where the bank feed didn't cover January, or the client only has PDFs. Convert, check, import, move on.

For accountants

Bookkeepers

Twelve months of statements for a new client, at under 10 cents a page, with no subscription to carry between clients unless you want one.

For bookkeepers

Sole traders

A year of statements before the tax deadline, converted in one sitting, with every row checked against the printed balance. A $9 pack covers it.

For sole traders

What happens to your file

We don't keep your file. It exists only while your conversion runs, then it's deleted.

Your statement is processed in memory and discarded when the response is sent. We write no copy of the file or its contents to disk or to a database. What's left afterward is a counter: how many pages were converted and whether the check passed. No file name, no account number, no transaction text.

The full data flow, including what we don't have

One reader, no training

Our AI document-processing provider reads the pages to extract the table. It doesn't train on the data and deletes inputs within 30 days.

No card details here

Checkout, invoicing and tax are handled by our merchant of record. Card numbers never reach our servers.

No tracking

No tracking cookies, no advertising pixels, no third-party analytics.

Pay for the pages you convert

Buy a pack of pages and use them whenever you like, and they never expire. Converting every month? Practice and Firm roll unused pages over while you're subscribed. Either way, a conversion that fails costs you nothing.

Credit packs, for work that comes and goes

Free

$0

3 pages every day, with or without an account

  • No account, no card
  • Every export format
  • Balance check on every file
  • Scans and photos included
  • Resets daily at midnight UTC
Convert a statement

Starter

$9

60 pages · $0.15 a page

  • Everything in Free
  • Credits never expire
  • Pages deducted only after success
  • Email support
Buy Starter

Pro

$29

300 pages · $0.097 a page

  • Everything in Starter
  • Covers a year of statements for several accounts
  • Unused credits refundable for 14 days
  • Priority support
Buy Pro

Office

$79

1,000 pages · $0.079 a page

  • Everything in Pro
  • For onboarding batches and loan files
  • Unused credits refundable for 14 days
  • The same page price this month or next year
  • Priority support
Buy Office

See full pricing, including what counts as a page

Questions

Is my statement stored anywhere?

No. Your PDF is held in memory only while it's being processed and discarded when the response is sent. We don't write your file or its contents to disk or to a database. What remains is an anonymous counter, holding the page count, document type and pass or fail, with nothing that identifies you or your bank account. The extraction runs through our AI document-processing provider, which does not train on the data and deletes inputs within 30 days.

How accurate is it?

No converter can promise a number that holds for every document, and the ones that advertise a percentage are quoting their own test set, not your statement. We answer the question differently: every conversion is checked against the running balance the bank printed, so you can see whether it came across correctly on the document in front of you. Three pages a day are free, so you can settle it with your own statement before you spend anything. How we validate releases.

Which banks work?

The extractor reads the printed table rather than matching a bank-specific template, so most banks work on the first try, which is also why scans and photos go through the same path. The supported banks page lists the layouts we have confirmed end to end. If yours is not on it, run one statement on the free tier and read the balance check.

What does the balance check actually do?

It rebuilds your running balance from the transactions we extracted and compares it against the balance printed on each line of your statement. Opening balance plus transactions has to equal each printed balance and the closing balance. When a line breaks the chain, that row is highlighted with the difference shown, so you can check one cell against the PDF instead of proofreading the whole file.

What if my statement has no balance column?

Many credit-card statements print only a previous balance and a new balance, with no running balance on each line. The check reconciles those totals instead and the badge reads "closing total checked". Where the statement prints no usable total either, the badge reads "check unavailable" and every exported row carries that status, so nothing implies a check that did not run.

Do scanned statements and phone photos work?

Yes. You can upload a scanned PDF or up to 10 JPG or PNG photos of paper pages, including pictures taken with a phone. They take longer, 20 to 40 seconds a page against seconds for a native PDF, because every pixel is read. The balance check matters most here: it's what catches a misread digit.

Which format should I download?

Excel or CSV if you're working in a spreadsheet. QBO for QuickBooks Online. OFX for Xero and most other accounting software. QFX for Quicken. QIF for older desktop tools. JSON if you're feeding another system. There's a full decision table on the formats page, with import steps for QuickBooks and Xero.

What does the free tier include?

3 pages every day, with no account and no card, and an account does not change that number. Everything is included: every export format, the balance check, scanned and photographed statements. It resets daily, so a short monthly statement costs nothing.

Do credits expire?

No. Credit packs are one-time purchases and unused pages stay on your account indefinitely. There's no subscription to cancel and no monthly allowance that evaporates, which is the single most common complaint about subscription converters. If you'd rather pay monthly, the Practice and Firm plans roll unused pages over while you're subscribed.

Can I edit or generate a statement with this?

No, and we won't build that. StatementTable only extracts what is printed. It doesn't create, alter or "repair" statements. If you're looking for a tool to modify a bank statement, this isn't it.

More on the help page, including how particular statements are handled.

Convert one and see

Three pages a day are free, and you don't need an account to run your own statement through it.

Last updated September 12, 2026