Bank feeds do most of the work in Xero, until they don't. A feed was connected late, the bank doesn't support feeds, an account was closed, or you've taken on a client who is a year behind. In all of those cases, you import the statement yourself.
Xero imports bank statements as CSV files. This guide shows the exact format Xero expects, how to get a PDF statement into that format, and how to import it without creating duplicates.
When you need to import a statement manually
- No bank feed for that bank or account type
- Catch-up work: transactions from before the feed was connected
- Closed accounts, where the only record is the PDF statements
- Gaps in a feed, where some days are missing
The CSV format Xero expects
Xero needs only two fields to create a statement line: Date and Amount. Three more are optional but make reconciling much easier:
| Column | Required? | What to put in it |
|---|---|---|
| Date | Yes | The transaction date, in one consistent format for every row |
| Amount | Yes | Money in as positive, money out as negative (-30.00), in the same column |
| Payee | Recommended | Who was paid or who paid. If it matches an existing Xero contact exactly, matching gets easier. |
| Description | Optional | The statement's description text |
| Reference | Optional | Cheque number, invoice number or bank reference |
A short example (fictional):
Date,Amount,Payee,Description,Reference
06/03/2026,-84.20,Sample Hardware Store,Card payment,
06/04/2026,1250.00,Acme Plumbing LLC,Transfer received,INV-1042
06/05/2026,-12.00,Sample Bank,Monthly account fee,
A few rules make the difference between a clean import and an error:
- Save the file as UTF-8 CSV. Other encodings can garble special characters or cause errors.
- Use plain numbers: no currency symbols, no thousands separators.
- Keep headings in row 1. Xero can import without them, but headings make the column-mapping step much easier.
- Remove totals and "balance brought forward" rows. Xero would import them as transactions.
Source: Xero, Import a bank statement in CSV format.
Step 1: Turn the PDF statement into a Xero CSV
If you only have the statement as a PDF, convert it first. You can do it by hand (PDF to Excel, then save as CSV) or with a converter.
With PDFDrill:
- Upload the client's statements. A whole batch is fine, digital or scanned.
- PDFDrill extracts every transaction. It checks that each statement balances (opening balance plus transactions equals closing balance) and that each month's closing balance matches the next month's opening balance.
- Review anything flagged, then export Xero bank statement CSV: Date, Amount, Payee, Description, Reference. You get one file per account.
Step 2: Import the CSV into Xero
- In Xero, go to Accounting → Bank accounts.
- Find the bank account, open its Manage account menu, and choose Import a statement.
- Click Browse, choose your CSV file, and click Import.
- Map the columns: match each column in your file (Date, Amount, Payee, Description, Reference) to Xero's fields.
- Check the date format Xero shows against the dates in your file. Then look at the preview: are the dates right, and is money out negative?
- Complete the import.
Menu names can change slightly between Xero versions. If you can't see "Manage account", look for the ⋯ menu next to the bank account.
Step 3: Check the import before you reconcile
- Compare balances. Xero's statement balance for the period should match the closing balance on the PDF.
- Spot-check three lines: one deposit, one withdrawal, and one with an unusual description.
- Check the edges of the period. The first and last days are where overlaps and gaps hide.
Avoiding duplicates
Duplicates are the most common Xero import mistake. They happen when:
- the CSV overlaps a period the bank feed already covers
- two statements share a few days at the join, and both get imported
- the same file gets imported twice
How to avoid them:
- Before importing, note the last date already in Xero for that account and trim your CSV to start after it.
- When merging several statements, remove the transactions repeated at each join. PDFDrill marks these as duplicates, so you can see exactly which rows overlap.
- If you import something by mistake, delete that imported statement from the bank account in Xero before reconciling anything against it.
Common import errors and fixes
| Problem | Likely cause | Fix |
|---|---|---|
| Dates in the wrong month | Day/month order doesn't match | Make every date use the same order, and choose that format on the import screen |
| Every expense shows as income | Money out wasn't negative | Make withdrawals negative in the Amount column |
| Import fails or shows strange characters | File not saved as UTF-8 | Re-save as CSV UTF-8 |
| Extra transactions you don't recognise | Totals or balance rows left in the file | Delete those rows before importing |
| Balance in Xero doesn't match the statement | A missed, doubled or misread transaction | Run the balance check on the CSV first |
FAQ
Can Xero import a PDF bank statement directly? Xero's statement import works with CSV and other bank data files, so a PDF statement needs converting to CSV first.
Can I import several months at once? Yes, in one CSV, as long as there are no duplicates at the joins between statements and all dates use the same format.
Does PDFDrill connect to Xero directly? No. PDFDrill exports a Xero-ready CSV file, and you import it using the steps above. That keeps you in control of what goes into the client's books.
Get a Xero-ready CSV from any statement PDF. Try PDFDrill: free for 10 pages a month. Xero exports are on the Pro plan.
