About ConvertStatement
A simple tool that does one thing well.
Why this exists
Every accountant, bookkeeper, and small business owner knows the pain: your bank gives you a PDF statement, but your accounting software needs CSV, Excel, or QBO. You end up manually retyping transactions or paying $25+/month for clunky enterprise tools.
ConvertStatement exists to solve exactly this problem. Upload a PDF, get a clean file in the format you need. No AI guessing, no cloud storage of your data, no subscription required to start.
Rule-based, not AI-based
Unlike tools that use AI/OCR to guess at your data, ConvertStatement uses dedicated parsers built specifically for each bank's statement format. Every parser is handcrafted to understand the exact layout — column positions, date formats, transaction patterns — of that bank's PDF.
This means no hallucinated numbers, no misread dates, no "close enough" amounts. When a parser extracts $1,234.56, that's exactly what your statement says.
Your data stays yours
Built by
Vladimir Boldyrev — product engineer and founder. ConvertStatement is the bank-statement tool inside a portfolio of focused micro-SaaS products for professionals who work with documents and data every day.
Find more at vboldyrev.com · code on GitHub.
How ConvertStatement is built
Each of the 15 supported banks has its own dedicated parser under src/lib/parsers/ — Chase, Bank of America, Wells Fargo, Capital One, Citibank, U.S. Bank, PNC, TD Bank, Barclays, HSBC, Santander UK, Revolut, N26, Deutsche Bank, and ING. Every parser is hand-tuned to that bank's specific quirks: date format, decimal convention, column layout, description prefixes, multi-line handling, and the bilingual labels used by EU neobanks like N26 (German/English) and ING (Dutch/English).
Detection is conservative on purpose. The TD Bank parser, for example, requires the exact phrase "TD Bank" so it does not collide with TD Ameritrade brokerage statements; the Citibank parser explicitly rules out "citicorp". For European banks the parser reconstructs debit/credit signs from running balance arithmetic with a 0.01-tolerance check, because most UK and EU statements print unsigned amounts.
The whole stack is Next.js 16 + TypeScript, runs on a single self-hosted Docker container behind Cloudflare, and is observed end-to-end with PostHog and Sentry. File parsing happens entirely in memory — no disk writes, no logs of customer data.
Get in touch
Questions, feedback, or bank support requests: [email protected]
Missing your bank? Use the bank request form and we'll prioritize it.