diff --git a/src/helper/xvb/algorithm.rs b/src/helper/xvb/algorithm.rs
index 018bff5..ef756af 100644
--- a/src/helper/xvb/algorithm.rs
+++ b/src/helper/xvb/algorithm.rs
@@ -224,10 +224,14 @@ impl<'a> Algorithm<'a> {
             info!("Algorithm | running in hero mode, no fast 24h average");
             return true;
         }
-        let is_criteria_fulfilled = self.stats.xvb_24h_avg > self.stats.target_donation_hashrate;
+        // add external to target to have the real total target
+        let is_criteria_fulfilled = self.stats.xvb_24h_avg
+            > self.stats.target_donation_hashrate + self.stats.xvb_external_hashrate;
         info!(
             "Algorithm | xvb_24h_avg({}) > target_donation_hashrate({}) : {}",
-            self.stats.xvb_24h_avg, self.stats.target_donation_hashrate, is_criteria_fulfilled
+            self.stats.xvb_24h_avg,
+            self.stats.target_donation_hashrate + self.stats.xvb_external_hashrate,
+            is_criteria_fulfilled
         );
         is_criteria_fulfilled
     }
@@ -588,6 +592,30 @@ impl<'a> Algorithm<'a> {
         info!("Algorithm | Starting...");
         info!("Algorithm | {:#?}", self.stats);
 
+        // inform user about external HR detected to explain better the decision.
+        let external_xvb_hr = self.stats.xvb_external_hashrate;
+        if external_xvb_hr > 0.0 {
+            output_console(
+                &mut self.gui_api_xvb.lock().unwrap().output,
+                &format!(
+                    "estimated external HR on XvB: {}kH/s",
+                    external_xvb_hr / 1000.0
+                ),
+                crate::helper::ProcessName::Xvb,
+            );
+        }
+        let external_p2pool_hr = self.stats.p2pool_external_hashrate;
+        if external_p2pool_hr > 0.0 {
+            output_console(
+                &mut self.gui_api_xvb.lock().unwrap().output,
+                &format!(
+                    "estimated external HR on P2pool: {}kH/s",
+                    external_p2pool_hr / 1000.0
+                ),
+                crate::helper::ProcessName::Xvb,
+            );
+        }
+
         if !self.is_share_fulfilled() {
             self.fulfill_share().await
         } else if !self.is_xvb_24h_fulfilled() {