diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
index 83594f13ce7df8fbc9ceb29181e61f59e38b032d..f27efd179b5bef763882fe3eece03f01e20a1509 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
@@ -107,7 +107,6 @@ public class Controller extends BaseController
 	private Payment selectedPayment;
 	private SearchPreferences searchPreferences;
 	private CommandLine cmd;
-	private Process localServerProcess;
 
 	private boolean alertIsShowing = false;
 	private static DateTimeFormatter DATE_FORMAT;
@@ -132,27 +131,26 @@ public class Controller extends BaseController
 		stage.setMinHeight(650);
 		stage.getScene().getStylesheets().add("/de/deadlocker8/budgetmaster/ui/style.css");
 	}
-
+	
 	@Override
 	public void init()
 	{		
 		getStage().setOnCloseRequest((event)->{
-			if(localServerProcess != null) 
-			{
-				Logger.debug("Stopping local BudgetMasterServer...");
-				localServerProcess.destroy();
-			}
 			Worker.shutdown();
-			System.exit(0);
 		});
 		
 		Runtime.getRuntime().addShutdownHook(new Thread(() -> {
-			Logger.debug("Received shutdown hook");
-			if(localServerProcess != null) 
+			Logger.debug("Stopping local BudgetMasterServer...");
+			try
 			{
-				Logger.debug("Stopping local BudgetMasterServer...");
-				localServerProcess.destroy();
+				ServerConnection connection = new ServerConnection(settings);
+				connection.shutdownServer();
 			}
+			catch(Exception e)
+			{
+				Logger.error(e);
+			}
+			System.exit(0);
 		}));
 		
 		if(settings.getServerType() == null)
@@ -330,11 +328,6 @@ public class Controller extends BaseController
 	{
 		this.settings = settings;
 	}
-	
-	public void setLocalServerProcess(Process process)
-	{
-		this.localServerProcess = process;
-	}
 
 	public void showNotification(String text)
 	{
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java
index 4221919161fbfeb1fc69addd698f755a0c266018..0429ffb17eb32eb8e2ca2fc32ad34843164c2e2f 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java
@@ -151,9 +151,10 @@ public class LocalServerSettingsController extends SettingsController
 				{
 					Logger.debug("Starting local Server...");
 					serverHandler.createServerSettingsIfNotExists();
-					controller.setLocalServerProcess(serverHandler.startServer());
+					serverHandler.startServer();
 					try
 					{
+						//DEBUG magic number
 						Thread.sleep(2000);
 					}
 					catch(InterruptedException e)
diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
index cd04ca5d70863a407fd6ca139a189ea4eb86570d..8db77ff05b51e2eb8bc5809cb8ba1d2967b160b5 100644
--- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
+++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java
@@ -614,6 +614,24 @@ public class ServerConnection
 		else
 		{
 			throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode()));
-		}		
+		}
+	}
+	
+	public void shutdownServer() throws Exception
+	{
+		URL url = new URL(settings.getUrl() + "/shutdown?secret=" + Helpers.getURLEncodedString(settings.getSecret()));
+		HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection();
+		httpsCon.setRequestMethod("DELETE");
+		httpsCon.setDoInput(true);
+		if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK)
+		{
+			InputStream stream = httpsCon.getInputStream();
+			BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+			reader.close();
+		}
+		else
+		{
+			throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode()));
+		}
 	}
 }
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java
index b60309e10941d62ec55faf8fc3e8fa88d10a0dd9..d1b65757c09ad2ec48fa5a299a4abf731af4886a 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java
@@ -49,6 +49,7 @@ import de.deadlocker8.budgetmasterserver.server.payment.repeating.RepeatingPayme
 import de.deadlocker8.budgetmasterserver.server.payment.search.PaymentMaxAmount;
 import de.deadlocker8.budgetmasterserver.server.payment.search.PaymentSearch;
 import de.deadlocker8.budgetmasterserver.server.rest.RestGet;
+import de.deadlocker8.budgetmasterserver.server.shutdown.Shutdown;
 import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchAddForPayment;
 import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchAddForRepeatingPayment;
 import de.deadlocker8.budgetmasterserver.server.tag.match.TagMatchDeleteForPayment;
@@ -198,6 +199,7 @@ public class SparkServer
 			get("/info", new InformationGet(gson, versionInfo, settings));
 			get("/version", new VersionGet(gson, versionInfo));
 			delete("/log", new LogDelete());
+			delete("/shutdown", new Shutdown());
 		}
 		catch(ClassNotFoundException e)
 		{
diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/shutdown/Shutdown.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/shutdown/Shutdown.java
new file mode 100644
index 0000000000000000000000000000000000000000..95a6653d2bb299d72933557c88ce962a3730d542
--- /dev/null
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/shutdown/Shutdown.java
@@ -0,0 +1,46 @@
+package de.deadlocker8.budgetmasterserver.server.shutdown;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute;
+import logger.Logger;
+import spark.Request;
+import spark.Response;
+
+public class Shutdown implements AdvancedRoute
+{	
+	public Shutdown()
+	{
+		
+	}
+
+	@Override
+	public void before()
+	{
+	}
+
+	@Override
+	public Object handleRequest(Request req, Response res)
+	{
+		Logger.info("Shutting down server due to client request");
+		TimerTask task = new TimerTask() 
+		{
+			@Override
+			public void run()
+			{
+				Logger.info("Shutdown DONE");
+				System.exit(0);		
+			}
+		};
+		
+		Timer timer = new Timer();
+		timer.schedule(task, 2000);
+		return "";
+	}
+
+	@Override
+	public void after()
+	{
+	}
+}
\ No newline at end of file