Tickvouch Every conversion ties out, or you see FAIL.
PDF bank statement to Excel or CSV

You don't have to check every line. The arithmetic already did.

Drop a statement below. It is read in this browser tab, the transactions come out, and then the one sum that proves them runs: opening balance plus every transaction has to equal the closing balance. Every conversion ties out, or you see FAIL.

Drop a PDF statement here

or click to choose one. One file in, one checked spreadsheet out.

Text-based e-statements from online banking, not scans or phone photos.

No account. No card. No sign-up to convert a statement. Nothing is counted, capped, or charged. The file is read on your machine and is not sent anywhere — there is a 30-second test for that further down.

The result nobody shows you

This is what a FAIL looks like

Every converter shows you its wins. Here is the other case, rendered exactly as this page renders it. The statement below is one of the test files in this project's own test suite. One row was deliberately deleted before parsing, to force the failure.

Extract from the demonstration file. The 15 January row is the one that was removed.
DateDescriptionAmountBalance
12/01/2026Card payment - Corner Book Shop-18.904,265.35
15/01/2026Transfer to savings — not extracted
21/01/2026Refund - Corner Book Shop18.903,784.25

The check does not tell you which row is missing. It tells you the file is short by exactly 500.00 — which is the thing you need to know before the numbers reach your client, not after.

There is a third result too, and it gets its own words rather than a quiet pass: Not found means the statement did not print both an opening and a closing balance, so there is nothing to check the rows against. The page says so instead of dressing it up as a PASS.

Why this exists

You can put it down

Read the reviews of the converters already on the market and the complaint is not speed. It is that people who like their converter still cannot stop auditing it. One reviewer of a competing tool, writing in November 2024:

"I had to go through them line by line to check and correct them."

Martin Short, review of DocuClipper, Trustpilot, 7 November 2024 — trustpilot.com

He bought a tool to stop doing work and the tool gave him a new job: checking the tool. That is the actual product problem in this category, and no amount of better extraction fixes it, because a better extractor still hands you output you have to verify.

A bank statement carries its own proof. The opening balance, plus every transaction on it, must equal the closing balance. That sum is arithmetic — it cannot be argued with, it cannot be talked around, and it does not depend on believing anything about us. Tickvouch runs it on every conversion and shows you the working.

Manual keying runs at roughly 0.5–1% errors per entry (Barchard & Pace 2011, Computers in Human Behavior 27:1834–1839). A converted statement either ties out or tells you it did not.

What that buys you is one specific thing: on this file, right now, without reading down the column, you know the numbers agree.

Singapore first

DBS, OCBC and UOB — where the PDF is the only copy you have

The reason a converter has to exist at all is that the three big Singapore banks give you far more years of PDF statements than years of downloadable transactions. Past a certain date, the PDF is your accounting record. Each figure below is quoted from the bank's own support page, linked so you can check it.

  • DBS

    Transaction history in digibank online shows up to the past 6 months. eStatements are kept for 7 years from the date of your enrolment.

    So month 7 onwards exists as a PDF and nothing else. DBS also consolidates deposit, investment and loan products onto one monthly statement, with credit cards on a separate one.

    Sources: transaction history, eStatements, consolidated statements. Read 13 August 2026. DBS guide

  • OCBC

    e-Statements go back up to 3 years, from the time you subscribed. OCBC's own page says that becomes 4 years in 2027 and 5 years in 2028.

    Statements are delivered as PDF. The retention clock starts at subscription, not at account opening, so a long-standing account can still have a short archive.

    Sources: e-Statements help, statements campaign page. Read 13 August 2026. OCBC guide

  • UOB

    Digital statements are archived for up to 5 years from the time you subscribe to e-Statements, and nothing before enrolment is visible.

    UOB states the eStatement or eAdvice "will be presented as a PDF file". If you enrolled late, the years before that are not in online banking in any format.

    Sources: eStatement page, banking services. Read 13 August 2026. UOB guide

The gap none of the three closes

On the pages above, none of the three names a CSV or Excel export of your personal transactions. DBS shows a download control on transaction history without stating the file format; OCBC and UOB name no spreadsheet export on their own personal-banking pages at all. Third parties describe CSV and XLS exports for all three, which is exactly the problem: the format your bookkeeping depends on is documented by everyone except the bank.

Other banks work too

There is nothing bank-specific inside the parser. It reads layouts, not logos, and it handles the four common ones: a single signed amount column, separate debit and credit columns, separate withdrawal and deposit columns, and a running-balance column — with dates as 03/01/2026, 01/15/2026, 15.01.2026 or 3 Jan 2026.

Statements from HSBC, Barclays, NatWest, Lloyds, Monzo, Revolut, Chase, Bank of America, Wells Fargo, Citibank, Capital One, American Express, PayPal, ANZ, Commonwealth Bank, TD Canada Trust and RBC convert on the same code path. If a layout is not one it recognises, the page tells you no transaction table was found rather than guessing at numbers.

Three steps, all of them in your browser

How it works

  1. 1. Read Your browser opens the PDF and reads its text layer, keeping the position of every word on the page. The open-source pdf.js library does this, running locally from this site. No copy of your file is made anywhere else.
  2. 2. Check The parser recovers the transaction rows — date, description, amount, running balance — then reconciles them: opening balance plus every transaction must equal the closing balance. It also checks that dates run forwards and sit inside the statement period, because a right amount on a wrong date still adds up. You see PASS, FAIL or NOT FOUND before you download anything.
  3. 3. Download CSV or Excel, with a Flags column. Rows the parser was unsure about are marked in the preview and the marking survives into the downloaded file, so the warning travels with the numbers instead of stopping at your screen.
Do not take our word for it

The 30-second test that settles it

"Your file stays on your machine" is a sentence anyone can type. This page is built so you can disprove it in half a minute if it is false.

  1. Load this page. Everything it needs is now in your browser.
  2. Turn off your wi-fi. Physically disconnect, or use aeroplane mode.
  3. Drop your statement in. It converts. The reconciliation runs, the preview appears, the download works.

A tool that uploads your file cannot do that. There is no version of this that works offline and also sends your bank statement somewhere.

The longer version, if you use developer tools

Open the Network panel before you convert. You will see no request carrying your file and no request to any other domain — no CDN, no web font, no analytics, no tag manager, no error reporter, no session recorder. Every asset on this page is served from this site: one stylesheet, one script, and two vendored open-source libraries. View source and read it; it is not minified beyond the vendor bundles.

The limit of that claim, stated up front

This applies to the in-browser converter on this page, which is the whole product today. If a future paid feature ever processes a file on a server, it will be labelled as such on its own page and this claim will not be stretched to cover it.

Nothing below is in a footer

The fine print, in large print

  • Today it costs nothing. There is no checkout on this site. No card field exists, so no card can be charged.
  • There is no subscription, which means there is nothing to cancel and no anniversary date to remember. Credit packs are one-time purchases.
  • Credits will not expire. Buy 200 pages, use 40 this month and 160 next March.
  • A credit is spent only on a delivered, reconciliation-checked conversion. Never on an upload, never on a preview, never on a file you already converted, never on a failure.
  • If a conversion fails its check, the credit comes back automatically. You do not email anyone. You do not explain yourself. Nobody assesses whether you deserve it — the check either passed or it did not, and the system reads the same result you do.
  • We add no fee of our own, ever. Where your country charges VAT, GST or sales tax, Paddle adds it at checkout and shows the total before you pay — tax law, not a hidden fee.
  • Unused balance is refundable within 30 days by replying to your receipt. That is the exit, printed next to the price, before you have paid anything.
  • Nothing is edited. This is a converter. It cannot change a date, an amount, a description or a balance. Altering a bank statement is fraud, and the tool is built so it cannot be used for it.
Planned, not live

What it will cost when it costs something

There is no checkout yet

These prices are the published plan, not a live product. Nothing on this site can take a payment today, and the converter above stays free whatever happens to the tiers below. Prices may change before launch; if they do, this page changes with them.

Tickvouch is built and run by one person in a personal capacity. It is not written for, reviewed by, or endorsed by any employer or regulator, and it is not legal, tax, accounting or regulatory advice.

50 verified pages

$15

$0.30 per page

  • One-time. Nothing to cancel.
  • Credits do not expire.
  • Refundable unused within 30 days.

750 verified pages

$99

$0.132 per page

  • One-time. Nothing to cancel.
  • Credits do not expire.
  • Refundable unused within 30 days.

Per-page figures are the pack price divided by the pack size, rounded to three decimals. Divide them yourself.

A page here is a verified page: a credit is only spent when a conversion is delivered together with its reconciliation check. A failed conversion costs nothing.

Read the full refund policy and terms of use before you buy. Our order process is conducted by our online reseller Paddle.com. Paddle.com is the Merchant of Record for all our orders.

Already bought? Enter your code

A code looks like TV-XXXX-XXXX-XXXX and carries the pages on the pack you bought. Checking it stores the code and its balance in this browser's localStorage, so you do not retype it. Nothing else is stored, and "Forget this code on this device" removes it.

Bought but lost the code? Retrieve it.

Including where they beat us

How this compares to the converters already out there

There are at least eight of them, several older and more featured than this one. The comparison page names them, quotes them from their own live pages with the date read, and includes a section on what they do better — because a comparison that finds us ahead on every row is an advertisement, not a comparison.

Read the comparison

Asked plainly, answered plainly

Questions

Which statements actually work?

Text-based PDF e-statements — the kind you download from online banking. The parser handles a single signed amount column, separate debit and credit columns, separate withdrawal and deposit columns, and a running-balance column, with dates written 03/01/2026, 01/15/2026, 15.01.2026 or 3 Jan 2026.

If yours does not parse, the page says no transaction table was recognised. It does not invent rows to look busy.

Do scanned or photographed statements work?

No, and not soon. A scan has no text layer, so there is nothing for an in-browser parser to read. The page detects this and says so rather than returning numbers guessed from an image.

This is the most common request and the one thing not built. Saying otherwise would be the easiest lie on the page.

Is my statement uploaded anywhere?

No. The file is read by JavaScript in your browser and never leaves your machine. Do not believe that sentence: turn off your wi-fi and convert anyway. It takes 30 seconds and it settles the question without involving us.

What does FAIL actually mean, and can I still download?

FAIL means the extracted transactions do not carry the opening balance to the closing balance. Usually a row was missed or an amount misread. You can still download the file — the check is information, not a lock. What you should not do is import it before you have found the difference.

What does NOT FOUND mean?

The statement did not print both an opening and a closing balance where the parser could find them, so the check had nothing to reconcile against. It is not a pass and it is not a failure — it means the proof was unavailable on this document, and you are told that instead of being shown a green tick.

Will it handle my DBS, OCBC or UOB statement?

Those three are the layouts this was built around first, which is why they have their own pages: DBS, OCBC, UOB. DBS consolidated statements put several products on one document; convert it and read the preview before you rely on it, because a consolidated statement's balance lines may not correspond to the single account you were expecting.

Can I edit the statement with this?

No, deliberately. It converts and it checks. It cannot change any value in the document. Altering a bank statement is fraud, and the tool has no code path for it.

Is it really free, and what is the catch?

The converter on this page is free with no account, no card and no usage cap, and conversion stays free. The catch, such as it is: paid credit packs are planned for people running many statements at once, and that is where the money is meant to come from. Conversion is the commodity. The checking at volume is the product.

What support is there?

One person, by email, working from Singapore, with a response target of two working days. There is no phone line and no chat widget, and someone in another timezone at 2am will not get an instant reply — pretending otherwise would be the wrong answer.

The real answer is that the tool does not need us to be awake. It runs in your browser, there is no account to be locked out of and no service to go down. The address is [email protected], and how support works is set out on the support page.

Can you tell me when scanned statements are supported?

Not yet. The box below joins a waitlist, and it is worth explaining where it goes. It posts to this site's own domain and nowhere else. No Formspree, no Mailchimp, no webhook — sending your address to another company's server would break the offline test above and make the privacy claim false. We store your address and the date you joined, and nothing else: no name, no IP address, no tracking. The privacy policy says the same thing and is the page to hold us to.

You can leave at any time: write to [email protected] and we delete your address. We have not sent a single message yet, and when we do it will carry an unsubscribe link.

Who is behind this?

One person, in Singapore, working on this outside employment and in a personal capacity. It is not connected to, reviewed by, or endorsed by any employer. Sales, when they exist, will be individual self-serve only — no corporate invoicing, no team licences, no consulting.