Disable Standard Print Format

New install Ubuntu 18.04 running
ERPNext: v12.3.1 (version-12)
Frappe Framework: v12.1.0 (version-12)

Trying to disable Sales invoice POS print formats by checking disabled box and saving. Getting “Standard Print Format cannot be updated” error.

Select ‘No’ in the standard field and then save

Then Tick Disabled and Save

Thanks for super quick response, but that is not screen that is visible. See what is shown from Print Format list when clicking on 1 item:

Maybe some new changes in V12. Anyone using V12 can help.

You can’t disable it. If you have access to the DB you can disable it from there. Why do you want to disable it? Maybe there is another solution

I know that I would like to be able to disable the Standard print format because I have invested significant money and effort to create custom print formats that include extra fields that are important to my business and eliminate several paths to theft by some users.

If the Standard format is unable to be switched off, then they would be able to simply select the Standard print format during the printing process and use the opportunity to execute a theft they can attribute then to a supposed honest “mistake.” It would be much better to take away the opportunity to make such “mistakes.”

Just my particular scenario, and my unsolicited opinion…



Then you should disable it via DB, I did not find another option.

Yes. I am NOT a database expert and do not wish to mess up my production systems. I have had to pay an expert to do that for me already. However when I did upgrades to 12.3.x the patch is again reverted back and I had to either pay an expert again or find another solution. They ability to turn off standard print formats would make that much easier.


That’s for sure.

Many reason to disable, simplest is we are not in India why would we have GST invoice formats for our employees to select by mistake. These do not comply with legal requirements for invoice formats in our country.

Not clear why a developer would make this business and country specific decision for what is supposed to be global platform.


I see around 5 print format which are standard and cannot be disabled, I find it annoying as those 5 are not going to be used and it will make user confused with so many print format options.

How can we disable it from the backend?


The core print formats are never used as they dont match up to customer expectation. Its fine to keep them but like V10 user should have the access disable core prints and display only those that are needed.

1 Like

You could delete unused standard print format, but it still come back when doing bench migrate.

Another way is to run custom delete print format method after migrate by adding after_migrate = [path.to.your.script] to hook.py, I haven’t tried this but it should work.


1 Like

Why is this still not solved yet?
This is a very annoying issue. I already have customized the invoice print format but I can’t edit it anymore because I get the error “Standard Print Format cannot be updated”.
And I cant enable field so it must be done directly in the database that I dont know how to access…

1 Like

Change your Standard Field to No in your custom print format first then you can update it.

If still no luck then might need some upstream changes or last option is to override it like we did to just disable all standard print formats

Note: Shows V13! I don’t know how long that capability has been available.


@Masoud_Hosseini - this is the way I have used to disable standard print formats by creating a server script.

There is the code:

print_formats = [‘KSA VAT Invoice’,
‘GST Tax Invoice’,
‘GST POS Invoice’]
for print_format in print_formats:
frappe.db.set_value(‘Print Format’, print_format, ‘disabled’, 1)

You can manually add the print_formats to the list.
Click on Scheduled Job Type, Open it and Click Execute.
then you can disable the server script

A bit of a hack but it works. You will still continue to see it in the list of print formats of the document but it will give a popup message that it is not active, in case if you select it.