How to Import Bank Statements into Xero (CSV, OFX, and Direct Upload)
Step-by-step guide to importing bank statements into Xero. Convert PDF statements to Xero-compatible CSV or OFX format. Free converter included.
Xero's automatic bank feeds work well — until they don't. Maybe your client's bank isn't supported by direct feeds. Maybe you need to import historical statements from before the feed was connected. Maybe you switched a client from another accounting tool and need to bring in six months of transaction data.
Whatever the reason, you need to get bank statement data into Xero manually. The problem is that most banks give you PDF statements, and Xero doesn't accept PDFs. It needs structured data — CSV or OFX format — with the right columns in the right order.
This guide covers three methods for importing bank statements into Xero, the exact format requirements Xero expects, and how to fix the most common import errors.
When You Need to Import a Bank Statement into Xero
Xero's direct bank feeds cover most major banks, but there are common situations where manual import is the only option. These include banks not supported by Xero's feed network, historical transactions predating the feed connection, and client onboarding from other accounting software.
Your bank isn't on Xero's direct feed list. Xero supports automatic feeds from hundreds of banks, but not all of them — particularly smaller regional banks, credit unions, and banks outside the US, UK, and Australia. If your bank isn't connected, manual import is your only path.
You need historical transactions. Direct feeds typically pull in 90 days of history when first connected. If you need transactions from six months ago or further back, you'll need to import them from downloaded statements.
Client onboarding. When you take on a new bookkeeping client and move them to Xero, you often need to import their transaction history from their previous accounting setup. That usually means converting their bank statements into a format Xero can read.
Correcting or supplementing feed data. Bank feeds occasionally miss transactions or pull in duplicates. Importing a statement for a specific period lets you fill gaps or verify the feed data against the bank's official records.
Multi-currency or international accounts. Some international bank accounts don't support direct feeds in Xero, even if the domestic version of that bank does. In these cases, manual import is the workaround.
What Formats Does Xero Accept?
Xero accepts bank statement imports in three formats: CSV, OFX, and QIF. CSV is the most flexible option and works with statements from any bank, while OFX provides cleaner automatic field mapping and is preferred when available.
CSV (.csv) — the most universal option. Any bank statement can be converted to CSV, and Xero walks you through mapping the columns during import. The downside: you need to make sure the date format, column order, and encoding are correct, or Xero will reject the file or misread the data.
OFX (.ofx) — Open Financial Exchange format. Xero reads OFX natively and maps fields automatically, so there's no manual column matching. This is the cleanest import experience. The catch: most banks don't let you download statements in OFX format. You'll need a converter to get there.
QIF (.qif) — an older format originally designed for Quicken. Xero supports it, but it carries less transaction detail than OFX and has known issues with date formatting across regions. Use this only if it's your only option.
What Xero does NOT accept: PDF, Excel (.xlsx), Google Sheets, or plain text. If your bank statement is in any of these formats, you'll need to convert it first.
Method 1: Convert Your Bank Statement PDF and Import (Recommended)
BankConv converts PDF bank statements from 1000+ banks into Xero-compatible CSV and OFX files in under 30 seconds. This is the fastest method for getting statement data into Xero — upload the PDF, choose your format, and import the output file directly.
This is the method most bookkeepers use when they have a PDF statement and need it in Xero. Here's the step-by-step:
1. Convert your PDF statement to CSV or OFX
Go to BankConv's free bank statement to CSV converter. Upload your bank statement PDF — BankConv supports statements from all major UK, US, Indian, Canadian, and Australian banks, including Barclays, HSBC, Chase, Bank of America, and 1000+ others.
Choose your output format:
- CSV if you want to review the data in Excel or Google Sheets before importing
- OFX if you want the cleanest import experience with automatic field mapping in Xero
Download the converted file.
[Screenshot opportunity: BankConv converter with format selection showing CSV and OFX options]
2. Go to your bank account in Xero
Log in to Xero and navigate to Accounting → Bank Accounts. Click on the bank account you want to import transactions into.
On the bank account page, click the "Import a Statement" button (you'll find it in the account options or under the statement balance area).
3. Upload your converted file
Select the CSV or OFX file you just downloaded from BankConv.
If you chose OFX: Xero reads the file automatically. Review the transactions and click Import. Done.
If you chose CSV: Xero will ask you to map the columns. You'll need to tell Xero which column contains the date, which contains the description, and which contains the amount. BankConv outputs clean, consistently formatted CSV files, so the mapping step is quick — typically Date, Description, and Amount are clearly labelled in the header row.
4. Review and reconcile
After import, the transactions appear in your bank account's reconciliation queue. Match them against invoices, bills, or existing transactions as you normally would.
Tip: If you're importing multiple months of statements, convert and import them one at a time in chronological order. This keeps your running balance accurate and makes it easier to spot any gaps.
[Screenshot opportunity: Xero's import statement screen with column mapping interface]
Method 2: Import a CSV Directly from Your Bank
Some banks let you download transactions as CSV files directly from their online banking portals. If your bank offers this, you can skip the conversion step entirely and import the CSV into Xero.
Banks that typically offer CSV download: Most major UK banks (Barclays, HSBC, Lloyds, NatWest) offer some form of transaction export, though the format varies. Some provide CSV, others provide QIF or their own proprietary format.
The catch: Bank-exported CSVs don't always match Xero's expected format. You might run into date format issues (DD/MM/YYYY vs MM/DD/YYYY), extra columns that confuse the mapper, or inconsistent transaction descriptions. If the import fails or looks wrong, converting the PDF statement through BankConv often gives a cleaner result because the output is standardised.
Steps:
- Log in to your bank's online banking
- Navigate to your account's transaction history or statements section
- Look for a "Download" or "Export" option and select CSV format
- Choose your date range
- Import the downloaded CSV into Xero using the same steps from Method 1 (step 2 onwards)
Method 3: Manual Entry
For completeness — you can always type transactions into Xero by hand. Go to your bank account, click "Add Transaction," and enter each one individually: date, description, amount.
This works if you have 5 transactions. It doesn't work if you have 50, or 500. A typical monthly bank statement has 30-100 transactions. At roughly 30 seconds per transaction, that's 15-50 minutes of manual data entry per statement. For a bookkeeper handling 10 client accounts, that's an entire day of typing.
This is exactly the problem a bank statement converter solves. Convert the PDF, import the file, and spend those hours on actual accounting work instead.
Xero CSV Format Requirements
When importing CSV files into Xero, the format matters. Xero is specific about what it expects, and small mistakes in formatting cause imports to fail silently or produce garbled data. BankConv outputs Xero-compatible CSVs by default, but if you're formatting a CSV manually, here's what Xero requires.
Required columns:
- Date — the transaction date. Xero accepts DD/MM/YYYY, MM/DD/YYYY, or YYYY-MM-DD, but you must be consistent throughout the file. The format should match your Xero organisation's region settings.
- Amount — the transaction amount. Use a single column with negative values for debits and positive for credits. Alternatively, you can use two separate columns (one for debits, one for credits) — Xero supports both approaches.
- Description — the transaction description or payee name.
Optional but useful columns:
- Payee — the name of the person or business
- Reference — cheque number or transaction reference
- Transaction type — if your bank categorises transactions
Formatting rules:
- Encoding: UTF-8. This matters if your transactions contain special characters (accented names, currency symbols). Non-UTF-8 files can produce garbled text.
- Delimiter: Comma-separated. Not semicolons, not tabs.
- Header row: Include a header row with column names. Xero uses it during the mapping step.
- No merged cells or extra rows: The file should be clean tabular data — no bank logos, no summary rows at the bottom, no blank rows between transactions. This is a common issue with bank-exported CSVs and one reason converted files from BankConv tend to import more cleanly.
- Decimal separator: Use a period (.), not a comma. So £1,234.56 should appear as 1234.56 in the amount column.
Common Import Errors and How to Fix Them
Xero's bank statement import can fail or produce incorrect results for several predictable reasons. Most import errors stem from date format mismatches, duplicate transactions, or encoding issues — all of which are preventable with the right file preparation.
"Date format not recognised" This is the most common error. It happens when your CSV uses DD/MM/YYYY but Xero expects MM/DD/YYYY (or vice versa). Fix: check your Xero organisation's date format under Settings → General Settings → Date Format and make sure your CSV matches. BankConv detects the bank's region and formats dates accordingly.
Duplicate transactions after import If you import a statement that overlaps with transactions already in Xero (from a bank feed or previous import), Xero may create duplicates. Fix: before importing, check the date range of transactions already in Xero for that account. Import only the missing period. If duplicates appear, Xero's "Find & Match" feature can help you merge them.
Amounts appearing as text, not numbers This happens when the amount column contains currency symbols (£, $), thousand separators, or spaces. Xero expects plain numbers. Fix: strip all formatting from the amount column — no currency symbols, no thousand separators, just digits and a decimal point.
Garbled characters in descriptions Character encoding issues. The file was saved in a different encoding than UTF-8. Fix: open the CSV in a text editor (not Excel, which can change encoding on save), verify it's UTF-8, and re-save if needed.
"No transactions found in file" Usually means Xero can't parse the file structure at all. This happens with bank-exported CSVs that include extra header rows, footer summaries, or non-standard formatting. Fix: open the file, remove everything except the header row and transaction data, and try again. Or convert from the PDF original using BankConv's free tool, which outputs clean, import-ready CSV files.
Related Guides
- Free Bank Statement PDF to CSV Converter — convert your statement before importing
- Free Bank Statement PDF to Excel Converter — if you need to review in Excel first
- How to Convert Barclays Bank Statements to CSV and Excel — bank-specific tutorial
- Converting Password-Protected Bank Statements — for locked statement PDFs
- Bank Statement Converter for Bookkeepers & Accountants — how BankConv fits into bookkeeping workflows