Unapproveby Atesen Software

Guides → Undo a bad CSV import of invoices: a guide for Xero users

Undo a bad CSV import of invoices: a guide for Xero users

Xero has no undo button for an import. If the imported invoices are still drafts, delete them in bulk and import the corrected file again. If anyone has approved them, each has to be voided, or taken back to draft first. This guide takes both cases, with Xero's own steps, and shows how to deal with a large approved batch.

Checked against Xero Central on 12 October 2026 (the delete-or-void invoice page again on 24 October).

First, stop and look at what you have

  1. Do not approve anything yet. Xero's import pages say invoices, bills and credit notes are imported as drafts, which you can approve or edit afterwards (Import customer invoices, Import bills and credit notes). A bad import that is still all drafts is the easy case.
  2. Find the import. Filter the Draft tab, or search by number, reference or date range (Search for sales and purchase transactions). Note the number range and the date you imported.
  3. Check the side effects. A contact name that does not match exactly creates a new contact, and an unknown inventory code a new inventory item. Deleting the invoices will not remove those.

Case 1: everything is still a draft

Delete them and import again. Xero supports deleting drafts in bulk: on the Draft tab, tick the invoices and click Delete (Delete or void an invoice; bills are on the bill page). The number of a deleted draft can be reused, and that matters because an import skips any invoice whose number already exists in Xero. To see what a deleted or voided number is still attached to, tick Include Deleted & Voided when you search. Fix the file, keeping the column headings as they are, and import it again. Xero recommends no more than 500 items in one file, and the import screen shows errors you can go back and fix before you click Complete Import.

Case 2: some or all of it has been approved

Now it is the same problem as any wrongly approved batch, and Xero has no unapprove. Your choices are to edit the documents, or to remove them:

Mind the numbers: Xero says that to reuse the number of an approved invoice you must change it before you void it. Void a batch without renaming and those numbers are gone, so a corrected import will skip every one of them (how to keep a number free). If the batch came from a sync, see duplicates after a Shopify or connector sync.

Where the native way runs out

The faster way for the approved ones: Unapprove

Unapprove is a web app that works with Xero. It does not edit or delete documents, or undo the contacts and inventory items the import created. It takes a large selection of approved invoices and bills back to draft, or voids them.

Choosing the right run

How a run goes

  1. Connect: you sign in at Xero and choose the organisation.
  2. Filter the approved documents by date range, contact, number or reference, which are the handles your import left behind, plus type and status. Tick the ones that came from the bad file.
  3. Preview. Nothing is written. Documents that will be skipped are listed with the reason.
  4. Download the CSV backup of the selection, then type the confirmation, for example UNAPPROVE 120.
  5. Watch it run and download the results.

What it skips, and tells you why: documents with a payment applied or a credit note allocated (why), documents dated on or before your lock date (why), documents for an archived contact (why), and anything processed in the last 24 hours. A document with a file over 10 MB, or more than 10 files, can only be voided. Each run has a ceiling on the number of documents; if you select more, the preview asks you to select fewer and run again.

If the bad import was also paid, for instance by a bank rule or an integration, the separate "Remove payments and void" run handles those: see the guide to voiding multiple invoices with payments.

What access it asks for: your name and email to sign you in, read and write on invoices and bills, read and write on attachments, and read-only on organisation settings and contacts. A payments permission is requested only if you choose "Remove payments and void".

What it never does: see your Xero password, store your attachments, or change anything before you type the confirmation. Nobody can undo a void, so preview first.

Price: free for 14 days, with unlimited previews and three documents processed in total. After that, $29 per month per connected organisation, or a one-off $49 Clean-up Pass for 7 days and up to 500 documents. Prices are in US dollars and exclude VAT and sales tax (added at checkout); the pricing page has the details.

Connect and preview free See pricing

Questions

Can I undo a CSV import in Xero?
Not as one action: Xero's pages describe no undo for an import. Imported documents arrive as drafts, which you can delete in bulk. Once they are approved, each has to be voided, and Xero's invoice page says invoices cannot be voided in bulk.
Will I get the same invoice numbers back for a corrected import?
Only if the numbers are free. Deleted drafts free their numbers. An approved invoice voided without being renamed keeps its number, so a re-import skips it. Unapprove's draft route renames the original and gives the draft the number, so you can delete the drafts and import again.
Does Unapprove fix the data in the documents?
No. It creates the draft copy and voids the original. You correct the draft in Xero, or delete it.
What about contacts the import created?
They stay. Xero can merge contacts; Unapprove does not change contacts.
Who makes Unapprove?
Atesen Software, an independent developer. Unapprove works with Xero through Xero's public API; Xero does not make it and has not endorsed it.

Related guides