diff --git a/scripts/cancel_pipelines.py b/scripts/cancel_pipelines.py
index 497484a7d41fccb3121a5fd021696aa2b3994ff2..b2a43276050c68590e8d5aad3bbc7fc8724bfc10 100755
--- a/scripts/cancel_pipelines.py
+++ b/scripts/cancel_pipelines.py
@@ -24,6 +24,10 @@ def cancel_pipeline_including_children(
 
     cancelled_pipelines = []
 
+    if pipeline.status not in ["success", "failed", "canceled"]:
+        cancelled_pipelines.append(pipeline)
+        pipeline.cancel()
+
     # Browse through all downstream pipelines
     for bridge in pipeline.bridges.list(as_list=False):
 
@@ -41,10 +45,6 @@ def cancel_pipeline_including_children(
         cancelled_pipelines += cancel_pipeline_including_children(
             project, downstream_pipeline
         )
-        if downstream_pipeline.status not in ["success", "failed", "canceled"]:
-            cancelled_pipelines.append(downstream_pipeline)
-
-    pipeline.cancel()
 
     return cancelled_pipelines
 
@@ -73,8 +73,6 @@ def cancel_pipelines(
     for pipeline in pipelines:
         if pipeline.id < below_pipeline_id:
             cancelled_pipelines += cancel_pipeline_including_children(project, pipeline)
-            if pipeline.status not in ["success", "failed", "canceled"]:
-                cancelled_pipelines.append(pipeline)
 
     return cancelled_pipelines