diff --git a/src-db/database/sourcedata/AD_MESSAGE.xml b/src-db/database/sourcedata/AD_MESSAGE.xml
index e14c5596f3eb8c2d08b686620f52639aad02567d..1d0b8bf00a34e83cbf3cd9e5021a4e3334d5a355 100644
--- a/src-db/database/sourcedata/AD_MESSAGE.xml
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml
@@ -9497,6 +9497,18 @@ Please contact your system administrator.]]></MSGTEXT>
 <!--ADA55218AFDF4F0CAA74F59ADC34C526-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--ADA55218AFDF4F0CAA74F59ADC34C526--></AD_MESSAGE>
 
+<!--ADB6AE049FC24964B6333C083B1A7446--><AD_MESSAGE>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <AD_MESSAGE_ID><![CDATA[ADB6AE049FC24964B6333C083B1A7446]]></AD_MESSAGE_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <VALUE><![CDATA[OBPOS_ReceiptNotLoaded]]></VALUE>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <MSGTEXT><![CDATA[It has not been possible to load the following tickets: %0]]></MSGTEXT>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--ADB6AE049FC24964B6333C083B1A7446-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--ADB6AE049FC24964B6333C083B1A7446--></AD_MESSAGE>
+
 <!--ADDDB46DEFA54947B3334A5E95AA17AC--><AD_MESSAGE>
 <!--ADDDB46DEFA54947B3334A5E95AA17AC-->  <AD_MESSAGE_ID><![CDATA[ADDDB46DEFA54947B3334A5E95AA17AC]]></AD_MESSAGE_ID>
 <!--ADDDB46DEFA54947B3334A5E95AA17AC-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js b/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js
index d8bfd9342b90b7be1869f6a6ed8e144903a40549..76215bfb1e507c588c2ef513ff3d3a7e58c58afe 100644
--- a/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js
+++ b/web/org.openbravo.retail.posterminal/js/components/modal-pay-open-tickets.js
@@ -378,9 +378,10 @@ enyo.kind({
   disableDoneButton: function(value) {
     this.$.doneMultiOrdersButton.setDisabled(value);
   },
-  doneAction: function() {
+  doneAction: async function() {
     var execution = OB.UTIL.ProcessController.start('payOpenTicketsValidation'),
       selectedMultiOrders = [],
+      loadedOrderThatWereNotLoaded = [],
       alreadyPaidOrders = [],
       alreadyPaidOrdersDocNo = '',
       me = this,
@@ -421,6 +422,10 @@ enyo.kind({
             },
             function(args) {
               if (args && args.cancellation) {
+                _.each(loadedOrderThatWereNotLoaded, order => {
+                  OB.Dal.remove(order, null, null);
+                });
+
                 OB.UTIL.ProcessController.finish(
                   'payOpenTicketsValidation',
                   execution
@@ -430,10 +435,6 @@ enyo.kind({
               me.doSelectMultiOrders({
                 value: selectedMultiOrders,
                 callback: function() {
-                  OB.UTIL.ProcessController.finish(
-                    'payOpenTicketsValidation',
-                    execution
-                  );
                   OB.POS.terminal.$.containerWindow
                     .getRoot()
                     .$.multiColumn.$.panels.addClass(
@@ -452,7 +453,7 @@ enyo.kind({
       });
     };
 
-    addOrdersToOrderList = _.after(checkedMultiOrders.length, function() {
+    addOrdersToOrderList = function() {
       if (alreadyPaidOrdersDocNo) {
         if (checkedMultiOrders.length === alreadyPaidOrders.length) {
           OB.UTIL.showConfirmation.display(
@@ -486,7 +487,7 @@ enyo.kind({
       } else {
         showSomeOrderIsPaidPopup();
       }
-    });
+    };
 
     this.doHideThisPopup();
     // Check if the selected orders are payable by the 'Pay Open Tickets' flow
@@ -556,101 +557,105 @@ enyo.kind({
       return;
     }
     this.owner.owner.model.deleteMultiOrderList();
-    _.each(checkedMultiOrders, function(iter) {
-      var idx = me.owner.owner.model
-        .get('orderList')
-        .map(function(order) {
-          return order.id;
-        })
-        .indexOf(iter.id);
-      if (idx !== -1) {
-        var order = me.owner.owner.model.get('orderList').at(idx);
-        order.set('checked', true);
-        order.save();
-        selectedMultiOrders.push(order);
-        addOrdersToOrderList();
-      } else {
-        process.exec(
-          {
-            orderid: iter.id,
-            crossStore: OB.UTIL.isCrossStoreReceipt(iter)
-              ? iter.get('organization')
-              : null
-          },
-          function(data) {
-            if (data && data.exception) {
-              OB.UTIL.ProcessController.finish(
-                'payOpenTicketsValidation',
-                execution
-              );
-              OB.UTIL.showLoading(false);
-              OB.UTIL.showConfirmation.display('', data.exception.message);
-            } else if (data) {
-              if (data[0].recordInImportEntry) {
-                OB.UTIL.ProcessController.finish(
-                  'payOpenTicketsValidation',
-                  execution
-                );
-                OB.UTIL.showLoading(false);
-                OB.UTIL.showConfirmation.display(
-                  OB.I18N.getLabel('OBMOBC_Error'),
-                  OB.I18N.getLabel('OBPOS_ReceiptNotSynced', [
-                    data[0].documentNo
-                  ])
+
+    const loadOrders = async function(iter) {
+      return new Promise((resolve, reject) => {
+        var idx = me.owner.owner.model
+          .get('orderList')
+          .map(function(order) {
+            return order.id;
+          })
+          .indexOf(iter.id);
+        if (idx !== -1) {
+          var order = me.owner.owner.model.get('orderList').at(idx);
+          order.set('checked', true);
+          order.save();
+          selectedMultiOrders.push(order);
+          resolve();
+        } else {
+          process.exec(
+            {
+              orderid: iter.id,
+              crossStore: OB.UTIL.isCrossStoreReceipt(iter)
+                ? iter.get('organization')
+                : null
+            },
+            function(data) {
+              if (data && data.exception) {
+                reject();
+              } else if (data) {
+                if (data[0].recordInImportEntry) {
+                  reject();
+                }
+                me.owner.owner.model.get('orderList').newPaidReceipt(
+                  data[0],
+                  function(order) {
+                    if (
+                      (order.get('isPaid') || order.get('isLayaway')) &&
+                      order.getPayment() >= order.getGross()
+                    ) {
+                      OB.Dal.remove(order);
+                      alreadyPaidOrders.push(order);
+                      alreadyPaidOrdersDocNo = alreadyPaidOrdersDocNo.concat(
+                        ' ' + order.get('documentNo')
+                      );
+                      resolve();
+                    } else {
+                      order.set('loadedFromServer', true);
+                      me.owner.owner.model
+                        .get('orderList')
+                        .addMultiReceipt(order);
+                      order.set('checked', iter.get('checked'));
+                      OB.DATA.OrderTaxes(order);
+                      order.set('belongsToMultiOrder', true);
+                      order.calculateReceipt(function() {
+                        selectedMultiOrders.push(order);
+                        resolve(order);
+                      });
+                    }
+                  },
+                  function() {
+                    reject();
+                  }
                 );
-                return;
+              } else {
+                reject();
               }
-              me.owner.owner.model.get('orderList').newPaidReceipt(
-                data[0],
-                function(order) {
-                  if (
-                    (order.get('isPaid') || order.get('isLayaway')) &&
-                    order.getPayment() >= order.getGross()
-                  ) {
-                    OB.Dal.remove(order);
-                    alreadyPaidOrders.push(order);
-                    alreadyPaidOrdersDocNo = alreadyPaidOrdersDocNo.concat(
-                      ' ' + order.get('documentNo')
-                    );
-                    addOrdersToOrderList();
-                  } else {
-                    order.set('loadedFromServer', true);
-                    me.owner.owner.model
-                      .get('orderList')
-                      .addMultiReceipt(order);
-                    order.set('checked', iter.get('checked'));
-                    OB.DATA.OrderTaxes(order);
-                    order.set('belongsToMultiOrder', true);
-                    order.calculateReceipt(function() {
-                      selectedMultiOrders.push(order);
-                      addOrdersToOrderList();
-                    });
-                  }
-                },
-                function() {
-                  OB.UTIL.ProcessController.finish(
-                    'payOpenTicketsValidation',
-                    execution
-                  );
-                  OB.UTIL.showLoading(false);
-                }
-              );
-            } else {
-              OB.UTIL.ProcessController.finish(
-                'payOpenTicketsValidation',
-                execution
-              );
+            },
+            function(data) {
+              reject();
             }
-          },
-          function(data) {
-            OB.UTIL.ProcessController.finish(
-              'payOpenTicketsValidation',
-              execution
-            );
-          }
-        );
+          );
+        }
+      });
+    };
+    let error = [];
+    for (let i = 0; i < checkedMultiOrders.length; i++) {
+      const order = checkedMultiOrders[i];
+      try {
+        const result = await loadOrders(order);
+
+        if (result) {
+          loadedOrderThatWereNotLoaded.push(iter);
+        }
+      } catch (e) {
+        error.push(iter.get('documentNo'));
       }
-    });
+    }
+
+    if (error.length > 0) {
+      OB.UTIL.showConfirmation.display(
+        OB.I18N.getLabel('OBMOBC_Error'),
+        OB.I18N.getLabel('OBPOS_ReceiptNotLoaded', [error.join(', ')])
+      );
+    }
+
+    if (error.length < checkedMultiOrders.length) {
+      addOrdersToOrderList();
+    }
+
+    OB.UTIL.ProcessController.finish('payOpenTicketsValidation', execution);
+    OB.UTIL.showLoading(false);
   },
   cancelAction: function() {
     this.doHideThisPopup();
