diff --git a/app/build.gradle b/app/build.gradle
index 4f5eabd931e9ccae3da71436b1a6876c8b647821..46a7d49ecb7faa961f71967f7e443e19e7815b3b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -67,6 +67,9 @@ dependencies {
     gplayImplementation 'com.google.firebase:firebase-analytics-ktx'
     gplayImplementation 'com.google.firebase:firebase-messaging-ktx'
 
+    //Subscriptions
+    gplayImplementation 'com.android.billingclient:billing-ktx:6.0.0'
+
     // UnifiedPush
     implementation 'com.github.UnifiedPush:android-connector:2.1.1'
 
diff --git a/app/src/fdroid/java/org/futo/circles/di/FlavorModule.kt b/app/src/fdroid/java/org/futo/circles/di/FlavorModule.kt
index df52ee758f7b59c7617852647cdcb8816f9755d8..057a6e24f8fe4831cc2b3492dd341a815718de17 100644
--- a/app/src/fdroid/java/org/futo/circles/di/FlavorModule.kt
+++ b/app/src/fdroid/java/org/futo/circles/di/FlavorModule.kt
@@ -1,11 +1,17 @@
 package org.futo.circles.di
 
 import android.content.Context
+import androidx.fragment.app.Fragment
 import dagger.Binds
 import dagger.Module
 import dagger.Provides
 import dagger.hilt.InstallIn
+import dagger.hilt.android.qualifiers.ApplicationContext
 import dagger.hilt.components.SingletonComponent
+import org.futo.circles.R
+import org.futo.circles.auth.subscriptions.ItemPurchasedListener
+import org.futo.circles.auth.subscriptions.SubscriptionManager
+import org.futo.circles.auth.subscriptions.SubscriptionProvider
 import org.futo.circles.core.provider.PreferencesProvider
 import org.futo.circles.feature.notifications.FcmHelper
 import org.futo.circles.feature.notifications.GuardServiceStarter
@@ -22,9 +28,19 @@ abstract class FlavorModule {
         @Provides
         fun provideGuardServiceStarter(
             preferences: PreferencesProvider,
-            appContext: Context
+            @ApplicationContext appContext: Context
         ): GuardServiceStarter = FdroidGuardServiceStarter(appContext, preferences)
 
+        @Provides
+        fun provideSubscriptionProvider(): SubscriptionProvider {
+            return object : SubscriptionProvider {
+                override fun getManager(
+                    fragment: Fragment,
+                    itemPurchaseListener: ItemPurchasedListener?
+                ): SubscriptionManager =
+                    throw IllegalStateException(fragment.getString(R.string.flavour_does_not_support_subscriptions))
+            }
+        }
     }
 
     @Binds
diff --git a/app/src/gplay/java/org/futo/circles/di/FlavorModule.kt b/app/src/gplay/java/org/futo/circles/di/FlavorModule.kt
index 7c584eb5c60f607493dc0d799b99fedd416e47e6..aebf40b62d4b7644b8e783b9a7807cb6e85106db 100644
--- a/app/src/gplay/java/org/futo/circles/di/FlavorModule.kt
+++ b/app/src/gplay/java/org/futo/circles/di/FlavorModule.kt
@@ -1,16 +1,20 @@
 package org.futo.circles.di
 
+import androidx.fragment.app.Fragment
 import dagger.Binds
 import dagger.Module
 import dagger.Provides
 import dagger.hilt.InstallIn
 import dagger.hilt.components.SingletonComponent
+import org.futo.circles.auth.subscriptions.ItemPurchasedListener
+import org.futo.circles.auth.subscriptions.SubscriptionManager
+import org.futo.circles.auth.subscriptions.SubscriptionProvider
 import org.futo.circles.feature.notifications.FcmHelper
 import org.futo.circles.feature.notifications.GuardServiceStarter
 import org.futo.circles.feature.notifications.test.task.NotificationTestsProvider
 import org.futo.circles.notifications.GoogleFcmHelper
 import org.futo.circles.notifications.test.GoogleNotificationTestProvider
-import javax.inject.Singleton
+import org.futo.circles.subscriptions.google.GoogleSubscriptionsManager
 
 @Module
 @InstallIn(SingletonComponent::class)
@@ -21,6 +25,16 @@ abstract class FlavorModule {
         fun provideGuardServiceStarter(): GuardServiceStarter {
             return object : GuardServiceStarter {}
         }
+
+        @Provides
+        fun provideSubscriptionProvider(): SubscriptionProvider {
+            return object : SubscriptionProvider {
+                override fun getManager(
+                    fragment: Fragment,
+                    itemPurchaseListener: ItemPurchasedListener?
+                ): SubscriptionManager = GoogleSubscriptionsManager(fragment, itemPurchaseListener)
+            }
+        }
     }
 
     @Binds
diff --git a/auth/src/gplay/java/org/futo/circles/auth/subscriptions/google/GoogleSubscriptionsManager.kt b/app/src/gplay/java/org/futo/circles/subscriptions/google/GoogleSubscriptionsManager.kt
similarity index 99%
rename from auth/src/gplay/java/org/futo/circles/auth/subscriptions/google/GoogleSubscriptionsManager.kt
rename to app/src/gplay/java/org/futo/circles/subscriptions/google/GoogleSubscriptionsManager.kt
index 7494f7f5724049da9d22ad4191790e4239de3333..b5031d137a3247d98e5367ec454a68f2e11e383f 100644
--- a/auth/src/gplay/java/org/futo/circles/auth/subscriptions/google/GoogleSubscriptionsManager.kt
+++ b/app/src/gplay/java/org/futo/circles/subscriptions/google/GoogleSubscriptionsManager.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.auth.subscriptions.google
+package org.futo.circles.subscriptions.google
 
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.DefaultLifecycleObserver
@@ -6,7 +6,7 @@ import androidx.lifecycle.LifecycleOwner
 import com.android.billingclient.api.*
 import com.android.billingclient.api.BillingClient.BillingResponseCode.*
 import kotlinx.coroutines.suspendCancellableCoroutine
-import org.futo.circles.auth.R
+import org.futo.circles.R
 import org.futo.circles.auth.model.SubscriptionListItem
 import org.futo.circles.auth.model.SubscriptionReceiptData
 import org.futo.circles.auth.subscriptions.ItemPurchasedListener
diff --git a/auth/src/gplay/java/org/futo/circles/auth/subscriptions/google/ProductDetailsMapping.kt b/app/src/gplay/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt
similarity index 95%
rename from auth/src/gplay/java/org/futo/circles/auth/subscriptions/google/ProductDetailsMapping.kt
rename to app/src/gplay/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt
index 75aa8e3c8927fdfe825d04aec56b8ce4ac1508b2..77f49a7057994dc9d7dbe7a3005d322d4d2ae947 100644
--- a/auth/src/gplay/java/org/futo/circles/auth/subscriptions/google/ProductDetailsMapping.kt
+++ b/app/src/gplay/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt
@@ -1,4 +1,4 @@
-package org.futo.circles.auth.subscriptions.google
+package org.futo.circles.subscriptions.google
 
 import android.content.Context
 import com.android.billingclient.api.ProductDetails
diff --git a/auth/src/gplay/res/values/strings.xml b/app/src/gplay/res/values/strings.xml
similarity index 84%
rename from auth/src/gplay/res/values/strings.xml
rename to app/src/gplay/res/values/strings.xml
index de369a42a343532d9df8ef2b37decc2edc2469eb..a722a40f2e48c1382b757a0b6ab5b619bb4d7f79 100644
--- a/auth/src/gplay/res/values/strings.xml
+++ b/app/src/gplay/res/values/strings.xml
@@ -6,4 +6,5 @@
     <string name="user_canceled">User canceled</string>
     <string name="item_not_owned">Item is not owned</string>
     <string name="developer_error">Developer error</string>
+    <string name="purchase_failed_format">Purchase failed with code %d</string>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 26db88f3183e0f42d4bdbdf7dc97e93f6c3bca16..771da29345efe07f8a8a3ea1b4dbc03d45fab35d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -164,12 +164,6 @@
     <string name="confirm">Confirm</string>
     <string name="reset_keys">Reset keys</string>
     <string name="reset_keys_message">Confirm auth to reset keys and enable cross signing</string>
-    <string name="feature_not_supported">Feature is not supported</string>
-    <string name="service_unavailable">Service unavailable</string>
-    <string name="item_unavailable">Item is unavailable</string>
-    <string name="user_canceled">User canceled</string>
-    <string name="item_not_owned">Item is not owned</string>
-    <string name="developer_error">Developer error</string>
     <string name="upload_to_gallery">Upload to gallery</string>
     <string name="share_with_group">Share with a group</string>
     <string name="share_with_circle">Share with a circle</string>
diff --git a/auth/build.gradle b/auth/build.gradle
index 8c03432bba70b3163a11616af1c8d0b2c2edc1d8..bd42a29d92ae3cea1e3d37331c532d56820fcbd5 100644
--- a/auth/build.gradle
+++ b/auth/build.gradle
@@ -40,17 +40,6 @@ android {
         }
     }
 
-    def flavor_dimension_name = "store"
-    flavorDimensions flavor_dimension_name
-    productFlavors {
-        gplay {
-            dimension flavor_dimension_name
-        }
-        fdroid {
-            dimension flavor_dimension_name
-        }
-    }
-
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_17
         targetCompatibility JavaVersion.VERSION_17
@@ -75,9 +64,6 @@ dependencies {
     //Password strength
     implementation 'com.nulab-inc:zxcvbn:1.7.0'
 
-    //Subscriptions
-    gplayImplementation 'com.android.billingclient:billing-ktx:6.0.0'
-
     //Hilt
     def hilt = '2.46.1'
     implementation "com.google.dagger:hilt-android:$hilt"
diff --git a/auth/src/fdroid/java/org/futo/circles/auth/subscriptions/SubscriptionManagerProvider.kt b/auth/src/fdroid/java/org/futo/circles/auth/subscriptions/SubscriptionManagerProvider.kt
deleted file mode 100644
index e38c0ef55911dc85e0e5495a416165bd636bdb0b..0000000000000000000000000000000000000000
--- a/auth/src/fdroid/java/org/futo/circles/auth/subscriptions/SubscriptionManagerProvider.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.futo.circles.auth.subscriptions
-
-import androidx.fragment.app.Fragment
-import org.futo.circles.auth.R
-
-object SubscriptionManagerProvider : SubscriptionProvider {
-
-    override fun getManager(
-        fragment: Fragment,
-        itemPurchaseListener: ItemPurchasedListener?
-    ): SubscriptionManager =
-        throw IllegalStateException(fragment.getString(R.string.flavour_does_not_support_subscriptions))
-}
\ No newline at end of file
diff --git a/auth/src/fdroid/res/values/strings.xml b/auth/src/fdroid/res/values/strings.xml
deleted file mode 100644
index b62816a2a3f9732b51c24e5bf120621c3e09fbad..0000000000000000000000000000000000000000
--- a/auth/src/fdroid/res/values/strings.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<resources>
-
-    <string name="flavour_does_not_support_subscriptions">This flavour does not support subscriptions</string>
-    <string name="settings_troubleshoot_test_battery_title">Battery Optimization</string>
-    <string name="settings_troubleshoot_test_battery_success">Circles is not affected by Battery Optimization.</string>
-    <string name="settings_troubleshoot_test_battery_failed">If a user leaves a device unplugged and stationary for a period of time, with the screen off, the device enters Doze mode. This prevents apps from accessing the network and defers their jobs, syncs, and standard alarms. </string>
-    <string name="settings_troubleshoot_test_bg_restricted_title">Check background restrictions</string>
-    <string name="settings_troubleshoot_test_bg_restricted_success">Background restrictions are disabled for Circles. This test should be run using mobile data (no WIFI).\n%1$s</string>
-    <string name="settings_troubleshoot_test_bg_restricted_failed">Background restrictions are enabled for Circles.\nWork that the app tries to do will be aggressively restricted while it is in the background, and this could affect notifications.\n%1$s</string>
-
-</resources>
\ No newline at end of file
diff --git a/auth/src/gplay/java/org/futo/circles/auth/subscriptions/SubscriptionManagerProvider.kt b/auth/src/gplay/java/org/futo/circles/auth/subscriptions/SubscriptionManagerProvider.kt
deleted file mode 100644
index 64dab4842cb22b1bf66bf2acc638fd85f0613325..0000000000000000000000000000000000000000
--- a/auth/src/gplay/java/org/futo/circles/auth/subscriptions/SubscriptionManagerProvider.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.futo.circles.auth.subscriptions
-
-import androidx.fragment.app.Fragment
-import org.futo.circles.auth.subscriptions.google.GoogleSubscriptionsManager
-
-object SubscriptionManagerProvider : SubscriptionProvider {
-
-    override fun getManager(
-        fragment: Fragment,
-        itemPurchaseListener: ItemPurchasedListener?
-    ): SubscriptionManager = GoogleSubscriptionsManager(fragment, itemPurchaseListener)
-}
\ No newline at end of file
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt
index f1ddc44cafb420cb3735fe680c6c52a3b9b4baa2..dc9219fae5d6bf3a0ed9dc6d8fdd31129808e66a 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/sign_up_type/SelectSignUpTypeFragment.kt
@@ -9,12 +9,13 @@ import by.kirich1409.viewbindingdelegate.viewBinding
 import dagger.hilt.android.AndroidEntryPoint
 import org.futo.circles.auth.R
 import org.futo.circles.auth.databinding.FragmentSelectSignUpTypeBinding
-import org.futo.circles.auth.subscriptions.SubscriptionManagerProvider
+import org.futo.circles.auth.subscriptions.SubscriptionProvider
 import org.futo.circles.core.CirclesAppConfig
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.observeResponse
 import org.futo.circles.core.extensions.setIsVisible
 import org.futo.circles.core.fragment.HasLoadingState
+import javax.inject.Inject
 
 @AndroidEntryPoint
 class SelectSignUpTypeFragment : Fragment(R.layout.fragment_select_sign_up_type),
@@ -25,8 +26,11 @@ class SelectSignUpTypeFragment : Fragment(R.layout.fragment_select_sign_up_type)
     private val binding by viewBinding(FragmentSelectSignUpTypeBinding::bind)
     private val viewModel by viewModels<SelectSignUpTypeViewModel>()
 
+    @Inject
+    lateinit var subscriptionProvider: SubscriptionProvider
+
     private val subscriptionManager by lazy {
-        SubscriptionManagerProvider.getManager(this, null)
+        subscriptionProvider.getManager(this, null)
     }
 
     override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt
index 0d7323dcbaf412332a2c7b279b0f7a08df747944..c26a30a2d5cf58d97bf958c03906eea68b74fc2d 100644
--- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt
+++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageFragment.kt
@@ -10,10 +10,11 @@ import org.futo.circles.auth.databinding.FragmentSubscriptionStageBinding
 import org.futo.circles.auth.feature.sign_up.subscription_stage.list.SubscriptionsAdapter
 import org.futo.circles.auth.model.SubscriptionReceiptData
 import org.futo.circles.auth.subscriptions.ItemPurchasedListener
-import org.futo.circles.auth.subscriptions.SubscriptionManagerProvider
+import org.futo.circles.auth.subscriptions.SubscriptionProvider
 import org.futo.circles.core.extensions.observeResponse
 import org.futo.circles.core.extensions.showError
 import org.futo.circles.core.fragment.ParentBackPressOwnerFragment
+import javax.inject.Inject
 
 @AndroidEntryPoint
 class SubscriptionStageFragment :
@@ -22,8 +23,11 @@ class SubscriptionStageFragment :
     private val binding by viewBinding(FragmentSubscriptionStageBinding::bind)
     private val viewModel by viewModels<SubscriptionStageViewModel>()
 
+    @Inject
+    lateinit var subscriptionProvider: SubscriptionProvider
+
     private val subscriptionManager by lazy {
-        SubscriptionManagerProvider.getManager(
+        subscriptionProvider.getManager(
             this, object : ItemPurchasedListener {
                 override fun onItemPurchased(subscriptionReceiptData: SubscriptionReceiptData) {
                     viewModel.validateSubscription(subscriptionReceiptData)
diff --git a/auth/src/main/res/values/strings.xml b/auth/src/main/res/values/strings.xml
index 44004ebcf21a5946fc8847f44a2c24c4aa2730b0..163b488482599ddca6c4b1a25c1ab144d7e03a37 100644
--- a/auth/src/main/res/values/strings.xml
+++ b/auth/src/main/res/values/strings.xml
@@ -18,7 +18,6 @@
     <string name="choose_a_subscription">Choose a subscription</string>
     <string name="create_a_subscription">Create a subscription</string>
     <string name="sign_up">Sign Up</string>
-    <string name="purchase_failed_format">Purchase failed with code %d</string>
     <string name="not_supported_stage_format">Not supported stage %s</string>
     <string name="sign_up_stage_subtitle_format">Stage %1$d of %2$d</string>
     <string name="no_backup_message">Keys backup not found</string>
@@ -93,7 +92,7 @@
     <string name="remove_user_message">Are you sure you want to remove this user?</string>
     <string name="remove">Remove</string>
     <string name="not_supported_navigation_event">Not supported navigation event</string>
-
+    <string name="purchase_failed_format">Purchase failed with code %d</string>
 
     <plurals name="days">
         <item quantity="one">%1$d day</item>
diff --git a/core/src/fdroid/AndroidManifest.xml b/core/src/fdroid/AndroidManifest.xml
deleted file mode 100644
index 9f6b0aec090fe853e16e9ab2db67998736440ba9..0000000000000000000000000000000000000000
--- a/core/src/fdroid/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
-
-    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
-
-    <application>
-
-        <service
-            android:name=".notifications.GuardAndroidService"
-            android:exported="false"
-            tools:ignore="Instantiatable" />
-
-    </application>
-
-</manifest>
diff --git a/core/src/fdroid/res/values/strings.xml b/core/src/fdroid/res/values/strings.xml
deleted file mode 100644
index b62816a2a3f9732b51c24e5bf120621c3e09fbad..0000000000000000000000000000000000000000
--- a/core/src/fdroid/res/values/strings.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<resources>
-
-    <string name="flavour_does_not_support_subscriptions">This flavour does not support subscriptions</string>
-    <string name="settings_troubleshoot_test_battery_title">Battery Optimization</string>
-    <string name="settings_troubleshoot_test_battery_success">Circles is not affected by Battery Optimization.</string>
-    <string name="settings_troubleshoot_test_battery_failed">If a user leaves a device unplugged and stationary for a period of time, with the screen off, the device enters Doze mode. This prevents apps from accessing the network and defers their jobs, syncs, and standard alarms. </string>
-    <string name="settings_troubleshoot_test_bg_restricted_title">Check background restrictions</string>
-    <string name="settings_troubleshoot_test_bg_restricted_success">Background restrictions are disabled for Circles. This test should be run using mobile data (no WIFI).\n%1$s</string>
-    <string name="settings_troubleshoot_test_bg_restricted_failed">Background restrictions are enabled for Circles.\nWork that the app tries to do will be aggressively restricted while it is in the background, and this could affect notifications.\n%1$s</string>
-
-</resources>
\ No newline at end of file
diff --git a/core/src/gplay/AndroidManifest.xml b/core/src/gplay/AndroidManifest.xml
deleted file mode 100644
index 3176826235b5bfc92edb0e59efe28d1e627225e5..0000000000000000000000000000000000000000
--- a/core/src/gplay/AndroidManifest.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
-
-    <application>
-        <service android:name=".notifications.FirebaseMessagingService"
-            android:exported="false"
-            tools:ignore="Instantiatable">
-            <intent-filter>
-                <action android:name="com.google.firebase.MESSAGING_EVENT" />
-            </intent-filter>
-        </service>
-    </application>
-
-</manifest>