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

Bank statements contain sensitive financial information. We process everything in memory — your PDF is parsed, the result is returned to you, and nothing is stored. No database entries, no log files, no temporary copies on disk.

Read the full details on our Security and Privacy pages.

Built by

VB

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.