Odoo Accounting

How to Cancel Multiple Invoices and Bills at Once in Odoo

Every accounting team hits the same clean-up job sooner or later: an import that created the same invoices twice, a migration that brought over test documents, or a batch of invoices that has to be withdrawn because the order behind it was cancelled. Cancelling them one by one means opening each document, cancelling it and moving on — and afterwards nobody can tell why a given invoice was cancelled.

This guide shows how to cancel many customer invoices, vendor bills, credit notes or journal entries in a single step in Odoo 19 and 20 with the Bulk Cancel Invoices & Bills app, while keeping a reason and a record for every document.

Why a one-by-one clean-up goes wrong

  • It takes time. Fifty duplicates means fifty times open, cancel, go back.
  • There is no consistent record. Some people write a note in the chatter, most do not. Months later, an auditor asks why an invoice was cancelled and nobody knows.
  • Paid documents get touched by mistake. In a long list it is easy to cancel an invoice that already has a payment matched to it.
  • Problem documents are hard to spot. Some invoices refuse to be cancelled — sent to the tax authority, hashed, or in a locked period — and you only find out one error message at a time.

Step 1: Give the access right

Bulk cancellation is a dedicated right. Accounting administrators have it automatically. For other users, open their access rights and, under Accounting, set Bulk Cancellation to Bulk Cancel Invoices (this also gives them the Billing right). Users without this right do not see the action at all.

Step 2: Choose the company rules

Open Invoicing > Configuration > Settings. The app adds two options per company:

  • Mandatory Cancellation Reason — switched on by default, so nobody can cancel in bulk without picking a reason.
  • Cancel Paid Documents — switched off by default. When you switch it on, authorised users may also cancel documents that carry payments; their payments are unreconciled first.

Step 3: Review your cancellation reasons

Under Invoicing > Configuration > Cancellation Reasons you keep your own list. The app starts you off with five common ones: Duplicate document, Order cancelled, Test or import clean-up, Wrong customer or vendor and Wrong price, quantity or tax. A reason can belong to one company or be shared by all of them, can carry a short "when to use" note for your team, and shows how many documents it has been used on.

Step 4: Select the documents and open Bulk Cancel

In the list of invoices, bills, credit notes or journal entries, tick the documents you want to cancel, open the Action menu and choose Bulk Cancel.

Nothing is changed yet. You first get a review screen that lists every selected document as Ready or Skipped, with the exact reason a document will be left alone:

  • it is already cancelled;
  • it was sent to the tax authority, so its cancellation has to be requested from the document itself;
  • it is locked by the journal's inalterability hash;
  • it has payments or credit notes matched with it (unless paid documents are allowed and included).

Step 5: Pick a reason and run it

Choose the cancellation reason, add a note if you want, and click Cancel Documents (Odoo asks you to confirm). The app uses Odoo's standard cancellation routine for each document — it never just changes a status — so your accounting safeguards such as lock dates and locked journals stay in force.

Each document is processed on its own. If Odoo refuses to cancel one of them, that document is left exactly as it was and marked as failed with Odoo's message, and the others are still cancelled. The result screen shows how many documents were cancelled, skipped and failed, and one click on View Cancelled Documents opens the list.

What you can see afterwards

Every document cancelled this way stores the reason, the note, who cancelled it and when. A message such as "Cancelled in bulk by <user>. Reason: Duplicate document" is posted in its chatter. In the invoice, bill and credit note lists you can filter on Cancelled in Bulk and group by Cancellation Reason — handy for month-end reviews and audits.

If a cancelled document is later reset to draft, its cancellation details are cleared, so a document that is back in use never carries an old cancellation reason.

Who this is for

  • Bookkeepers cleaning up after a CSV import or a data migration that went wrong.
  • Sales and billing teams that issue invoices in batches and occasionally have to pull a whole batch back.
  • Month-end controllers and auditors who group cancelled documents by reason to see what happened.

The app works on Odoo 19 and Odoo 20, Community and Enterprise, depends only on the Invoicing app and works out of the box: accounting administrators can use it straight after installation. See the Bulk Cancel Invoices & Bills page for screenshots and the Odoo Apps Store link.

Bulk Cancel Invoices & Bills icon

Bulk Cancel Invoices & Bills

Cancel many invoices, vendor bills and credit notes at once, with a reason and a full audit trail

View the app Odoo Apps Store