How accountants import bank statement PDFs into Xero and QuickBooks

If you do books for other people, you know the loop: client sends PDF statements, you need them in Xero or QuickBooks, and the bank feed is down, missing months, or never existed. Here is how I'd do it at volume, with rough times and which tool to use when.

Why this is annoying (the manual way)

The official answer is to set up a bank feed (Direct Connect, Web Connect, or Yodlee/Plaid in Xero) and let transactions flow in. What actually happens:

When the feed can't supply the data, you're left with manual entry (too slow at any real client load) or converting PDFs to CSV. This guide covers the latter.

The 30-second method with Bank2XL

Bank2XL is a Chrome extension. It turns a bank statement PDF into a Xero- or QuickBooks-ready CSV in one drag and one click.

  1. Install Bank2XL from the Chrome Web Store at bank2xl.app.
  2. In Settings, set the default output format to CSV.
  3. Click the Bank2XL toolbar icon.
  4. Drag the client's statement PDF onto the drop zone.
  5. Click "Convert to Excel" (the file comes out as CSV because of the Settings change).
  6. Download the CSV.
  7. In Xero: Accounting > Bank Accounts > pick the account > Manage Account > Import a Statement.
  8. In QuickBooks Online: Banking > pick the account > Upload from file.
  9. Map the columns (Date, Description, Amount), confirm, import.

Per statement: 30 to 50 seconds for the conversion, 1 to 2 minutes for the import. A year of monthly statements (12 PDFs) on one account takes about 30 minutes end-to-end. Manual entry takes hours.

What Bank2XL actually extracts

For every statement, the output has:

The reconciliation check is what tells you the extraction is right. If opening + credits - debits matches closing, you're done. If it doesn't, the Validation tab shows which rows to re-check before you import anything.

Xero and QuickBooks format requirements

Both Xero and QuickBooks accept CSV with column mapping. Bank2XL's CSV works with either. The specifics:

Xero expects (or can be mapped to):

Bank2XL outputs separate Debit and Credit columns by default. Xero's import wizard maps this with one click.

QuickBooks Online accepts a manual CSV upload in either a 3-column format (Date, Description, Amount with debits negative) or a 4-column format (Date, Description, Credit, Debit). Bank2XL's CSV maps cleanly to both via the upload wizard's column-mapping step.

QuickBooks Desktop uses Web Connect (.qbo) for bank data and has no native CSV-for-bank-feeds flow. Bank2XL doesn't generate QBO directly yet. If you're on Desktop, run the Bank2XL CSV through a CSV-to-QBO tool first, then import the .qbo via Banking > Bank Feeds > Import Web Connect File.

Handling bank format quirks across many clients

A typical practice sees a long tail of banks: regional banks, credit unions, business-only banks, and (for international clients) banks outside the US. The extractor handles them without per-bank rules. It works across:

Each one has a different column order, section layout, and page count. The extractor reads them anyway. Works across languages too.

When to use the alternatives

FAQ

Can I convert and import a full year of monthly statements? Yes. During beta the cap is 10 statements per day, so a 12-month year takes two days. Each month's CSV imports separately into Xero or QuickBooks.

What about duplicate transactions when the bank feed already has them? Xero and QuickBooks both flag duplicates during the import preview and let you uncheck them before they post. Always look at the preview.

Does this work for foreign-currency accounts? Yes. Bank2XL keeps the original currency in the metadata. For multi-currency accounts each row carries its own currency tag, so you can handle conversion in Xero or QuickBooks.

What if the client's statements are scans of paper statements? The extractor reads scanned PDFs via OCR. Old paper-mailed statements work, though accuracy is a few points lower than on text PDFs. The Validation tab catches reconciliation gaps.

Is the upload secure for client data? We process files over HTTPS and auto-delete them within 24 hours (kept briefly for debugging; opt out in extension Settings). Account numbers are masked in the output by default. We don't train AI on your content or share it. Full details at /data-retention.

Get started

Install Bank2XL from the Chrome Web Store at bank2xl.app. Free during beta: 10 PDFs per day, no signup. The honest test is to convert and import one client statement end-to-end into Xero or QuickBooks, look at the result, and decide from there.

Skip the manual cleanup — try Bank2XL free

Drop a PDF, get a clean Excel back. 10 statements per day during beta, no signup, no credit card.

Try free

← Back to all guides