Statements into Xero
Xero recommends OFX for a manual import, and its PDF import is limited to organizations in Canada and the United States.
Last updated September 12, 2026
What file formats does Xero accept for a bank statement?
Xero imports OFX, QFX, QuickBooks (QBO), QIF and CSV files in every region, and it imports a PDF statement only for organizations in Canada and the United States.
Xero also states an order of preference for the files it reads. On its OFX import page it recommends OFX, QFX and QuickBooks files over QIF or CSV, and on its PDF import page it recommends OFX over PDF. That is worth reading twice: the format Xero asks for first is the format we write.
| File | Where | What Xero says |
|---|---|---|
| OFX | Every region | Recommended over QIF and CSV, and over PDF |
| QFX | Every region | Listed beside OFX on the same import screen |
| QBO | Every region | Listed beside OFX on the same import screen |
| QIF | Every region | Accepted, below OFX in Xero's own order |
| CSV | Every region | Accepted, with a column mapping step and a date format prompt |
| Canada and the United States | Not available on the Xero Ledger pricing plan |
Source: Xero Central's own articles on importing a PDF statement, importing OFX, QFX or QuickBooks transactions, and importing a CSV statement. Read September 12, 2026. Xero revises these pages, so check yours if something behaves differently.
Why is there no PDF import in the UK, Australia or New Zealand?
Because the feature is limited by the country your Xero organization is in: Xero's help page states that PDF bank statement imports are currently available only in organizations in Canada and the United States.
Three further limits sit on top of the country one, and they matter even inside those two countries. The feature is excluded from the Xero Ledger pricing plan. The file has to be in English, at least 200 DPI, scanned straight rather than at an angle, 100 pages or fewer, 35 MB or less, and not password protected. And Xero's list of validated institutions is made up of American and Canadian banks; anything outside it is read with results Xero describes as varying.
So for most of the world the job is not "import the statement". It is "turn the statement into a file Xero reads, then import that". The longer version of this, region by region.
How do I get a PDF statement into Xero?
Convert the PDF to an OFX file, read the balance check, then use Xero's Import a Statement option on the bank account the transactions belong to.
- Download whole statement periods from online banking rather than custom date ranges. A statement period prints an opening and a closing balance, and those two numbers are what make the result checkable.
- Convert the PDF to OFX. Scans and phone photographs are read here, which is the case Xero's own PDF import excludes. Three pages a day are free and no account is needed. Convert a statement.
- Read the flagged rows before you import. Any row whose arithmetic disagreed with the balance printed beside it is marked in the file itself, and the size of the difference is printed with it, which is usually enough to spot the digit. Fix those against the PDF now, because fixing them inside Xero afterwards means finding them again in the register.
- Import it. In the Accounting menu select Bank accounts, click the menu icon on the account you are importing into, select Import a Statement, drop the .ofx file into File to upload, click Next, clear the checkbox on anything you are leaving out, then Complete import.
- Check the closing balance. Xero shows the imported statement's balance. Read it against the closing balance printed on the PDF. If they agree, the import is right.
Importing a statement needs the administrator role, or standard plus bank accounts. Xero's PDF article lists the cashbook client user role as well, so a practice user working in a client's ledger has the access this path requires.
Which account type should I pick when I add the account by hand?
Pick Bank, and where the dropdown offers no Bank option pick Other, because a bank statement imported into a Credit card account arrives with every sign reversed.
This step is not in Xero's documentation. It came out of running the import. In the organization we imported into, the account type list offered only Other and Credit card, and choosing Other produced a warning that bank feeds are unavailable for that type. The warning is about automatic feeds from the bank. It does not affect a manual import, and the Import a Statement option appears exactly as it does on a Bank account.
A card statement is the other case, and it does belong in a credit card account. Xero documents the same import path for those, with payments positive and purchases negative. What is different about a card statement.
Does the file import correctly?
Yes: one of our OFX files was imported into a Xero organization on September 11, 2026, and Xero's own screens agreed with the file on the count, the money, the dates and the signs.
| Checked | In the file | In Xero |
|---|---|---|
| Transaction count | 22 transactions | 22 statement lines imported, 0 duplicates |
| Net movement | 896.41 out | Statement balance (896.41) |
| Dates | 2 June 2026 | Jun 2, 2026, with no day and month swapped |
| Signs | Money out negative, money in positive | Card purchase as a debit, receipt as a credit |
Two behaviors in that import are worth knowing in advance, because both look like faults and neither is. The payee shown by Xero is capped at 32 characters: OFX 1.02 caps that field, so the full description travels in the memo field and Xero prints it in the Description column, where nothing is lost. And the statement balance Xero displayed was the movement rather than the closing balance, because the account had been created at zero and an OFX file carries transactions, not an opening position. On a real account the movement lands on top of the balance already there.
The figures in that table came out of a conversion like any other, and the arithmetic behind them is described in how the balance check works.
When is CSV the right choice, and what has to come out of it?
Use CSV when you want to edit rows on the way in, and be ready to delete the balance columns first: Xero asks for the columns holding opening and closing balances to be removed, because it calculates the bank balance from the transactions itself.
Xero also asks for the bank account number to come out if the bank put one in the file, and for empty rows to go. Only two fields are mandatory, Date and Amount, and the amount rule is specific: income and expenses share one column, with expenses negative, either with a minus sign or in brackets. Payee, Description, Reference and check number are optional and improve the reconciliation screen. The ceiling is 100,000 rows per file, and Xero prompts you to confirm the date format whenever a date could be read two ways.
That is why every conversion here includes a second CSV built for an import: three columns, date, description and one signed amount, with the balance columns already absent. There is nothing to map away and nothing to delete. The seven-column CSV is the one to open when a person is going to read it. How each format is written.
What trips up a first import?
Four things, in the order they usually bite: the account has to exist in Xero before the file arrives, its currency has to match the statement, an overlapping bank feed produces duplicates the file cannot rule out, and on a CSV the date format is your choice rather than something Xero reads out of the file.
- The account, then the file. An import cannot create an account. Add the bank account with the right currency first. A statement in one currency imported into an account in another will import, and every figure in it will be wrong.
- One file per account. Xero's own instruction is to download a file for each bank account separately, and the import starts from the account rather than from the file. A statement per file matches that.
- Duplicates. Xero recognizes transactions already imported in other files and excludes them. Our files help it: each row carries an identifier derived from the row itself, so the same statement converted twice produces the same identifiers, and re-importing a corrected file adds only what changed. The case to watch is an overlap with a live bank feed. Cut the statement at the day the feed's history begins.
- Dates on a CSV. Choose the format at the prompt and then check a row from the middle of the file, not the first one. A statement whose first transaction falls on the 12th tells you nothing about whether the day and the month have been swapped.
Why the balance check matters more on an import than on a spreadsheet
A spreadsheet is read by a person, who notices when a number looks wrong. An import is read by software, which does not. Once a misread amount is inside Xero it is a transaction like any other, and it surfaces weeks later as a reconciliation that will not close.
So every file carries the result of the check with it. Each row is recalculated against the running balance the bank printed beside it, and a row that disagrees is flagged in the file you download, with the size of the difference. An amount is never quietly corrected on your behalf.
Xero, QuickBooks, MYOB
The same conversion covers all three. Xero takes OFX and the three-column CSV, QuickBooks takes QBO and CSV, and MYOB takes QIF and OFX. Downloading a second format costs no extra pages, so there is no need to decide before you convert. The full list.
Convert one and see
Three pages a day are free, and you don't need an account to run your own statement through it.