diff --git a/src/app/controllers/subscription/post_subscription.php b/src/app/controllers/subscription/post_subscription.php
new file mode 100644
index 0000000000000000000000000000000000000000..77c33217d3bfec064cfbd0542140ad38f1a1f8a3
--- /dev/null
+++ b/src/app/controllers/subscription/post_subscription.php
@@ -0,0 +1,46 @@
+<?php
+
+class PostSubscribeController
+{
+  public function call() {
+    $xml = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://services.soapserver/">
+              <soap:Header>
+                <tns:apiKey>ularmelingkardiataspagar</tns:apiKey>
+              </soap:Header>
+              <soap:Body>
+                <tns:addSubscription>
+                  <idUser>8</idUser>
+                </tns:addSubscription>
+              </soap:Body>
+            </soap:Envelope>';
+
+    $ch = curl_init();
+    curl_setopt($ch, CURLOPT_URL, "http://tubes-soap-service:8000/subscription");
+    curl_setopt($ch, CURLOPT_HTTPHEADER, [
+      "Content-type: text/xml;charset=\"utf-8\"",
+      "Accept: text/xml",
+      "Cache-Control: no-cache",
+      "Pragma: no-cache",
+      "SOAPAction: http://soapserver/SubscriptionService/addSubscriptionRequest", 
+      "Content-length: ".strlen($xml)
+    ]);
+    curl_setopt(
+      $ch,
+      CURLOPT_POSTFIELDS,
+      $xml
+    );
+    curl_setopt($ch, CURLOPT_POST, true);
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+
+    $output = curl_exec($ch);
+    curl_close($ch);
+
+    http_response_code(201);
+    header('Content-type: application/json');
+    echo json_encode(["message" => "success"]);
+
+    exit;
+  }
+}
\ No newline at end of file
diff --git a/src/app/core/app.php b/src/app/core/app.php
index 7fab00d87680c83883fee2813d7319a1ab4f7dde..bb172a5314764cdbf133f05eb153439dc14fe93a 100644
--- a/src/app/core/app.php
+++ b/src/app/core/app.php
@@ -61,6 +61,7 @@ class App
     $router->post("public/dashboard/edit-episode", new PostEditEpisodeController());
     $router->post("public/dashboard/add-podcast", new PostAddPodcastController());
     $router->post("public/dashboard/edit-podcast", new PostEditPodcastController());
+    $router->post("public/subscribe", new PostSubscribeController());
 
     // DELETE routes
     $router->delete("public/dashboard/episode", new DeleteEpisodeController());
diff --git a/src/app/init.php b/src/app/init.php
index 17801beebbf8e1da6040766b97a25a8141814fa2..95ef59fc01b0cb2f5fea9d08a7eca1cada3d4b2e 100644
--- a/src/app/init.php
+++ b/src/app/init.php
@@ -44,6 +44,7 @@ require_once __DIR__ . "/controllers/signup/post_signup.php";
 require_once __DIR__ . "/controllers/search/get_search.php";
 require_once __DIR__ . "/controllers/profile/get_profile.php";
 require_once __DIR__ . "/controllers/profile/update_profile.php";
+require_once __DIR__ . "/controllers/subscription/post_subscription.php";
 
 require_once __DIR__ . "/controllers/player/mount_player.php";
 require_once __DIR__ . "/controllers/player/get_episode_played.php";