diff --git a/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/list/SubscriptionViewHolder.kt b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/list/SubscriptionViewHolder.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0166f60d1940cd0e43c041ff0a445a4b02666754
--- /dev/null
+++ b/app/src/main/java/org/futo/circles/feature/sign_up/subscription_stage/list/SubscriptionViewHolder.kt
@@ -0,0 +1,36 @@
+package org.futo.circles.feature.sign_up.subscription_stage.list
+
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import org.futo.circles.core.list.ViewBindingHolder
+import org.futo.circles.core.list.context
+import org.futo.circles.databinding.SubscriptionListItemBinding
+import org.futo.circles.extensions.onClick
+import org.futo.circles.subscriptions.SubscriptionData
+import org.futo.circles.subscriptions.formatIsoPeriod
+
+
+class SubscriptionViewHolder(
+    parent: ViewGroup,
+    private val onSubscriptionClicked: (Int) -> Unit
+) : RecyclerView.ViewHolder(inflate(parent, SubscriptionListItemBinding::inflate)) {
+
+    private companion object : ViewBindingHolder
+
+    private val binding = baseBinding as SubscriptionListItemBinding
+
+    init {
+        onClick(itemView) { position -> onSubscriptionClicked(position) }
+    }
+
+    fun bind(data: SubscriptionData) {
+        with(binding) {
+            tvName.text = data.details.name
+            tvDetails.text = data.details.description
+            val productOffer =
+                data.details.subscriptionOfferDetails?.last()?.pricingPhases?.pricingPhaseList?.last()
+            tvPrice.text = productOffer?.formattedPrice ?: ""
+            tvDuration.text = productOffer?.billingPeriod?.formatIsoPeriod(context) ?: ""
+        }
+    }
+}
\ No newline at end of file