diff --git a/ATxService/AutoTx.cs b/ATxService/AutoTx.cs
index 2f91cb7e2b71052988f4187abf2ee02e0ad46878..58bd70b671af94b9a17a192104a017536b626cbf 100644
--- a/ATxService/AutoTx.cs
+++ b/ATxService/AutoTx.cs
@@ -30,6 +30,12 @@ namespace ATxService
         // private const string LogFormatDefault = @"${date:format=yyyy-MM-dd HH\:mm\:ss} [${level}] (${logger}) ${message}"
 
         private readonly List<string> _transferredFiles = new List<string>();
+        
+        /// <summary>
+        /// A list of (full) paths to be ignored in the incoming location, that will be populated
+        /// during runtime only, i.e. will not persist over a service restart (intentionally!).
+        /// </summary>
+        private readonly List<string> _incomingIgnore = new List<string>();
 
         private RoboCommand _roboCommand;
         private long _txCurFileSize;
@@ -643,8 +649,18 @@ namespace ATxService
                 if (FsUtils.DirEmptyExcept(userDir, _config.MarkerFile))
                     continue;
 
+                if (_incomingIgnore.Contains(userDir.FullName)) {
+                    Log.Trace("Ignoring directory in incoming location: [{0}]", userDir.FullName);
+                    continue;
+                }
+
                 Log.Info("Found new files in [{0}]", userDir.FullName);
-                MoveToManagedLocation(userDir);
+                if (MoveToManagedLocation(userDir))
+                    continue;
+
+                // if moving to the processing location failed, add it to the ignore list:
+                Log.Error("=== Ignoring [{0}] for this service session ===", userDir.FullName);
+                _incomingIgnore.Add(userDir.FullName);
             }
         }