diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt
index e115434d27db79b372d7e000d3205469165b5535..b0da6cb95836f02976e75e41ff34f3faf7123ffb 100644
--- a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt
@@ -1,9 +1,13 @@
 package org.futo.circles.feature.sign_up.subscription_stage
 
+import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import org.futo.circles.core.SingleEventLiveData
 import org.futo.circles.extensions.Response
 import org.futo.circles.extensions.launchBg
+import org.futo.circles.extensions.launchUi
+import org.futo.circles.model.SubscriptionListItem
+import org.futo.circles.subscriptions.SubscriptionManager
 import org.matrix.android.sdk.api.auth.registration.RegistrationResult
 
 class SubscriptionStageViewModel(
@@ -11,6 +15,8 @@ class SubscriptionStageViewModel(
 ) : ViewModel() {
 
     val subscribeLiveData = SingleEventLiveData<Response<RegistrationResult>>()
+    val purchaseLiveData = SingleEventLiveData<Response<Unit>>()
+    val subscriptionsListLiveData = MutableLiveData<Response<List<SubscriptionListItem>>>()
 
     fun validateSubscriptionReceipt(receipt: String) {
         launchBg {
@@ -18,4 +24,16 @@ class SubscriptionStageViewModel(
         }
     }
 
+    fun loadSubscriptionsList(subscriptionManager: SubscriptionManager) {
+        launchBg {
+            subscriptionsListLiveData.postValue(subscriptionManager.getDetails(dataSource.getProductIdsList()))
+        }
+    }
+
+    fun purchaseProduct(subscriptionManager: SubscriptionManager, productId: String) {
+        launchUi {
+            purchaseLiveData.postValue(subscriptionManager.purchaseProduct(productId))
+        }
+    }
+
 }
\ No newline at end of file