ERROR Conversion Factor is mandatory - Importing Sales Invoice + Purchase Invoice

Hey ERPNext Community,

I am just importing several CSVs from v7 to v10 via Import Tool and bench csv-import.

Especially on Sales and Purchase Invoice there is a Error I cannot get over and it says:

Error for row "SINV-12345"Row 2: Conversion Factor is mandatory

Error for row "PINV-12345"Row 1: Conversion Factor is mandatory

When I enter a Conversion Factor like “1” the Error changes to the following:

Error: Sales Invoice Item Row #1: Value missing for: UOM

Thank you


You need to add column UOM, Conversion Factor in the CSV file against each item for sales invoice and purchase invoice. Better download the template from v10 and add the data from v7 CSV file.

Hi Rohit,

this is what I wrote and already did. But then this error shows:

Sales Invoice Item Row #1: Value missing for: UOM

I have added UOM (Unit/Hour etc.) and UOM Factor (1) in the colums and already compared V10 and V7 csv and added the UOM Factor.

In Purchase Invoice this is working somehow but not in Sales Invoice.

Thank you.


In that case it should be work, I have also checked on my local account and it’s working properly. Is there any error traceback on console log? If yes, please share.

There is no special error traceback, only what I have pasted here.
I see one column for UOM and one for UOM conversion factor.
Should there be another UOM field maybe, because when UOM and Factor is filled, it says UOM value is missing like on my first post?

15:03:27 web.1            | Traceback (most recent call last):
15:03:27 web.1            |   File "apps/frappe/frappe/", line 69, in application
15:03:27 web.1            |     response = frappe.api.handle()
15:03:27 web.1            |   File "apps/frappe/frappe/", line 55, in handle
15:03:27 web.1            |     return frappe.handler.handle()
15:03:27 web.1            |   File "apps/frappe/frappe/", line 38, in handle
15:03:27 web.1            |     data = execute_cmd(cmd)
15:03:27 web.1            |   File "apps/frappe/frappe/", line 76, in execute_cmd
15:03:27 web.1            |     return, **frappe.form_dict)
15:03:27 web.1            |   File "apps/frappe/frappe/", line 1457, in call
15:03:27 web.1            |     return fn(*args, **newargs)
15:03:27 web.1            |   File "apps/frappe/frappe/desk/form/", line 24, in savedocs
15:03:27 web.1            |
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 310, in save
15:03:27 web.1            |     return self._save(*args, **kwargs)
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 332, in _save
15:03:27 web.1            |     return self.insert()
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 261, in insert
15:03:27 web.1            |     self.run_before_save_methods()
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 1052, in run_before_save_methods
15:03:27 web.1            |     self.run_method("validate")
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 941, in run_method
15:03:27 web.1            |     out = Document.hook(fn)(self, *args, **kwargs)
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 1261, in composer
15:03:27 web.1            |     return composed(self, method, *args, **kwargs)
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 1243, in runner
15:03:27 web.1            |     add_to_return_value(self, fn(self, *args, **kwargs))
15:03:27 web.1            |   File "apps/frappe/frappe/model/", line 938, in fn
15:03:27 web.1            |     return method_object(*args, **kwargs)
15:03:27 web.1            |   File "apps/erpnext/erpnext/accounts/doctype/sales_invoice/", line 96, in validate
15:03:27 web.1            |     super(SalesInvoice, self).validate()
15:03:27 web.1            |   File "apps/erpnext/erpnext/controllers/", line 36, in validate
15:03:27 web.1            |     self.set_qty_as_per_stock_uom()
15:03:27 web.1            |   File "apps/erpnext/erpnext/controllers/", line 200, in set_qty_as_per_stock_uom
15:03:27 web.1            |     frappe.throw(_("Row {0}: Conversion Factor is mandatory").format(d.idx))
15:03:27 web.1            |   File "apps/frappe/frappe/", line 504, in throw
15:03:27 web.1            |     msgprint(
15:03:27 web.1            |   File "apps/frappe/frappe/", line 479, in msgprint
15:03:27 web.1            |     _raise_exception()
15:03:27 web.1            |   File "apps/frappe/frappe/", line 434, in _raise_exception
15:03:27 web.1            |     raise raise_exception(msg)
15:03:27 web.1            | frappe.exceptions.ValidationError: Row 1: Conversion Factor is mandatory

This happens even when I enter the conversion factor