Check for a direct export
Check online banking first for a direct Xero export covering the required account and period. If it is not available, use the statement.
TD provides statements for personal and business checking, chequing, trust and Visa card accounts in the United States (TD Bank, USD) and in Canada (TD Canada Trust, CAD). The two layouts differ, but the converter settings are the same, so one page covers both. The reviewed statements include Business Premier, Business Simple and Convenience Checking, Business Chequing and Lawyer Trust Account, two of them scans, and Aeroplan Visa Infinite and Business Travel Visa statements.
Full name: Toronto-Dominion Bank (TD Canada Trust, TD Bank N.A.)
Countries: Canada, United States
Supported statement formats: PDF
Supported destinations: QuickBooks Desktop, QuickBooks Online, Quicken, Xero, CSV/Excel
Check online banking first for a direct Xero export covering the required account and period. If it is not available, use the statement.
For a short statement, type the date, memo, and amount into the destination. Reconcile the result to the closing balance.
Open the PDF statement, review the extracted transactions, choose Xero, and save the converted file on your computer.
Choose the posted transaction date, supply a missing year from the statement period, and check statements that cross January.
Remove currency symbols from numeric cells, preserve the decimal separator, and verify debit and credit signs against the running balance.
Keep the payee or customer reference that helps identify the transaction, while avoiding repeated headers and unrelated reference numbers.
The following details were checked against TD statements from 2021 to 2026 from both the United States and Canada: TD Bank personal and business checking statements, TD Canada Trust business chequing and lawyer trust account statements, and TD Visa card statements (Aeroplan Visa Infinite, Business Travel Visa). One page covers both countries because the converter settings are the same: dates without a year, unsigned amounts, and short coded descriptions. Where the US and the Canadian layout differ, the section says which one it describes. Two of the Canadian chequing statements were scans, so the page also covers what OCR does to a TD page.
MM/DD with no year, and the year comes from "Statement Period: Jan 01 2021-Jan 31 2021" in the header. TD Canada Trust rows carry MAR11 with no space and no year, and the year comes from "FEB 27/26 - MAR 31/26" in the header. TD Visa rows carry two dates, transaction and posting, as DEC 4 and DEC 10, and the year comes from "STATEMENT PERIOD: December 06, 2024 to January 06, 2025". All three cross the year in December or January, so the converter has to assign the year from the period and not from the statement date alone.-$3,330.08.0206 and 0206-5245609 under "Branch No." and "Account No.". TD Visa prints a masked number, 4520 71XX XXXX 3243, with only the last four digits visible.TD is one brand, but the US and the Canadian statements come from two different banking systems and share almost nothing in layout. A US TD Bank statement starts with "STATEMENT OF ACCOUNT" and an "ACCOUNT SUMMARY", then lists "DAILY ACCOUNT ACTIVITY" in sections by transaction type, each with a "Subtotal:" line, and it prints no running balance next to the rows. A Canadian TD Canada Trust statement starts with "Statement of Account" and "Branch No. / Account No.", then prints one ledger with five columns, DESCRIPTION, CHEQUE/DEBIT, DEPOSIT/CREDIT, DATE, BALANCE, opened by "BALANCE FORWARD" and closed by a "Credits / Debits" count box. Even the date on the row is different: 01/27 in the US and MAR11 in Canada. A converter that keys on the bank name and applies one TD template gets nothing from the other country's file. It has to detect the layout from the page, for example from "Primary Account #:" against "Branch No.", and then parse each one with its own rules. The sections below say which layout they describe.
A US TD Bank statement under "DAILY ACCOUNT ACTIVITY" is split into sections: Deposits, Electronic Deposits, Other Credits, Checks Paid, Electronic Payments, Other Withdrawals, Service Charges. Each section has its own "POSTING DATE / DESCRIPTION / AMOUNT" header and closes with a "Subtotal:" line. Every amount is positive. A converter that reads amounts without tracking which section it is in makes every payment a deposit. Sections continue across pages with headings like "Other Withdrawals (continued)", so the section state has to survive a page break. The "ACCOUNT SUMMARY" on the first page repeats each section total, which is the check for the parse. A Canadian TD statement has no sections. It prints CHEQUE/DEBIT and DEPOSIT/CREDIT as two columns and the column decides the sign, so a converter needs the column positions from the header row and must not guess them from the first transaction.
A debit card purchase takes three lines. The first line is the type and authorization, DEBIT CARD PURCHASE, AUT 010121 VISA DDA PUR, where 010121 is the authorization date in MMDDYY. The second line is the merchant with city and state, SHOPRITE 227 * PARSIPPANY * NJ. The third line is the full 16-digit card number. A converter that keeps only the first line gives every purchase the same payee. One that joins all three lines puts a card number into the memo of every row, which is a privacy problem in the exported file. The useful payee is the second line.
Business statements add another trap. An "RTP RCVD" or "CCD DEPOSIT" row can wrap into a second line that contains a number that looks like an amount, CREDIT ACCEPTANCE CORPORATION-29 853.00, while the real amount sits in the AMOUNT column on the first line. A converter that picks the last number in the text block takes the wrong value.
"Checks Paid" prints "No. Checks: 23" and then lists checks two per row: DATE, SERIAL NO., AMOUNT, then the same three columns again to the right. A * after a serial number marks a gap in the check sequence and is not part of the number.
The "How to Balance your Account" page repeats the ending balance, 28,667.72, in a worksheet with numbered steps and empty rows for the customer to fill in. A converter that treats every line with a number as a transaction picks up the worksheet. Reconciling to the Ending Balance in the summary catches this.
Disputes and overdrafts show up as ordinary rows and must be kept. A disputed charge appears as CREDIT, Temporary Credit under Other Credits, and when the bank closes the dispute against the customer it appears as DEBIT, Reverse Temporary Credit under Other Withdrawals. Overdraft fees appear as OVERDRAFT PD and OVERDRAFT RET rows under Other Withdrawals, several on the same day. A converter that drops rows it does not understand, or merges same-day rows with the same description, loses these and the balance no longer reconciles.
A TD Canada Trust statement has five columns: DESCRIPTION, CHEQUE/DEBIT, DEPOSIT/CREDIT, DATE, BALANCE. When several transactions post on the same day, the BALANCE column is filled only on the last row of that day. A converter that expects a balance on every row either drops the rows without one or shifts the balance up to the wrong transaction. The running balance is still a good check: the balance after the last row of a day must equal the previous balance plus credits minus debits for that day.
In the text layer of a TD Canada Trust PDF, an amount in the DEPOSIT/CREDIT column and the date next to it often come through as one element, 12,710.00 MAR13, while a debit amount and its date stay separate. A converter that splits columns by position finds the credit column empty and a strange token in the date column. The element has to be split on the space before the date.
The descriptions are short and coded: HH271 TFR-TO 6649512, SEND E-TFR ***aqf, MONTHLY PLAN FEE, ACCT BAL REBATE, AMDP29617180013 MSP. The transfer reference number and the e-transfer suffix change on every row, so the payee has to be normalized to TFR-TO or SEND E-TFR before rules can match it.
Business plans print MONTHLY PLAN FEE 125.00 as a debit and ACCT BAL REBATE 125.00 as a credit on the same day. Both are real transactions that net to zero. A converter that skips one of them because the balance did not change ends up with a running balance that no longer matches the statement.
Two reviewed chequing statements were photographed or scanned, and their text came from OCR. What OCR does to this layout is predictable: FEB10 becomes FEBIO and FEB11 becomes FEBII, the period JAN 30/26 - FEB 27/26 becomes 27126, an amount like 1,463.15 splits into 1,463 and 15 with the decimal point lost, and 14,859.71 becomes 14,859, and 71 as two elements. Stray characters like '70 or 2',530: appear between rows where a taller amount was read twice. A converter that treats an OCR file the same as a text file gets amounts a hundred times too large and dates that do not parse. It has to rejoin split numbers, fix the month names against the statement period, and reconcile the running balance row by row.
The first page of a TD Visa statement prints the transaction table on the left and a side panel on the right with "CONTACT INFORMATION", "TD REWARDS POINTS", "PAYMENT INFORMATION" and "CALCULATING YOUR BALANCE". The side panel lines sit at the same height as the transaction rows, so a converter that groups text by line sees SHELL C02357 SCARBOROUGH DEC 4 DEC 6 $80.00 and Annual Interest Rate: Purchases 19.99% as one row. The table has to be cut by column position before rows are grouped.
Merchant names wrap onto a second line when the city does not fit, JACK ASTOR'S SCARBOROUGH then SCARBOROUGH again on the next line, and the second line has no date or amount. Foreign purchases add two lines below the row, FOREIGN CURRENCY 97.55 USD and @ EXCHANGE RATE 1.31963. These lines carry numbers that are not amounts in CAD. The CAD amount is the one on the row with the dates.
The bottom of the first page is a payment stub with "NEW BALANCE", "MINIMUM PAYMENT" and "PAYMENT DUE DATE" and the numbers again, and the last line is a long numeric string that holds the card number and the amounts without separators, 4520710032423243 0006500 0323442 6. A converter that scans the page for numbers picks up the balance twice and the stub line as a transaction. The stub is below the "Continued" line and has no transaction dates, which is how to leave it out.
Compare the converted transaction count and totals with the statement, then confirm that the calculated final balance equals the printed closing balance.
Yes. If the PDF statement is readable, its age does not prevent conversion. Confirm the year when transaction rows omit it.
No. Convert posted transactions that contribute to the statement balance. Pending or future-dated items should not be mixed into that reconciliation.
Use the destination-specific settings below, then review the file before import. The destination may require particular columns, dates, account identifiers, or sign rules.
A bank PDF can contain searchable text, scanned page images, or a mixture of both. Searchable text still needs layout analysis because transaction descriptions wrap, columns move, and headers or balances repeat at page breaks. A scanned statement adds OCR uncertainty.
A transaction may begin at the bottom of one page and continue on the next. Continuation pages can omit column headings, repeat an opening balance, or insert footer text and legal pages between transaction pages. A conversion should join split rows and exclude repeated page furniture before it writes the output.
On scanned pages, OCR can turn 0 into O, 1 into l, or 5 into S. It can also lose a minus sign or decimal mark, read two columns in the wrong order, or struggle with skewed and faint pages. The running balance is the best check: a damaged amount or missing row breaks the balance sequence.
Yes. Review the OCR result and reconcile every balance movement. Scans with faint printing, rotation, or handwritten marks need more checking than searchable PDFs.
PDF text stores page positions rather than a spreadsheet table. Wrapped descriptions, repeated headers, and visually aligned columns can paste in the wrong order or into the wrong cells.
Try selecting a transaction description in a PDF reader. If individual words can be selected, the page probably contains text. If the whole page behaves like one picture, it requires OCR.
Xero imports bank transactions through Accounting, Bank accounts, Import a Statement (also reached as Manage Account, Import a Statement). The file goes into the bank account's reconcile list, where Xero matches each line to invoices, bills and bank rules, or creates a spend or receive money transaction.
.ofx. If a QBO, QFX or OFX file downloaded from a bank is rejected, the file usually has a header, encoding or date format Xero does not accept; converting it to a plain OFX fixes that.Settings that matter:
OFX. It carries the payee, description, reference and check number in separate fields and gives Xero a transaction ID for duplicate checks. CSV is fine when the file was written for Xero with the right column names; a bank's own CSV usually needs mapping and cleanup.
Most often the file has a header Xero does not read, non-UTF-8 text, dates in a format it does not accept, or a missing transaction ID. Convert the file to plain OFX and import that. Renaming QBO or QFX to .ofx helps only when the content is already clean.
Xero skips lines whose transaction ID it already has, and for CSV it skips lines it reads as duplicates by date, amount and description. Two genuine identical lines on the same day can be dropped from a CSV. Use OFX with unique IDs for those.
The date order was misread. A file with 03/04/2026 can be read as 3 April or 4 March. Set the order on the import screen, or export dates as YYYY-MM-DD, which Xero reads without asking.
Open the bank account, go to the statement lines or Bank Statements tab, select the imported statement and delete it. The lines disappear from reconcile and the file can be imported again.
Yes. There is no date limit on file imports. Import periods in order and do not overlap them, so the balance in Xero follows the statements.
No. The statement balance in Xero is computed from the imported lines. Compare it to the printed closing balance after each import. If they differ, a line is missing, doubled, or has the wrong sign.