diff --git a/CRM/Core/Payment/Stripe.php b/CRM/Core/Payment/Stripe.php
index 9ca4fab60036fe09f0d2a454616fc4404827a57a..a13c81733957c5834f30ba4b326607f668d1415f 100644
--- a/CRM/Core/Payment/Stripe.php
+++ b/CRM/Core/Payment/Stripe.php
@@ -745,11 +745,15 @@ class CRM_Core_Payment_Stripe extends CRM_Core_Payment {
 
     if (!isset($stripe_plan_query)) {
       $formatted_amount = number_format(($amount / 100), 2);
+      $product = \Stripe\Product::create(array(
+        "name" => "CiviCRM {$membership_name} every {$frequency_interval} {$frequency}(s) {$formatted_amount}{$currency}{$mode_tag}",
+        "type" => "service"
+      ));
       // Create a new Plan.
       $stripe_plan = array(
         'amount' => $amount,
         'interval' => $frequency,
-        'name' => "CiviCRM {$membership_name} every {$frequency_interval} {$frequency}(s) {$formatted_amount}{$currency}{$mode_tag}",
+        'product' => $product->id,
         'currency' => $currency,
         'id' => $plan_id,
         'interval_count' => $frequency_interval,