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:
- Feeds break. Direct-connection feeds from big US banks go down sometimes, and accountants post about multi-day outages on community forums. Check that your feed has been stable before trusting it.
- Small community banks and credit unions often have no feed at all.
- International clients (UK, EU, AU, ZA) use banks that may not connect to Xero or QuickBooks.
- Year-end catch-up needs 6 to 12 months of historical statements. Bank feeds typically only pull the last 90 days.
- Onboarding a new client means importing their full prior-year transactions. Feeds do not backfill.
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.
- Install Bank2XL from the Chrome Web Store at bank2xl.app.
- In Settings, set the default output format to CSV.
- Click the Bank2XL toolbar icon.
- Drag the client's statement PDF onto the drop zone.
- Click "Convert to Excel" (the file comes out as CSV because of the Settings change).
- Download the CSV.
- In Xero: Accounting > Bank Accounts > pick the account > Manage Account > Import a Statement.
- In QuickBooks Online: Banking > pick the account > Upload from file.
- 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:
- Bank name and account holder
- Account number (masked) and account type
- Statement period and currency
- Opening and closing balance
- For each transaction: date, description, debit amount, credit amount, running balance, source page reference
- A reconciliation check on the Validation tab (Excel only; CSV is flat, one row per transaction)
- Original-language metadata for anything the AI didn't categorize
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):
- A Date column (DD/MM/YYYY or YYYY-MM-DD)
- An Amount column (single column with positive deposits and negative withdrawals, or separate Debit and Credit columns)
- A Description column (Payee, Reference, or "Description")
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:
- US retail banks
- US business and commercial banks (Mercury, Brex, regional commercial banks, etc.)
- Credit unions
- UK banks (high street and neobanks)
- EU banks and EU neobanks
- Canadian banks
- Australian banks
- South African banks
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
- Bank feed (Direct Connect, Web Connect, Yodlee, Plaid): best when it's stable. Set this up first. Reach for Bank2XL when the feed breaks or for historical periods.
- Manual entry: don't do it past a handful of transactions.
- Hubdoc, Receipt Bank: receipt-capture tools. Good for ongoing capture, not for retroactive PDF statements in bulk.
- AutoEntry (Sage): enterprise-tier tool. Around $0.54 per page, so it gets expensive. Older OCR-based extraction.
- MoneyThumb: PDF-to-QBO converter that's been around a while. Worth a look if you need QBO output for QuickBooks Desktop and want one tool for both.
- Bank2XL: Chrome workflow, vision-AI extraction without per-bank rules, reconciliation check on every output, free during beta so you can test on a few client statements before deciding.
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.