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. Dedicated parsers for popular banks and AI for any other bank, results checked against your balances, no cloud storage of your statements, no subscription required to start.
Dedicated parsers first, AI when a statement needs it
Popular banks have 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, so the same statement gives the same file.
For any other bank, and for scanned PDFs, you can press "Read with AI": Claude, an AI model from Anthropic, reads the statement after that click. And when a dedicated parser's result doesn't add up against the printed balances, we re-check it with Claude automatically (website uploads only; the Chrome extension and the MCP server never use AI). Either way, when the statement prints opening and closing balances we add up every transaction and check it against them.
Your data stays yours
Bank statements contain sensitive financial information. We process your PDF in memory — it is parsed, the result is returned to you, and the PDF is not stored: no database entries, no temporary copies on disk, and no statement content in our logs or analytics.
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 16 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, TD Canada Trust, 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 with PostHog, Sentry and Umami, which receive events and error details but not statement content. File parsing happens in memory — no disk writes, no logs of statement content.
Get in touch
Questions, feedback, or bank support requests: [email protected]
Missing your bank? Use the bank request form and we'll prioritize it.