To import a PDF bank statement into Xero, first turn the PDF into a CSV, because Xero's statement import reads transaction files, not PDFs. Put each line into Xero's columns, upload the CSV to the right bank account, then compare the closing balance in Xero with the one printed on the statement.
Can Xero read a PDF bank statement?
Xero's statement import does not read PDF files, so a PDF cannot go straight into a bank account. The import screen takes files of transactions, such as CSV and OFX. A PDF is a printed page in file form, and the numbers in it are not stored as rows and columns that software can pick up.
Why a PDF is different from a CSV
A PDF stores where each character sits on a page. It has no concept of a column called Amount. A person sees a table, but the file holds only text fragments with coordinates. Turning it into rows means working out which fragments belong to the same transaction, which is where mistakes creep in. A CSV already holds one transaction per row, so Xero can read it directly.
What your options are
You have three realistic routes:
- Ask the bank for a file. Many banks offer a CSV or OFX download next to the PDF. It is often in a separate menu, such as transaction history, with a date range picker. A downloaded file beats any conversion, because nothing has to be interpreted.
- Retype the lines. This works for five transactions. For eighty, it takes an hour and produces typos in the amounts.
- Convert the PDF to a CSV. Copy the text into a spreadsheet, or use a converter. SimpleBankConvert is built for this case: it reads a digital PDF statement and gives you a CSV laid out the way Xero's import expects. Accounts are not open yet; the get started page takes your email for when they are.
Whichever route you take, the end result must match Xero's template. The full list of columns lives in the Xero CSV template guide, so this post stays on the PDF side.
Converting the PDF statement into Xero's columns
Converting a PDF statement into Xero's columns means mapping each printed line to a row with a date, an amount, a payee, a description and a reference. Most of the work is joining wrapped lines, reading dates in one format and merging separate money-in and money-out columns into one signed amount.
Worked example: five statement lines
The table shows how five lines from a fictional statement, as the PDF prints them, become Xero rows. The business, bank and payees are made up.
| Printed in the PDF | Date | Amount | Payee | Description | Reference |
|---|---|---|---|---|---|
| 03/02/26 ACH CREDIT BRIGHTWATER CAFE INV 1042 (deposit 1,250.00) | 03/02/2026 | 1250.00 | Brightwater Cafe | Client payment | INV 1042 |
| Mar 4 POS PURCHASE PINECREST OFFICE SUPPLY #22 (withdrawal 86.42) | 03/04/2026 | -86.42 | Pinecrest Office Supply | Office supplies | |
| 2026-03-09 RECURRING CLOUDNEST WEB SVCS 8841 (withdrawal 24.00) | 03/09/2026 | -24.00 | Cloudnest Web Services | Website hosting | |
| 12-Mar ACH CREDIT HOLLIS & GRANT LLC INV 1045 (deposit 2,400.00) | 03/12/2026 | 2400.00 | Hollis & Grant | Client payment | INV 1045 |
| 3/27 MONTHLY SERVICE FEE (withdrawal 12.00) | 03/27/2026 | -12.00 | Fernhill Community Bank | Monthly service fee |
Four things changed between the left column and the rest:
- Dates. Four different layouts (03/02/26, Mar 4, 2026-03-09, 12-Mar) became one. The statement period supplies the year when the line does not print it.
- Amounts. Deposits and withdrawals sat in separate columns. They became one column, with a minus sign on money leaving the account.
- Text. Lines that wrapped across two printed rows were joined back into one.
- Names. Shouted bank text became readable payee names.
The resulting file
Date,Amount,Payee,Description,Reference
03/02/2026,1250.00,Brightwater Cafe,Client payment,INV 1042
03/04/2026,-86.42,Pinecrest Office Supply,Office supplies,
03/09/2026,-24.00,Cloudnest Web Services,Website hosting,
03/12/2026,2400.00,Hollis & Grant,Client payment,INV 1045
03/27/2026,-12.00,Fernhill Community Bank,Monthly service fee,
These are example values. Your own file should use the date order your Xero organisation expects. Which order that is, and why it matters, is covered in the CSV column guide.
Keeping the original PDF
Keep the PDF next to the CSV you made, in a folder named for the month and the account. If an auditor, a partner or you yourself later ask why a line reads the way it does, the PDF is the evidence and the CSV is only your working copy. Name both files the same way, for example the account, the year and the month, so the pair is easy to find. If you correct a line by hand in the CSV, note the change in a spare column or a separate note, because the next person to open the file will otherwise assume the CSV is an untouched copy of the statement.
What to do if the same PDF is converted twice
Converting the same PDF twice should give the same rows. If it does not, something in the process is guessing, and you should find out what before relying on it. Compare the two files in a spreadsheet by sorting both by date and looking for rows that differ. Upload only one of them, and delete the other so nobody uploads both by accident. Uploading two versions of one month is the quickest way to end up with duplicate statement lines in Xero.
Payee and reference fields from a PDF statement
A PDF statement rarely separates payee and reference. The bank prints one long text, and everything is lumped into a single description. In Xero's template, the payee is who was paid, the description says what for, and the reference holds a number you can match later. Splitting them takes judgement.
Where the payee goes
The payee is usually the first recognisable name in the text, after the transaction-type words. In "POS PURCHASE PINECREST OFFICE SUPPLY #22", the words POS PURCHASE describe the method, not the merchant. The payee is Pinecrest Office Supply. Store numbers like #22 can go in the description or be dropped.
Where the reference goes
A reference is anything that identifies the transaction to you: an invoice number, a check number or a customer code. In the example, "INV 1042" is a reference because it matches an invoice in your books. Putting it in its own column helps when you match bank lines to invoices on the reconciliation screen.
What to do with text that has no clear payee
Transfers, fees and cash withdrawals often have no merchant. For these, use the bank's name or the type of transaction as the payee, such as the bank for a service fee. Consistency matters more than perfection. Use the same payee text every month, so repeated items look alike.
Mistakes to avoid
- Do not put the amount inside the description.
- Do not put commas in the payee without quoting it; a stray comma can split a row in two.
- Do not invent a reference when there is none. An empty cell is fine.
Do the Xero balances match the PDF statement?
The Xero balance should match the PDF's closing balance when the import is complete. To check, compare the statement balance on Xero's reconciliation screen with the number printed on the last page of the PDF. A difference equals the total of the lines that are missing, doubled or wrong.
A three-step balance check
- Write down the statement's opening and closing balances.
- Add every deposit and subtract every payment from the opening balance. The result should equal the closing balance.
- After the import, confirm Xero shows the same closing balance.
Do step two in the spreadsheet before uploading. If the arithmetic fails there, the problem is in the file, and it is much easier to fix before Xero has saved anything. SimpleBankConvert applies this idea too: it tells you when a statement cannot be read cleanly instead of giving you a file with mistakes in it.
Reading the gap
Suppose the statement closes at 4,310.00 and your file adds up to 4,295.00. The gap is 15.00. Look for a 15.00 line on the statement, such as a small fee at the foot of a page. If the gap is exactly twice a payment, that payment was probably read twice. A gap of 90.00 when a payment is 9.00 suggests a misplaced decimal point.
When the balance is right but the dates are wrong
A matching total proves the amounts, not the dates. Skim the dates against the statement period. Lines dated a year early are a common problem on statements that cross New Year, where the converter assigns the wrong year to January lines.
Scanned PDF statements and Xero imports
A scanned PDF is a photograph of paper, so the text must first be recognised from the image before any rows can be built. This adds error risk to every field. If you can download a digital PDF from your bank instead, do that, because it holds real characters.
Why scans are riskier
On a scan, a 3 can look like an 8 and a decimal point can vanish. The balance check usually catches a changed amount, because the total no longer adds up. A changed date can still look valid, so you must check dates by eye. SimpleBankConvert's homepage talks about digital PDF statements, not scans, so do not assume it reads scanned pages.
Getting a better scan
If paper is all you have, scan at a decent resolution, keep pages flat, and avoid shadows. Guidance on settings that keep the numbers readable is in scanning bank statements so the numbers stay legible.
A short review for scanned statements
- Confirm the opening and closing balances were read correctly.
- Run the balance arithmetic before uploading.
- Check every date falls inside the statement period.
- Look for odd characters in payee names.
If you also use QuickBooks, the same conversion idea applies there; the PDF to QBO guide covers it. And if a program insists on OFX rather than CSV, see converting a PDF statement to OFX.