Prevent deletion of sales invoices


I am currently investigating the process of registering ERPNext with the tax authority in Nepal. One requirement is that Sales Invoices be undeletable. I know I can do this with user permissions, but I have been told that this is not sufficient. I’d like to avoid forking the project if possible. Is there a better way?


@gavagai As per my experience it should be sufficient but I will like to understand the usecase where it is not sufficient.


@gavagai Invoices can be cancelled/amended/deleted if the user has permission rights. Every software has methods of deleting anything, I frankly do not believe that once written is hard-coded but log would be created of the deletion.

We have previously discussed Immutable Ledger and I strongly support it. It’s going to be implemented soon

1 Like

Sure. That wil be part of the implementation. If the ledger is going to be ‘add-only’, the source documents are also going to have to be ‘add-only’

@gavagai. Have you checked Tally security control? Its open to any modifications by anyone. One time my friend brought to me Tally data file and I accessed it with a crack version. I could have changed any sales order, invoice, journal entry or anything else in that database. This could have easily been saved back into original computer without the user understanding that the file has been compromised. Tally is loved by accountant who know that system can be manipulated when errors are found in their work. ERPNext next logs everything and traceback can be done to user who had made the error or modifications.

Hi @gavagai,

We have the same requirement in France and have started to implement it through the regional hooks.

Maybe you can check out this PR Transaction Log for France by chdecultot · Pull Request #12795 · frappe/erpnext · GitHub and propose something similar for Nepal ?

We still need to add some additional controls to avoid users switching their country.

Hi, Gavagi… I have been doing research on erpnext since couple of months and its possibility for Nepal. So Far as I have learned that in ERPnext you can cancel and Delete transaction . As per the directive Issued by Nepal Tax Authority you can cancel the sales invoice but you cannot permanently delete it(Record of Cancelled invoice should be available). beside these following issues needs to be sorted out before we get approval from Nepal’s Tax authority.

  1. When a invoice is printed more than two times “Copy of Original” Should be printed automatically also.
  2. Should connect in real time to(Only for Invoice) “Central Billing Management System” (They Provide API)
    Beside these there are other issues like the server location and automatic invoice number , Abbreviate Tax Invoice .

Thats why tally is not approved for Invoicing in Nepal.

Also… you can see the new directive issued few months ago…there are whole lots of issues that needs to be considered before getting approval.

What if someone uses it for internal Use, how is it possible to delete invoice in ERPNext?

No, the ability to delete Invoices has been removed since v13 after introducing Immutable Ledger.