diff --git a/src/org/openbravo/common/actionhandler/createlinesfromprocess/CreateInvoiceLinesFromHandler.java b/src/org/openbravo/common/actionhandler/createlinesfromprocess/CreateInvoiceLinesFromHandler.java
--- a/src/org/openbravo/common/actionhandler/createlinesfromprocess/CreateInvoiceLinesFromHandler.java
+++ b/src/org/openbravo/common/actionhandler/createlinesfromprocess/CreateInvoiceLinesFromHandler.java
@@ -11,7 +11,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2018 Openbravo SLU 
+ * All portions are Copyright (C) 2018-2020 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -31,6 +31,7 @@
 import org.openbravo.client.application.process.ResponseActionsBuilder.MessageType;
 import org.openbravo.erpCommon.utility.OBMessageUtils;
 import org.openbravo.model.common.invoice.Invoice;
+import org.openbravo.service.db.DbUtility;
 
 /**
  * Abstract class to be implemented by any process that creates invoice lines from any Openbravo
@@ -75,9 +76,10 @@
   }
 
   private JSONObject showExceptionInViewAndRetry(Exception e) {
+    final Throwable ex = DbUtility.getUnderlyingSQLException(e);
     return getResponseBuilder()
-        .showMsgInProcessView(MessageType.ERROR, OBMessageUtils.messageBD("error"), e.getMessage(),
-            true)
+        .showMsgInProcessView(MessageType.ERROR, OBMessageUtils.messageBD("error"),
+            OBMessageUtils.translateError(ex.getMessage()).getMessage(), true)
         .retryExecution()
         .build();
   }
