diff --git a/app/src/main/java/org/futo/circles/model/SubscriptionListItem.kt b/app/src/main/java/org/futo/circles/model/SubscriptionListItem.kt
new file mode 100644
index 0000000000000000000000000000000000000000..fc3f1aa8b889be369dd45fcbd2ad175e04bf377d
--- /dev/null
+++ b/app/src/main/java/org/futo/circles/model/SubscriptionListItem.kt
@@ -0,0 +1,11 @@
+package org.futo.circles.model
+
+import org.futo.circles.core.list.IdEntity
+
+data class SubscriptionListItem(
+    override val id: String,
+    val name: String,
+    val description: String,
+    val price: String,
+    val duration: String
+) : IdEntity<String>
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt b/app/src/main/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt
new file mode 100644
index 0000000000000000000000000000000000000000..29d5a9f50c68bbf2544bd1aef8d9967e2c17bf27
--- /dev/null
+++ b/app/src/main/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt
@@ -0,0 +1,28 @@
+package org.futo.circles.subscriptions.google
+
+import android.content.Context
+import com.android.billingclient.api.ProductDetails
+import org.futo.circles.extensions.Response
+import org.futo.circles.model.SubscriptionListItem
+import org.futo.circles.subscriptions.formatIsoPeriod
+
+fun ProductDetails.toSubscriptionListItem(context: Context): SubscriptionListItem {
+    val productOffer =
+        subscriptionOfferDetails?.last()?.pricingPhases?.pricingPhaseList?.last()
+
+    return SubscriptionListItem(
+        id = productId,
+        name = name,
+        description = description,
+        price = productOffer?.formattedPrice ?: "",
+        duration = productOffer?.billingPeriod?.formatIsoPeriod(context) ?: ""
+    )
+}
+
+fun Response<List<ProductDetails>>.toSubscriptionListItemsResponse(context: Context): Response<List<SubscriptionListItem>> =
+    when (val response = this) {
+        is Response.Success -> Response.Success(response.data.map {
+            it.toSubscriptionListItem(context)
+        })
+        is Response.Error -> response
+    }
\ No newline at end of file