diff --git a/web/org.openbravo.mobile.core/app/model/masterdata/MasterdataController.js b/web/org.openbravo.mobile.core/app/model/masterdata/MasterdataController.js
index f9c690d8..7b8c7691 100644
--- a/web/org.openbravo.mobile.core/app/model/masterdata/MasterdataController.js
+++ b/web/org.openbravo.mobile.core/app/model/masterdata/MasterdataController.js
@@ -124,8 +124,18 @@
      * Populates all objectStores of the master data database with the corresponding items for each one
      */
     async refreshMasterdata(requestData, insertionCallback, statusCallback) {
+      const me = this;
       const models = this.getMasterdataModelNamesExceptRemotes();
+      let hasFailedRequest = false;
+      function errorCallback(model, error) {
+        me.models[model].setFailedToLoad(true);
+        OB.error(`Error retrieving data for model ${model}: ${error}`);
+        hasFailedRequest = true;
+      }
       for (let i = 0; i < models.length; i += 1) {
+        if (hasFailedRequest) {
+          break;
+        }
         const limit = OB.MobileApp.model.hasPermission(
           'OBMOBC_MasterdataBatchSize',
           true
@@ -191,6 +201,10 @@
               data
             );
 
+            if (rp.response.exception || !rp.response.data) {
+              errorCallback(model, rp.response.exception || 'No Data');
+              break;
+            }
             await insertionCallback(
               model,
               rp.response,
@@ -214,10 +228,9 @@
               );
             }
             page += 1;
-          } while (dataLoaded >= limit);
+          } while (!hasFailedRequest && dataLoaded >= limit);
         } catch (error) {
-          this.models[model].setFailedToLoad(true);
-          OB.error(`Error retrieving data for model ${model}: ${error}`);
+          errorCallback(model, error);
         }
       }
     }
