diff --git a/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionDialogFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionDialogFragment.kt
index e841124b06de3b41473bf6933205df3f8decf3a5..d5d5b4133a4a6245c29b33f73990d23d133b28ff 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionDialogFragment.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionDialogFragment.kt
@@ -1,13 +1,23 @@
 package org.futo.circles.auth.feature.manage_subscription
 
+import android.content.ActivityNotFoundException
+import android.content.Intent
+import android.net.Uri
 import android.os.Bundle
+import android.text.format.DateFormat
 import android.view.View
-import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import dagger.hilt.android.AndroidEntryPoint
+import org.futo.circles.auth.R
 import org.futo.circles.auth.databinding.DialogFragmentManageSubscriptionBinding
+import org.futo.circles.auth.model.ActiveSubscriptionInfo
 import org.futo.circles.auth.subscriptions.SubscriptionProvider
 import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment
+import org.futo.circles.core.extensions.gone
+import org.futo.circles.core.extensions.observeResponse
+import org.futo.circles.core.extensions.showError
+import org.futo.circles.core.extensions.visible
+import java.util.Date
 import javax.inject.Inject
 
 @AndroidEntryPoint
@@ -33,7 +43,6 @@ class ManageSubscriptionDialogFragment :
         viewModel.getSubscriptionInfo(subscriptionManager)
     }
 
-
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
         setupViews()
@@ -45,6 +54,51 @@ class ManageSubscriptionDialogFragment :
     }
 
     private fun setupObservers() {
+        viewModel.subscriptionInfoLiveData.observeResponse(
+            this,
+            onRequestInvoked = { binding.vLoading.gone() },
+            success = {
+                binding.lSubscriptionInfo.visible()
+                bindSubscriptionInfo(it)
+            },
+            error = {
+                binding.tvEmptyMessage.visible()
+            })
+    }
+
+    private fun bindSubscriptionInfo(subscriptionInfo: ActiveSubscriptionInfo) {
+        with(binding) {
+            tvName.text = subscriptionInfo.name
+            tvDescription.text = subscriptionInfo.description
+            tvPrice.text = getString(R.string.price_format, subscriptionInfo.price)
+            tvDuration.text = getString(R.string.duration_format, subscriptionInfo.duration)
+            tvProductId.text = getString(R.string.product_id_format, subscriptionInfo.productId)
+            val purchaseDate =
+                DateFormat.format("MMM dd yyyy, h:mm a", Date(subscriptionInfo.purchaseTime))
+            tvPurchasedAt.text = getString(R.string.purchase_time_format, purchaseDate)
+            tvAutoRenewMessage.text = getString(
+                if (subscriptionInfo.isAutoRenewing) R.string.is_auto_renew_message
+                else R.string.is_not_auto_renew_message
+            )
+            btnManageGp.setOnClickListener {
+                openPlayStoreSubscriptionInfo(
+                    subscriptionInfo.productId,
+                    subscriptionInfo.packageName
+                )
+            }
+        }
+    }
 
+    private fun openPlayStoreSubscriptionInfo(sku: String, packageName: String) {
+        try {
+            startActivity(
+                Intent(
+                    Intent.ACTION_VIEW,
+                    Uri.parse("https://play.google.com/store/account/subscriptions?sku=$sku&package=$packageName")
+                )
+            )
+        } catch (e: ActivityNotFoundException) {
+            showError(getString(R.string.can_not_open_google_play))
+        }
     }
 }
\ No newline at end of file
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionViewModel.kt
index 67b4e086d429e769e9c6cf209d78bbd3365a7e0a..715e3b4b394d3d90e62029c4990ff325f6872717 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionViewModel.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/manage_subscription/ManageSubscriptionViewModel.kt
@@ -36,6 +36,7 @@ class ManageSubscriptionViewModel @Inject constructor(
             subscriptionInfoLiveData.postValue(
                 Response.Success(
                     ActiveSubscriptionInfo(
+                        packageName = activeReceipt.packageName,
                         productId = activeReceipt.productId,
                         purchaseTime = activeReceipt.purchaseTime,
                         isAutoRenewing = activeReceipt.isAutoRenewing,
diff --git a/auth/src/main/java/org/futo/circles/auth/model/ActiveSubscriptionInfo.kt b/auth/src/main/java/org/futo/circles/auth/model/ActiveSubscriptionInfo.kt
index 9de531451a1ce8ed43a90ad93afb5aa1cde81d2c..88ddce7fc11314869bc6272fa6ca5105a8e7b957 100644
--- a/auth/src/main/java/org/futo/circles/auth/model/ActiveSubscriptionInfo.kt
+++ b/auth/src/main/java/org/futo/circles/auth/model/ActiveSubscriptionInfo.kt
@@ -1,6 +1,7 @@
 package org.futo.circles.auth.model
 
 data class ActiveSubscriptionInfo(
+    val packageName: String,
     val productId: String,
     val purchaseTime: Long,
     val isAutoRenewing: Boolean,