How to convert a bank statement PDF to CSV for QuickBooks Online

QuickBooks Online does not read a PDF statement directly. You need a CSV with the right columns, one consistent date format, and one clean amount column. This guide covers the manual method, the format Intuit describes, and the mistakes that cause failed or silently wrong imports. (Using Xero? See the Xero version.)

1. First, check what kind of PDF you have

Open the PDF and try to select a line of text with your cursor. If you can, it has a text layer and the methods below work. If you can't (it is a scan or a photo), you need OCR first, and every method below will give poor or empty results without it.

2. The manual method

Excel (Microsoft 365)

  1. Go to Data > Get Data > From File > From PDF, pick the file, and choose the table(s) in the Navigator. Load them, or choose Transform Data to clean first (Microsoft: Power Query PDF connector). Statements that run over several pages come in as several tables; see the PDF to Excel guide for the fix.
  2. Delete header, footer, and summary rows so only transaction rows remain. Multi-page statements often repeat the header row on each page.
  3. Make the columns Date, Description, Amount (see section 3).
  4. Save as CSV.

Google Sheets or older Excel

  1. Select the transaction table in the PDF viewer, copy, paste into a sheet.
  2. If everything lands in one column, use Data > Split text to columns.
  3. Rejoin descriptions that wrapped onto a second line, and delete blank rows.
  4. If you need the 3-column layout, combine separate Debit and Credit columns into one signed Amount. If money out is in column C and money in is in D, put =D2-C2 in a new column and fill down (money in positive, money out negative).
  5. Download as CSV.

Always check the result: add opening balance + money in − money out and compare it to the closing balance on the statement. If they differ, a row was missed, duplicated, or has the wrong sign.

3. What QuickBooks Online asks for

Intuit's UK help article (Prepare your CSV file for bank upload, read 2026-10-04) describes two layouts:

LayoutColumns
3 columnDate, Description, Amount (negative = money out, positive = money in)
4 columnDate, Description, Credit, Debit (one of the two filled per row, not both)

The same article says to keep all dates in one consistent format, leave zero amounts blank, and remove special characters such as ! @ # $ % ^ & * ( ) , . ? " : { } | < > from the data. It recommends dd/mm/yyyy on that UK page and says to save as a Windows CSV. The US version of that article returned a 404 when I tried it. For a US company file, a secondary source (dancingnumbers.com) gives MM/DD/YYYY as the example. Check the date format your QuickBooks region accepts with a 3-row test file first.

In QuickBooks, you import via Banking > Link account > Upload from file and map the columns (same secondary source).

4. Common pitfalls

5. One more option: a desktop script

I sell a one-time $29 Python script that reads text-layer PDF statements and writes CSV. It is a script you run on your own computer, not a website or an app with buttons. You need Python installed and one install command (pip install pdfplumber). It does not read scanned, photographed or password-protected PDFs. I have not tested it on a real bank's statement layout, so check its output against your statement. Bank Statement PDF to CSV Converter on Gumroad.

If your statements are scanned, or you do only a few a month, the manual method above is the better choice.