Catch-up bookkeeping
How to import old PDF statements without duplicating bank-feed entries
Before uploading your PDFs, find out what's already in the books and bank feed. Then settle the opening balance and where the missing history ends.
By AnyStatement
Published , 13 min read
If your bank feed stopped months ago, you may have PDFs to fill the gap but no clear idea where the feed leaves off. Try the bank's export if it covers your dates, then your accounting software's statement upload before converting PDFs yourself. Whichever route you take, check each full statement before removing overlap, then preview, import, match and reconcile one period before continuing.
Try the bank and your accounting software first
This covers historical bank and credit-card records in QuickBooks Online and Xero, not QuickBooks Desktop. The QuickBooks instructions use US documentation; we read Xero Central with United States selected on October 17, 2026. We haven't tested live imports, so check your account's options and permissions.
In the USD checking example, money in is positive and money out is negative. For cards, use the destination's credit-card signs instead.
Check the bank's custom date ranges and separate statement or download menus, asking for older exports if needed. If an accepted export covers your dates, use it and keep the PDFs for comparison. Download history isn't necessarily the same as feed history.
QuickBooks Online
Intuit's manual-upload guide, updated August 24, 2026, documents native English-language PDF and image uploads with side-by-side extraction review, so a separate converter isn't mandatory. Some statements may be reviewed by its global experts; consider that before uploading client documents.
Xero
Xero's CSV import guide recommends bank-native OFX, QFX or QuickBooks files when available, or a CSV made with its template. Its direct PDF import guide covers US and Canadian organizations except the Xero Ledger plan. The PDF must be in English, non-password-protected, at most 35 MB and 100 pages, at least 200 DPI, and have straight scans. Check the other size requirements and supported statement types too, because results for unlisted banks can vary.
If direct import isn't available or you need CSV first, Hubdoc documents PDF extraction to CSV for manual import, with its own file requirements. These Xero pages were checked October 17, 2026.
If those routes don't fit, or you need a separate review file, convert the PDF or enter a small gap in the destination's template. Either way, check overlap and keep a full workpaper alongside a separate import copy of selected rows.
Before preparing the archive, try a representative statement. An unfamiliar importer is best learned with synthetic data in a separate test company or organization, not the client's live books.
Check the books and the feed separately
Before anything changes, save the available account reports, reconciliation reports and source downloads. Agree who owns the cleanup and that nobody else will upload this history. Those reports are evidence, not a one-click restore, so agree a recovery procedure before uploading, especially for reconciled or closed periods.
Track each account and currency on a control sheet. Alongside the bank and masked account identifying the destination, record:
- Earliest and latest book entries and any gaps, including manual entries.
- Earliest and latest feed or statement lines and gaps, including unposted downloads.
- Opening-balance date, amount and supporting source.
- Last reconciliation period, balance and report.
- Past import files, dates, exclusions and deletions.
The first and last dates can hide gaps. Check between them to decide what each genuine bank transaction needs:
- If the statement line and book entry both exist, verify the match rather than importing.
- If only the statement line exists, use it and investigate how to record it.
- If only the book entry exists, import the line and match it rather than adding it again.
- If neither exists, import and record it with supporting evidence.
A line may have been excluded or deleted, so check both before calling it missing. An invoice or bill isn't necessarily a bank payment either. Before creating another receipt or expense, check whether it's paid and how the payment was recorded.
Be precise about which dates you need
Statement cycles don't necessarily follow calendar months. List each statement's actual start and end dates, account, opening and closing balances, and filename. Note missing pages and whether the transactions already appear in the destination, but don't mistake a week without transactions for proof of a missing statement.
- For older history, settle the starting balance and conversion date first, then find missing lines before the earliest confirmed continuous feed coverage.
- For a feed outage, find both edges and check each boundary-day transaction.
- For newer history, start after the latest confirmed complete coverage, not the latest visible entry.
Your rule needs to include both sides of the boundary: historical file through March 14; existing feed from March 15 onward. Record the date field you used, normally the statement's posting date for posted bank activity, and keep transaction dates separately if supplied. If a boundary day is only partly present, list the missing rows because dates alone won't do. Never change a real date to fit the rule.
Scattered manual entries need a row-level match list: one existing payment isn't a reason to exclude a whole date. The statement coverage checker can help organize document periods, but it can't tell you what's in the live books.
Review the whole statement, even rows you won't import
You need the whole statement to check its arithmetic, even if some rows fall beyond the cut-over. After extracting or transcribing it, compare all pages, fees, refunds and continuation rows with the PDF. Check that the opening balance plus signed transactions equals the closing balance, and check each printed running balance where available.
Headings, carried-forward balances and subtotals aren't transaction rows, so remove those while keeping genuine fees and refunds. Once that's done, make the smaller import copy. Opening and closing balances stay in the workpaper, not in the upload as receipts or payments.
This fictional three-month checking archive uses synthetic USD amounts. It isn't a customer's records or a converter demonstration.
| 2026 statement | Opening | Net transactions | Closing |
|---|---|---|---|
| January 1-31 | 2,400.00 | +1,162.50 | 3,562.50 |
| February 1-28 | 3,562.50 | +825.00 | 4,387.50 |
| March 1-31 | 4,387.50 | +93.00 | 4,480.50 |
- January's four transactions total
3,200.00 - 1,800.00 - 225.50 - 12.00 = 1,162.50. With an opening balance of2,400.00, the close is3,562.50. - February's four transactions total
2,800.00 - 1,800.00 - 163.00 - 12.00 = 825.00. With an opening balance of3,562.50, the close is4,387.50. - March's six rows below total
93.00. Adding the opening balance of4,387.50gives4,480.50.
All three closing differences are zero, and both adjacent closing/opening pairs agree. The archive's 14 transactions total 2,080.50. If those balances don't join, look for a missing statement, wrong account, overlap or misread balance rather than adding a balancing transaction. Even when they agree, check the printed periods: missing activity can net to zero.
These calculations check statement arithmetic, not reconciliation or document authenticity. Offsetting errors can pass a closing check, so you still need to compare rows with the source using the pre-import statement checks.
A correct file can still be the wrong import
Suppose this fictional account has complete feed coverage from March 15 through March 31 and no earlier manual entries. You need January 1 through March 14. The accountant has agreed a 2,400.00 starting balance immediately before January 1 activity, with no outstanding checks or deposits and no later opening-balance entry counting that history again. For Xero, assume a January 1 conversion date. A cut-over date alone won't resolve a partly entered ledger.
| Posted date | Transaction | USD | Coverage |
|---|---|---|---|
| March 5 | Customer receipt | +1,500.00 | Historical import |
| March 10 | Rent | -1,800.00 | Historical import |
| March 14 | Supplies | -75.00 | Historical import |
| March 15 | Customer receipt | +600.00 | Existing feed |
| March 18 | Utilities | -120.00 | Existing feed |
| March 31 | Bank fee | -12.00 | Existing feed |
March's historical rows net -375.00, leaving 4,012.50 at March 14 close. The feed adds +468.00 to reach 4,480.50. Together, January, February and the first three March rows make 11 historical transactions with a net of +1,612.50, while the feed supplies the remaining three.
| Import decision | Resulting March close | Error |
|---|---|---|
| Stop after March 14 | 4,480.50 | 0.00 |
| Import all March as well as feed | 4,948.50 | +468.00 |
| Stop after March 10 | 4,555.50 | +75.00 |
Importing all of March duplicates the receipt, utilities and fee. Stopping at March 10 misses the March 14 supplies payment, overstating cash by 75.00. In both cases, the extraction can be correct while the import range is wrong.
Because the filtered file ends at March 14 rather than March 31, it won't reach the full March closing balance. Keep the six-row check alongside a separate record of the three selected rows. The 4,012.50 cut-over balance is calculated, not bank-confirmed. There are no printed running balances in this example, so it doesn't demonstrate checking each row against them.
Start with a preview of one statement period
With the opening balance settled, you can start at the earliest missing statement. Keep the PDF, full workpaper and filtered upload separate, and record the filename, dates, selected row count, money in, money out and signed net. The net alone can hide offsetting omissions.
January needs four rows: 3,200.00 in, 2,037.50 out, net +1,162.50. These should agree with the preview. If it has no totals, compare the selected rows and total them in the workpaper. Stop if they don't match.
- Make sure the exact account and currency are selected, rather than creating a second account because the intended one isn't selected.
- Check the first and last rows, boundary-day transactions, one outgoing payment and one incoming receipt for the correct year, date interpretation, decimal separator and signs.
- Review rules that automatically post imported activity. Intuit's duplicate-prevention guidance, checked October 17, 2026 recommends turning off auto-add on bank rules so downloaded rows reach review first.
In QuickBooks Online
Intuit gives the route as All apps → Accounting → Bank transactions, then the Link account dropdown and Upload from file. Review PDF/image extraction side by side before saving. If you can't restrict an overlapping statement to missing rows, don't save it: use a reviewed transaction-list file instead. Cropping statement pages would hide the overlap.
A transaction list needs its columns mapped and rows selected. Intuit specifies 350 KB or less and up to 1,000 transaction lines, but doesn't state these as PDF-upload limits. For a larger list, split at complete rows and record where each batch starts and ends.
In Xero
The CSV and PDF guides both start at Accounting → Bank accounts → account menu → Import a Statement. After choosing the file, select Next. CSV imports need fields mapped and the date format confirmed if prompted. In either flow, review ready rows, warnings and errors, then clear unwanted rows before Complete import, because warnings don't necessarily stop an import.
Xero says it skips matching imported transactions as duplicates. That's separate from matching a bank line to a manually entered payment, so inspect every skipped row rather than assuming it was unnecessary.
Keep the import result with the file, accounting for every selected row as accepted, skipped or rejected. If only part of a batch succeeds, isolate the unresolved rows before retrying instead of uploading the whole batch again.
Finish reconciling before you move on
An accepted file isn't a finished month. Intuit's guide ends with matching, categorizing and reconciling; Xero's directs you to reconcile lines to entered transactions. Match existing payments rather than adding another receipt or expense. For an unpaid invoice or bill, apply the payment to that record instead of recording the income or expense again.
A statement description alone may not settle how to classify a transaction. Use receipts, invoices and other evidence, and review transfers in both accounts: their two sides aren't duplicates in one account.
Reconciliation covers the complete statement period, including beginning and ending balances. For partial March, that means historical rows and the feed together. In Xero, also compare its Statement Balance with the actual statement, because matching every imported line won't reveal one that never arrived. Account for outstanding items and investigate differences rather than forcing a balance. The next batch can wait until you've explained the difference.
Save the reconciliation and mark the control sheet imported, matched, reconciled or exception outstanding, so it shows where the work stopped. Once the first period works, continue chronologically, rechecking coverage before each upload in case the feed backfilled or someone added entries. The handover needs the source index, upload log, reconciled periods and unresolved questions, not just a spreadsheet.
Undo duplicates without losing the real transaction
If rows look duplicated, pause uploads while you compare them with the bank statement and existing records. Similar dates, amounts and descriptions aren't proof, because two identical purchases can both be real. Before changing anything, establish whether the extra copy is a downloaded line, a posted entry or a line already matched to an entry.
QuickBooks Online: exclude the extra, keep the real transaction
Intuit's exclusion guide, updated August 10, 2026, says to select confirmed extra rows in For review and choose Exclude. You can undo a mistaken exclusion from the Excluded tab. Don't exclude a real transaction because it's awkward to categorize.
If the extra was already added from the feed, Intuit's linked cleanup guide says to find it in Categorized or Posted, choose Undo, then match it to the existing record or exclude the extra. Manual duplicates need separate correction in the register. Keep the valid record and its links, and get an accountant's review before disturbing reconciled entries. Don't bulk-delete the period to start over.
Xero: deleting a statement line leaves the accounting entry
Xero's Duplicate Statement Lines report guide says it checks date and amount, then exact text across reference, particulars or payee. It doesn't show partial matches or duplicates removed at import, which the guide directs you to find in Statement Exceptions. The actual statement is still your reference for checking candidates, including any the duplicate report misses.
Xero's delete-or-restore guidance warns that deleting a line changes the Statement Balance. A reconciled line's account transaction becomes unreconciled, not automatically removed, and deleted lines can be restored. That means a duplicated accounting entry needs correcting separately, not by deleting a valid statement line to make balances agree. Both Xero guides were checked October 17, 2026.
Making the extra row disappear isn't enough. Log the affected rows and why you kept, reversed or removed them, then recheck the affected reconciliation and the next period's beginning balance before resuming.
Find out why rows were skipped before retrying
A retry that adds nothing doesn't prove the source is empty. Before reconverting the PDF, check the destination account, exclusions, deletions, warnings, selected dates and existing matches. Comparing source rows with accepted, skipped and rejected counts helps you find out why they were skipped.
For a genuine QuickBooks row excluded by mistake, the documented recovery is Undo from Excluded. For a mistakenly deleted Xero line, use the linked Restore procedure and recheck its match, rather than assuming reimporting will recover it. Don't change real dates or identifiers to beat duplicate checks. If the skip still makes no sense, stop and send support the import result and a redacted example through an approved channel.
A checklist to keep with the workpaper
For a printed record of the work, fill in the account alias, currency, requested period, preparer, reviewer and review date, then work through these checks.
- Keep original PDFs, exports, reports and reconciliation evidence.
- Record the earliest and latest dates and gaps in both books and feed.
- Record the opening balance, any conversion date and approved treatment.
- List actual statement periods and confirm all pages are present.
- Check bank exports and native PDF upload options first.
- Write inclusive cut-over dates and boundary-day exceptions.
- Check full statements: rows, signs, totals and available running balances.
- Compare adjacent periods and closing/opening balances per account.
- Keep the full review copy and import only missing rows from a separate copy.
- Log each batch's filename, dates, row count, inflows, outflows and net.
- Preview account, date format, signs, selected and skipped rows.
- Import the first period, account for every selected row, match and reconcile.
- Recheck feed coverage before later batches and resolve exceptions.
- Hand over the source index, import decisions and reconciliation results.
You can keep the decisions in the statement review log. A blank box means there's work left to do, not a reason to insert an adjustment.
When you still need to extract the PDFs
A usable bank export or native upload is still the first choice. Manual entry is reasonable for small gaps too. When you need a separate review file, AnyStatement converts PDF statements to Excel, CSV and other financial formats, links transactions to source PDF lines, and checks opening/closing arithmetic and printed running balances.
It doesn't de-duplicate against your live QuickBooks or Xero data, so choosing the missing coverage, reviewing overlap, importing and reconciling are still your jobs. Checked extraction can't fix a wrong opening balance or reset another application's import history.
What we checked, and what we didn't
On October 17, 2026, we opened the linked Intuit upload, opening-balance, exclusion and duplicate-cleanup guides, and Xero Central's CSV, direct PDF, Hubdoc, conversion-date, duplicate-report and delete-or-restore guides. We opened Xero in a browser and expanded instructions where needed. Those pages showed no updated dates, which is why we give check dates. The steps are documented, but we haven't independently tested the imports.
We recomputed the fictional three-month totals, adjacent balances, cut-over subtotal, row counts, overlap and gap errors with Python Decimal arithmetic. We didn't upload the example to QuickBooks, Xero, Hubdoc or a converter, test a real feed or authenticate a statement. No client documents were used. You still need to review existing books, account access, bank export availability and historical accounting corrections.
If a menu has changed or you spot an error in the example, you can report it through Help. Please don't send unredacted client statements.