diff --git a/src-db/database/sourcedata/AD_MESSAGE.xml b/src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml
@@ -90,24 +90,12 @@
 <!--AD718FC097D64644981C0DF27CDC7C87-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--AD718FC097D64644981C0DF27CDC7C87-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--AD718FC097D64644981C0DF27CDC7C87-->  <VALUE><![CDATA[OBRETUR_returnService_OutOfDate_warning]]></VALUE>
-<!--AD718FC097D64644981C0DF27CDC7C87-->  <MSGTEXT><![CDATA[The overdue days to return of the following services has expired:%0]]></MSGTEXT>
+<!--AD718FC097D64644981C0DF27CDC7C87-->  <MSGTEXT><![CDATA[The overdue days to return the following services have expired:%0]]></MSGTEXT>
 <!--AD718FC097D64644981C0DF27CDC7C87-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
 <!--AD718FC097D64644981C0DF27CDC7C87-->  <AD_MODULE_ID><![CDATA[540C0D82BFD74311A4912E29289B73CC]]></AD_MODULE_ID>
 <!--AD718FC097D64644981C0DF27CDC7C87-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--AD718FC097D64644981C0DF27CDC7C87--></AD_MESSAGE>
 
-<!--B50F397311F0414C91C5436D9D68B9CB--><AD_MESSAGE>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <AD_MESSAGE_ID><![CDATA[B50F397311F0414C91C5436D9D68B9CB]]></AD_MESSAGE_ID>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <VALUE><![CDATA[OBRETUR_approval.returnService_OutOfDate]]></VALUE>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <MSGTEXT><![CDATA[The overdue days to return of the following services has expired:%0<br>A supervisor needs to approve the return]]></MSGTEXT>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <AD_MODULE_ID><![CDATA[540C0D82BFD74311A4912E29289B73CC]]></AD_MODULE_ID>
-<!--B50F397311F0414C91C5436D9D68B9CB-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
-<!--B50F397311F0414C91C5436D9D68B9CB--></AD_MESSAGE>
-
 <!--C4A9EC3ECD6C4E4586E438B4AD7AF2BC--><AD_MESSAGE>
 <!--C4A9EC3ECD6C4E4586E438B4AD7AF2BC-->  <AD_MESSAGE_ID><![CDATA[C4A9EC3ECD6C4E4586E438B4AD7AF2BC]]></AD_MESSAGE_ID>
 <!--C4A9EC3ECD6C4E4586E438B4AD7AF2BC-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_PREFERENCE.xml b/src-db/database/sourcedata/AD_PREFERENCE.xml
--- a/src-db/database/sourcedata/AD_PREFERENCE.xml
+++ b/src-db/database/sourcedata/AD_PREFERENCE.xml
@@ -11,4 +11,15 @@
 <!--B80567E8E2C64CCDBA19484A346A820A-->  <AD_MODULE_ID><![CDATA[540C0D82BFD74311A4912E29289B73CC]]></AD_MODULE_ID>
 <!--B80567E8E2C64CCDBA19484A346A820A--></AD_PREFERENCE>
 
+<!--ECE9124D853743579062B93689020EA3--><AD_PREFERENCE>
+<!--ECE9124D853743579062B93689020EA3-->  <AD_PREFERENCE_ID><![CDATA[ECE9124D853743579062B93689020EA3]]></AD_PREFERENCE_ID>
+<!--ECE9124D853743579062B93689020EA3-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--ECE9124D853743579062B93689020EA3-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--ECE9124D853743579062B93689020EA3-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--ECE9124D853743579062B93689020EA3-->  <VALUE><![CDATA[Y]]></VALUE>
+<!--ECE9124D853743579062B93689020EA3-->  <PROPERTY><![CDATA[OBRETUR_approval.overdueService]]></PROPERTY>
+<!--ECE9124D853743579062B93689020EA3-->  <ISPROPERTYLIST><![CDATA[Y]]></ISPROPERTYLIST>
+<!--ECE9124D853743579062B93689020EA3-->  <AD_MODULE_ID><![CDATA[540C0D82BFD74311A4912E29289B73CC]]></AD_MODULE_ID>
+<!--ECE9124D853743579062B93689020EA3--></AD_PREFERENCE>
+
 </data>
diff --git a/src-db/database/sourcedata/AD_REF_LIST.xml b/src-db/database/sourcedata/AD_REF_LIST.xml
--- a/src-db/database/sourcedata/AD_REF_LIST.xml
+++ b/src-db/database/sourcedata/AD_REF_LIST.xml
@@ -11,4 +11,15 @@
 <!--5EE097DECB5A4D6995BD965B7331655B-->  <AD_MODULE_ID><![CDATA[540C0D82BFD74311A4912E29289B73CC]]></AD_MODULE_ID>
 <!--5EE097DECB5A4D6995BD965B7331655B--></AD_REF_LIST>
 
+<!--8DECBB2FD8114DE4BAF8B15028216095--><AD_REF_LIST>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <AD_REF_LIST_ID><![CDATA[8DECBB2FD8114DE4BAF8B15028216095]]></AD_REF_LIST_ID>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <VALUE><![CDATA[OBRETUR_approval.overdueService]]></VALUE>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <NAME><![CDATA[Web POS Services Overdue Return Days Approval]]></NAME>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <AD_REFERENCE_ID><![CDATA[A26BA480E2014707B47257024C3CBFF7]]></AD_REFERENCE_ID>
+<!--8DECBB2FD8114DE4BAF8B15028216095-->  <AD_MODULE_ID><![CDATA[540C0D82BFD74311A4912E29289B73CC]]></AD_MODULE_ID>
+<!--8DECBB2FD8114DE4BAF8B15028216095--></AD_REF_LIST>
+
 </data>
diff --git a/web/org.openbravo.retail.returns/js/modalReturnLines.js b/web/org.openbravo.retail.returns/js/modalReturnLines.js
--- a/web/org.openbravo.retail.returns/js/modalReturnLines.js
+++ b/web/org.openbravo.retail.returns/js/modalReturnLines.js
@@ -447,7 +447,7 @@
                   });
                   },
                   finishOrder = _.after(me.args.args.order.receiptLines.length, finishOrderCreation),
-                  createOrderLines = function () {
+                  createOrderLines = function (ignoreReturnApproval) {
                   _.each(me.args.args.order.receiptLines, function (line) {
                     if (!line.exceedsQuantity) {
                       var createLineFunction = function (prod) {
@@ -458,6 +458,7 @@
                           }
                           prod.set('ignorePromotions', true);
                           prod.set('standardPrice', line.priceIncludesTax ? line.unitPrice : line.baseNetUnitPrice);
+                          prod.set('ignoreReturnApproval', ignoreReturnApproval);
                           order.addProductToOrder(prod, qty, null, {
                             'originalOrderLineId': line.lineId,
                             'originalDocumentNo': me.args.args.order.documentNo,
@@ -504,8 +505,11 @@
                   },
                   approvalNeeded = false,
                   currentDate = new Date(),
+                  approvalList = [],
                   servicesToApprove = '',
-                  servicesToApproveArr = [];
+                  servicesToApproveArr = [],
+                  overdueServicesToApprove = '',
+                  overdueServicesToApproveArr = [];
 
               me.nameLocation = bpLoc.get('name');
               bp.set('locationModel', bpLoc);
@@ -525,33 +529,42 @@
               currentDate.setMilliseconds(0);
               for (i = 0; i < me.args.args.order.receiptLines.length; i++) {
                 var line = me.args.args.order.receiptLines[i];
-                if (!line.notReturnable) {
-                  if (line.productType === 'S' && (line.overdueReturnDays < 0 || ((currentDate.getTime() - line.overdueReturnDays * 86400000) > (new Date(me.args.args.order.orderDate)).getTime()))) {
-                    servicesToApprove += '<br>· ' + line.name;
-                    servicesToApproveArr.push(' * ' + line.name);
-                    if (!approvalNeeded) {
-                      approvalNeeded = true;
-                    }
+                if (line.productType === 'S' && !line.notReturnable) {
+                  servicesToApprove += '<br>· ' + line.name;
+                  servicesToApproveArr.push(' * ' + line.name)
+                  approvalNeeded = true;
+                  if (line.overdueReturnDays < 0 || ((currentDate.getTime() - line.overdueReturnDays * 86400000) > (new Date(me.args.args.order.orderDate)).getTime())) {
+                    overdueServicesToApprove += '<br>· ' + line.name;
+                    overdueServicesToApproveArr.push(' * ' + line.name);
                   }
-                } else {
-                  OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_UnreturnableProduct'), OB.I18N.getLabel('OBPOS_UnreturnableProductMessage', [line.name]));
-                  return;
                 }
               }
+
               if (approvalNeeded) {
+                if (!OB.MobileApp.model.hasPermission('OBPOS_approval.returnService', true)) {
+                  approvalList.push({
+                    approval: 'OBPOS_approval.returnService',
+                    message: 'OBPOS_approval.returnService',
+                    params: [servicesToApprove]
+                  });
+                }
+                if (!OB.MobileApp.model.hasPermission('OBRETUR_approval.overdueService', true) && overdueServicesToApprove.length > 0) {
+                  approvalList.push({
+                    approval: 'OBRETUR_approval.overdueService',
+                    message: 'OBRETUR_returnService_OutOfDate_warning',
+                    params: [overdueServicesToApprove]
+                  })
+                }
+
                 OB.UTIL.showLoading(false);
                 OB.UTIL.Approval.requestApproval(
-                OB.MobileApp.view.$.containerWindow.getRoot().model, [{
-                  approval: 'OBPOS_approval.returnService',
-                  message: 'OBRETUR_approval.returnService_OutOfDate',
-                  params: [servicesToApprove]
-                }], function (approved, supervisor, approvalType) {
+                OB.MobileApp.view.$.containerWindow.getRoot().model, approvalList, function (approved, supervisor) {
                   if (approved) {
-                    if (supervisor.id === OB.POS.terminal.terminal.usermodel.id) {
-                      OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBMOBC_LblWarning'), OB.I18N.getLabel('OBRETUR_returnService_OutOfDate_warning', [servicesToApproveArr]));
+                    if (supervisor.id === OB.POS.terminal.terminal.usermodel.id && overdueServicesToApprove.length > 0) {
+                      OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBMOBC_LblWarning'), OB.I18N.getLabel('OBRETUR_returnService_OutOfDate_warning', [overdueServicesToApproveArr]));
                     }
                     OB.UTIL.showLoading(true);
-                    createOrderLines();
+                    createOrderLines(true);
                   }
                 });
               } else {
