StatementKit
Convert bank statement PDFs into clean, structured data — entirely in your browser. Nothing is uploaded.
Drop a statement. Get verified Excel. Nothing uploads.
Drop a bank statement PDF here
or click to browse — files stay on this device, nothing is uploaded
Built for the people who retype bank statements for a living
Every month, bookkeepers, accountants, and mortgage brokers sit down with a stack of bank statement PDFs and an empty spreadsheet, and retype transactions by hand — because a bank's own export only feeds its own portal, and the PDF is the one format every client can actually hand over. StatementKit reads that PDF for you. Drop it in, and it comes back as a spreadsheet with real numbers, checked against the statement's own opening and closing balance, in under a minute. Your PDF is opened by JavaScript running in your own browser tab. It is never sent to us or anyone else. Built for people who'd rather bill for the hour they saved than spend it typing.
How it works
Reading the PDF
A bank statement PDF isn't a table underneath — it's text positioned at x/y coordinates on a page, the way a typewriter lays it out. StatementKit pulls every piece of text off every page along with its position, groups the pieces that share a row into a line, then looks at the gaps between columns of text across all those lines to work out where "Date" ends and "Description" begins, and where amount and balance sit. It runs this per page, because some banks reset column positions between pages of the same statement.
Verifying the numbers
Enter the opening and closing balance printed on the statement, and StatementKit walks every transaction in order, running a balance forward from the first row to the last, and tells you immediately if it doesn't land on the closing figure. That one check catches the failure mode that matters most: a merged cell, a split line, or a footnote row misread as a transaction. Most PDF-to-Excel converters stop at "here's a table that looks right" and leave you to spot an off-by-one row by eye. This one tells you the math doesn't add up before you've sent a client's numbers anywhere.
Exporting
The table on screen is the same one that gets exported, in whatever shape you've set — one signed amount column or separate debit and credit columns, US or ISO dates, balance in or out. Excel exports come out as real numbers, not text that looks like numbers, so a SUM formula works without a find-and-replace pass first. CSV is there for anything that just wants rows. QuickBooks and Xero each expect their own column headers and date conventions for bank-feed import, so those are separate export buttons rather than a CSV you reshape by hand afterward.
Why on-device matters
A bank statement isn't just numbers. It carries an account number, a running balance, and months of merchant history — enough on its own to piece together someone's identity, and often, if you're a bookkeeper, someone else's client data you're contractually and legally on the hook for. Uploading that to a stranger's server is a real risk, not a theoretical one, and no "we don't store your files" promise on a pricing page can fully close it — you're still trusting a claim you can't verify, about a server you'll never see.
StatementKit removes the question instead of answering it. There's no upload button that sends your file anywhere, because there's no server on the other end to receive it. The PDF parsing, the balance check, the Excel file it hands back — all of it runs in the JavaScript already loaded into your browser tab, the same way a spreadsheet formula runs on your machine and not ours. Close the tab, and nothing you dropped in it persists anywhere outside that browser session.
You don't have to take that on faith either. Turn off your WiFi. Drop a PDF. It still works.
Who uses this
Bookkeepers
Bookkeepers running 20-50 monthly clients spend the first week of every month pulling last month's statements and turning them into ledger entries before any actual bookkeeping starts. Cutting that from roughly an hour per client down to a few minutes each gives back most of a working week, every single month, indefinitely — time that goes back into billable advisory work instead of data entry.
Mortgage brokers
Mortgage brokers verifying income for a loan file often need 12-24 months of statements from more than one account, cross-checked for consistent deposits and unexplained gaps. Retyping two years of transactions by hand, per applicant, per account, is the part of underwriting nobody enjoys and every file still requires before it can move forward.
Small business owners
Small business owners doing their own quarterly taxes usually have one business account and a shoebox of statements they've been putting off since the last deadline. StatementKit turns an afternoon of manual entry into the kind of ten-minute task that stops quarterly taxes from being something you dread, and lets you actually start them on time.
Frequently asked questions
Is my bank statement uploaded anywhere?
No. There's no server in this product to upload it to. The PDF is opened and parsed by JavaScript running in your browser tab, and the resulting spreadsheet is generated and downloaded the same way. You can disconnect from the internet before dropping the file and it will still work exactly the same.
Which banks are supported?
StatementKit doesn't hard-code layouts for specific banks. It reads the position of text on the page and works out columns from whitespace, which is why it handles statements from banks it's never seen before. Very unusual layouts — rotated text, statements built as images of a table — can still trip it up.
What if the tool misreads a number?
Every cell it's unsure about gets flagged, and you can click any cell to correct it directly in the table before exporting — the fix is applied immediately, and undo/redo is available if you change your mind. The balance check also tells you if a wrong row leaves the running total off.
Does it work on scanned statements?
Only if the PDF has an actual text layer underneath — most bank-generated statements do. A scanned image with no embedded text has nothing for a browser to read as characters, so StatementKit will tell you it found no text rather than guess at numbers from pixels.
Can I export to QuickBooks or Xero?
Yes. Alongside plain CSV and Excel, there are dedicated export buttons that format the file with the column headers and date conventions each platform expects for a bank-feed import, so you're not manually reshaping a generic CSV before it'll import cleanly.
Is there a file size limit?
No hard limit is enforced, but performance depends on your own device, since all parsing happens in your browser rather than on a server built for the job. A typical monthly statement of a few pages processes in a couple of seconds; very long multi-year PDFs will take longer.
Does it work offline?
Yes, once the page itself has loaded. After that, opening a PDF, checking the balance, and exporting a file all happen locally, with nothing going out over the network. Turning off WiFi and dropping a file in is a legitimate way to confirm that for yourself.
How does the balance verification work?
You enter the opening and closing balance printed on the statement. StatementKit then adds up every transaction in order, starting from the opening figure, and compares the running total after the last row to the closing figure you entered, flagging the exact row where the math first stops lining up.