Duplicate transactions after a QuickBooks import come from two sources covering the same dates: a file uploaded on top of a bank feed, a reconnected account downloading history again, or a downloaded item added instead of matched. Confirm each double against the bank statement, exclude or undo the extra copy, and import only dates after your newest transaction.
Why QuickBooks imports create duplicate transactions
A duplicate transaction is one bank movement recorded twice in the same QuickBooks account. Imports create them when two sources describe the same days. A typical overlap is a statement file uploaded for a period the bank feed already downloaded, so every row in the shared dates appears once from the file and once from the feed.
Intuit's help article Fix duplicate transactions in QuickBooks Online Desktop bank feeds lists four causes: reconnecting an account, importing a file that overlaps the bank feed, adding a downloaded transaction instead of matching it, and recording the same sale two ways. Each one leaves two records where the bank shows one.
Reconnection is the cause that looks like a fix. The same Intuit article says to fix sign-in problems with Edit sign-in info rather than disconnecting, because reconnecting makes past transactions download again. A bookkeeper who disconnects and reconnects a client's checking account to clear an error can bring in weeks of history that is already in the register.
Adding instead of matching is the slow version of the same problem. Suppose a client's bookkeeper wrote a check in QuickBooks on the 3rd, and the bank feed downloads the cleared check on the 6th. If someone selects Add on the downloaded row instead of Match, the check exists twice, once as the original entry and once as a new expense.
How far back a feed reaches when it is first connected decides how big the overlap can be. The post on bank feed vs CSV upload in QuickBooks explains feed start dates and why they collide with uploaded files.
QuickBooks Desktop behaves differently with Web Connect files. Intuit's article Error: Nothing imported after importing a Web Connect (.qbo) file says every transaction in a Web Connect file has a unique identifier, and QuickBooks will not import a transaction with the same ID more than once. Importing the same .qbo file again adds nothing, but entries from another source, such as hand entry, carry no matching ID and are not caught. The Desktop routes are covered in how to import bank transactions into QuickBooks Desktop.
Finding duplicate imported transactions by date and amount
The fastest way to find duplicate imported transactions is the account register, filtered to the overlap dates and sorted by amount. Two rows with the same amount and the same or adjacent dates sit next to each other, so a doubled batch shows up as a column of pairs. Check each pair against the bank statement before removing anything.
Intuit's duplicate-transactions article gives the path in QuickBooks Online: go to All apps, then Accounting, then Chart of accounts, and select View register for the account. Use Filter to set the date range, then select the Amount column so identical amounts line up. The article also says to switch the view from "All plus deposits" to All, because the first view can show some transactions twice and make a clean register look doubled.
Not every pair is a duplicate. The same article notes that a payment and its deposit are a linked pair, not two copies of one item. A customer payment received into Undeposited Funds and the bank deposit that carries it will both appear, and both belong.
Use the statement as the referee. Intuit's first step is to check the bank or card statement: if a charge appears twice on the statement, it is real and the bank or processor is the one to contact. If it appears once on the statement and twice in QuickBooks, it is a duplicate.
A worked example: a March file on top of a feed that began March 15
This example is fictional. Example Plumbing LLC, a client of the example firm Brightwater Bookkeeping, has a checking account ending XXXX-4821. Its bank feed was connected with a start date of March 15. A staff member later uploaded a CSV of the full March statement, March 1 to March 31, to fill the first half of the month.
Rows from March 1 to 14 came in once, from the file. Rows from March 15 to 31 came in twice, once from the feed and once from the file. Sorting the March register by amount produced this list of likely doubles:
| Date | Description | Amount | Source |
|---|---|---|---|
| Mar 15 | Example Supply Co | -412.60 | Bank feed |
| Mar 15 | Example Supply Co | -412.60 | CSV upload |
| Mar 18 | Customer deposit | 2,300.00 | Bank feed (matched to invoice) |
| Mar 18 | Customer deposit | 2,300.00 | CSV upload |
| Mar 22 | Fuel Stop 118 | -64.25 | Bank feed |
| Mar 22 | Fuel Stop 118 | -64.25 | Bank feed |
| Mar 22 | Fuel Stop 118 | -64.25 | CSV upload |
| Mar 22 | Fuel Stop 118 | -64.25 | CSV upload |
The March 22 fuel charge appears four times. The statement shows it twice, so the two feed copies are the real charges and both file copies are extras. Every other pair is a true double: one row from each source for one statement line.
The cleanup steps were short. Keep the feed copy of each pair, because the deposit is already matched to an invoice. Exclude the CSV copies dated March 15 or later that are still in the review list. Leave the March 1 to 14 file rows alone, since the feed never covered those days.
How do you delete a batch of imported QuickBooks transactions?
A batch of imported QuickBooks transactions that has not been added to the books can be excluded together from the review list. Rows already added or matched are reversed with Undo, then excluded. Rows typed in by hand are deleted or voided in the register. Excluding is safer than deleting for anything that came from the bank.
Intuit's duplicate-transactions article describes each case. In the For review tab (Pending in some views), check the extra copies and select Exclude. To reverse a mistake, open the Excluded tab and select Undo.
The difference between excluding and deleting matters for feeds. The same article says deleting a downloaded transaction causes it to download again, while excluding it prevents that. If the bank resends something you already excluded, delete that copy from the Excluded tab.
Rows already added from the feed need one more step. In the Categorized tab (Posted in some views), select the link under Added or Matched, then Undo. The row returns to review, where you can match it to the right record or exclude it. If it is part of another transaction, undo that match first.
Manual entries are a third case. Open the register, select the entry, then More and Delete, or Void to keep a record at zero. Intuit's article says deleted items cannot be restored, though the audit log keeps details for about two years.
Pick which copy survives before acting. Intuit's guidance is to keep the reconciled copy, marked C or R. If neither is reconciled, keep the one matched to other records or carrying attachments. In the worked example, that meant keeping the feed copy of the matched deposit.
When an imported duplicate is not really a duplicate
An imported duplicate is not really a duplicate when the bank statement shows the same amount, payee and date more than once. Two identical coffee purchases, two equal loan draws or two same-day transfers are separate real transactions that only look doubled in a sorted register. The statement line count decides, not the register.
Count statement lines first. If the statement for XXXX-4821 lists Fuel Stop 118 at $64.25 twice on March 22, QuickBooks should hold exactly two of them. Three copies means one extra; two copies means none.
Look at what each row is attached to. A row matched to a bill or invoice, or carrying a receipt, is the one to keep. A bare row with no link and a description copied from the file is usually the extra.
Check the reference data. Bank exports often include a check number or transaction reference. Two checks for $500.00 with different check numbers are two payments. Two rows with the same check number are one payment recorded twice.
Watch for recurring transactions. Intuit's duplicate-transactions article notes that recurring templates can create doubles too. It suggests running Reports, then Recurring Template List, looking for matching payees and amounts, and deleting the extra template under Settings, then Recurring transactions. A monthly rent entry created by a template and also downloaded from the feed will look like an import duplicate even though no file was involved.
Connected sales apps cause their own lookalikes. The same article says to match the bank download to the app's entry or exclude the extra, and gives the example of excluding a daily lump-sum deposit when the itemized sales are already recorded.
Is a duplicate import already matched or reconciled?
A duplicate import that has been matched or reconciled can no longer be excluded from the review list like a fresh download. A matched row must be undone first, and a reconciled row is part of a closed statement period, so removing it changes the balance that reconciliation agreed. Check the reconciliation status column before touching either copy.
Matched rows are the easier case. Undo the match from the Categorized or Posted tab, then exclude the extra copy or match it to the correct record, as described in the batch section above.
Reconciled rows need care. Intuit's duplicate-transactions article warns that deleting a reconciled transaction may throw off the beginning balance, and it points to Intuit's article on fixing accounts reconciled in the past. It also says to talk to your accountant before unreconciling anything.
The rule of thumb in Intuit's guidance is to keep the reconciled copy and remove the other. If both copies were reconciled, that reconciliation counted the duplicated amount and has to be repaired, not just one row removed.
A reconciliation that already contains doubles is its own repair job. The post on bank reconciliation errors walks through tracing duplicate and missing entries behind a reconciliation difference, and the bank reconciliation category collects the related guides.
Setting an import cutoff date so duplicates do not return
An import cutoff date is the first day a new file or feed is allowed to cover, set to the day after the newest transaction already in the QuickBooks account. Every file and feed start date respects that line, so no two sources describe one day. Write the cutoff down per account so the next person uses it too.
Intuit says the same in two places. Its duplicate-transactions article lists "Import files that start after the newest transaction that's already in QuickBooks" as a prevention step. The video in its article Manually upload transactions into QuickBooks Online says that when an account already has transactions, you find the date of the last one and start the next day. For an account with no transactions yet, it says to match the opening balance date.
For a new connection, Intuit's article Connect bank and credit card accounts to QuickBooks Online says that if the account already has transactions, choose a feed start date immediately after the most recent one. In the worked example, that would have meant either uploading only March 1 to 14, or starting the feed on April 1 and uploading the whole of March.
A few habits from Intuit's prevention list keep the cutoff honest:
- Match downloaded transactions instead of adding them.
- Turn off auto-add on bank rules so new rows wait in For review.
- Connect each account only once.
- Record each sale one way, as an invoice or a sales receipt, not both.
- Reconcile each month to catch duplicates that slipped through.
Duplicates also start upstream, before anything reaches QuickBooks. A client who sends the March statement twice, once as a PDF and once as a spreadsheet, invites a double upload. Schema CPA flags a statement that arrives twice in a client's file and exports the transactions it reads to Excel or CSV; it does not connect to QuickBooks. The workflow section of the homepage shows where duplicate checks sit.