Bank statements,
out of the PDF.
Drop a statement — get CSV, Excel, or QuickBooks. Every number is checked against the statement's own math before you download.
Every conversion shows its work
Converters usually hand you a spreadsheet and wish you luck. This one proves itself first — using the numbers already printed on your statement.
Row by row
When a statement has a balance column, every row must satisfy previous balance + amount = this balance. All of them. No exceptions.
Opening to closing
No balance column? Then the opening balance plus every transaction must land exactly on the closing balance printed by the bank.
Signs solved, not guessed
Many statements print amounts unsigned. Instead of guessing, we solve for the sign that makes the whole chain agree — and report every flip we make.
Three files, ready for wherever your books live
One conversion returns all three — download whichever your workflow needs.
CSV
Opens clean in Excel, Sheets and Numbers. One signed column or debit/credit split — your pick. Formula-injection guard built in, so a description like =SUM(…) stays text.
Excel
Typed columns — dates are dates, amounts are numbers, not strings pretending. Sort, filter and pivot right away, no re-parsing dance.
QuickBooks (QBO)
Web Connect format QuickBooks imports natively. Transaction IDs are derived from the transaction itself, so re-importing the same statement won’t create duplicates. Checking, savings, credit card and more.
Prefer a terminal?
The web page is just a thin wrapper. The same engine — same parsing, same verification — ships as a CLI and a TypeScript library, for folders of statements or your own pipeline.
Your statement stays yours.
A bank statement is about as private as documents get. This tool is built so you never have to take anyone's word for it — including ours.
docker compose up
Fair questions
What about scanned statements?
Not yet. Image-only PDFs are rejected with a clear error instead of a silent garbage parse. OCR is on the roadmap — it ships when it can pass the same verification math.
My bank isn't on the list.
Try it anyway. The generic engine reads most layouts by geometry alone, and the verification math works for any bank. Named profiles just add polish for odd formats.
What happens when verification fails?
You see exactly where the chain breaks and fix it in one click — or export as-is with the gap noted in the file's warnings. Never a silently wrong number.
Any limits?
32 MB and 500 pages per file. Multi-account statements and foreign-currency sub-sections are still on the honest-limitations list.