diff --git a/ee/app/services/gitlab_subscriptions/add_on_purchases/base_service.rb b/ee/app/services/gitlab_subscriptions/add_on_purchases/base_service.rb
index 9355857a7484c1c14bcb490e20788e61292765fe..b82250a8955916f75eb2fdf73c87e183b5ac2b29 100644
--- a/ee/app/services/gitlab_subscriptions/add_on_purchases/base_service.rb
+++ b/ee/app/services/gitlab_subscriptions/add_on_purchases/base_service.rb
@@ -11,6 +11,7 @@ def initialize(namespace, add_on, params = {})
         @quantity = params[:quantity]
         @expires_on = params[:expires_on]
         @purchase_xid = params[:purchase_xid]
+        @trial = params[:trial]
       end
 
       def execute
@@ -19,7 +20,7 @@ def execute
 
       private
 
-      attr_reader :namespace, :add_on, :quantity, :expires_on, :purchase_xid
+      attr_reader :namespace, :add_on, :quantity, :expires_on, :purchase_xid, :trial
 
       # Override in derived class
       def add_on_purchase
diff --git a/ee/app/services/gitlab_subscriptions/add_on_purchases/update_service.rb b/ee/app/services/gitlab_subscriptions/add_on_purchases/update_service.rb
index a1bd7e7389d00fc8602fb7dd0e104c2e674a9214..c25542e1dec29aa982eef5241dc1cd70eb28220d 100644
--- a/ee/app/services/gitlab_subscriptions/add_on_purchases/update_service.rb
+++ b/ee/app/services/gitlab_subscriptions/add_on_purchases/update_service.rb
@@ -34,7 +34,8 @@ def update_add_on_purchase
         attributes = {
           quantity: quantity,
           expires_on: expires_on,
-          purchase_xid: purchase_xid
+          purchase_xid: purchase_xid,
+          trial: trial
         }.compact
 
         add_on_purchase.update(attributes)
diff --git a/ee/lib/api/gitlab_subscriptions/add_on_purchases.rb b/ee/lib/api/gitlab_subscriptions/add_on_purchases.rb
index 82ae650add3f87707edadda56f2495d9996a5d78..a9e5b8c8c0b6d812e0e660d59b9e9a3a18cb5fac 100644
--- a/ee/lib/api/gitlab_subscriptions/add_on_purchases.rb
+++ b/ee/lib/api/gitlab_subscriptions/add_on_purchases.rb
@@ -27,6 +27,7 @@ class AddOnPurchases < ::API::Base
           requires :quantity, type: Integer, desc: 'The quantity of the purchase'
           requires :expires_on, type: Date, desc: 'The date when purchase expires on'
           requires :purchase_xid, type: String, desc: 'The purchase identifier (example: the subscription name)'
+          optional :trial, type: Boolean, desc: 'Whether the add-on is a trial'
         end
         post ":id/subscription_add_on_purchase/:add_on_name" do
           result = ::GitlabSubscriptions::AddOnPurchases::CreateService.new(
@@ -72,6 +73,7 @@ class AddOnPurchases < ::API::Base
           requires :expires_on, type: Date, desc: 'The date when purchase expires on'
           optional :quantity, type: Integer, desc: 'The quantity of the purchase'
           optional :purchase_xid, type: String, desc: 'The purchase identifier (example: the subscription name)'
+          optional :trial, type: Boolean, desc: 'Whether the add-on is a trial'
         end
         put ":id/subscription_add_on_purchase/:add_on_name" do
           result = ::GitlabSubscriptions::AddOnPurchases::UpdateService.new(
diff --git a/ee/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase.rb b/ee/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase.rb
index cc753e7f45f77e619b4807c60cd2011320fde99a..295bd4993573f389a7d40764d305b36a734934e2 100644
--- a/ee/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase.rb
+++ b/ee/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase.rb
@@ -11,6 +11,7 @@ class AddOnPurchase < Grape::Entity
           expose :quantity, documentation: { type: 'integer', example: 10 }
           expose :expires_on, documentation: { type: 'date', example: '2023-05-30' }
           expose :purchase_xid, documentation: { type: 'string', example: 'A-S00000001' }
+          expose :trial, documentation: { type: 'boolean', example: 'false' }
 
           def namespace_name
             object.namespace.name
diff --git a/ee/spec/factories/gitlab_subscriptions/add_on_purchases.rb b/ee/spec/factories/gitlab_subscriptions/add_on_purchases.rb
index 96e9a8cebeb002caef0d2ac50e1d6cb0fb95af0d..06b82cb8753746555c753f56d4802a8b09544826 100644
--- a/ee/spec/factories/gitlab_subscriptions/add_on_purchases.rb
+++ b/ee/spec/factories/gitlab_subscriptions/add_on_purchases.rb
@@ -7,6 +7,7 @@
     quantity { 1 }
     expires_on { 1.year.from_now.to_date }
     purchase_xid { SecureRandom.hex(16) }
+    trial { false }
 
     trait :active do
       expires_on { 1.year.from_now.to_date }
diff --git a/ee/spec/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase_spec.rb b/ee/spec/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase_spec.rb
index 96ff9aeb751c942b9bbd266d796feff344314943..e5242ead5fd84b8df1df3ddbc60b6ea11ceb4a83 100644
--- a/ee/spec/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase_spec.rb
+++ b/ee/spec/lib/ee/api/entities/gitlab_subscriptions/add_on_purchase_spec.rb
@@ -14,5 +14,6 @@
     expect(entity[:quantity]).to eq add_on_purchase.quantity
     expect(entity[:expires_on]).to eq add_on_purchase.expires_on
     expect(entity[:purchase_xid]).to eq add_on_purchase.purchase_xid
+    expect(entity[:trial]).to eq add_on_purchase.trial
   end
 end
diff --git a/ee/spec/requests/api/gitlab_subscriptions/add_on_purchases_spec.rb b/ee/spec/requests/api/gitlab_subscriptions/add_on_purchases_spec.rb
index 46b0189986e0684f6f04103ae84eea6a381bf17c..62fc99c08ffba92a6c0cd870aeb30099accd1bda 100644
--- a/ee/spec/requests/api/gitlab_subscriptions/add_on_purchases_spec.rb
+++ b/ee/spec/requests/api/gitlab_subscriptions/add_on_purchases_spec.rb
@@ -211,7 +211,8 @@
             'add_on' => add_on.name.titleize,
             'quantity' => add_on_purchase.quantity,
             'expires_on' => add_on_purchase.expires_on.to_s,
-            'purchase_xid' => add_on_purchase.purchase_xid
+            'purchase_xid' => add_on_purchase.purchase_xid,
+            'trial' => add_on_purchase.trial
           )
         end
       end
@@ -223,7 +224,8 @@
       {
         quantity: 10,
         expires_on: (Date.current + 1.year).to_s,
-        purchase_xid: purchase_xid
+        purchase_xid: purchase_xid,
+        trial: true
       }
     end
 
@@ -272,6 +274,7 @@
             add_on_purchase.reload
           end.to change { add_on_purchase.quantity }.from(5).to(10)
             .and change { add_on_purchase.expires_on }.from(expires_on).to(params[:expires_on].to_date)
+            .and change { add_on_purchase.trial }.from(false).to(true)
 
           expect(response).to have_gitlab_http_status(:success)
           expect(json_response).to eq(
@@ -280,7 +283,8 @@
             'add_on' => add_on.name.titleize,
             'quantity' => params[:quantity],
             'expires_on' => params[:expires_on],
-            'purchase_xid' => params[:purchase_xid]
+            'purchase_xid' => params[:purchase_xid],
+            'trial' => params[:trial]
           )
         end
 
@@ -301,7 +305,8 @@
               'add_on' => add_on.name.titleize,
               'quantity' => add_on_purchase.quantity,
               'expires_on' => params[:expires_on],
-              'purchase_xid' => add_on_purchase.purchase_xid
+              'purchase_xid' => add_on_purchase.purchase_xid,
+              'trial' => add_on_purchase.trial
             )
           end
         end
diff --git a/ee/spec/services/gitlab_subscriptions/add_on_purchases/base_service_spec.rb b/ee/spec/services/gitlab_subscriptions/add_on_purchases/base_service_spec.rb
index 15a58d600c4f3192eb0e823547ce043e77ae3503..709783674439a96141155ffbfbc7c0d03b799af3 100644
--- a/ee/spec/services/gitlab_subscriptions/add_on_purchases/base_service_spec.rb
+++ b/ee/spec/services/gitlab_subscriptions/add_on_purchases/base_service_spec.rb
@@ -11,7 +11,8 @@
       {
         quantity: 10,
         expires_on: (Date.current + 1.year).to_s,
-        purchase_xid: 'S-A00000001'
+        purchase_xid: 'S-A00000001',
+        trial: false
       }
     end
 
@@ -58,7 +59,8 @@ def add_on_purchase
               add_on: add_on,
               quantity: quantity,
               expires_on: expires_on,
-              purchase_xid: purchase_xid
+              purchase_xid: purchase_xid,
+              trial: trial
             )
           end
         end
diff --git a/ee/spec/services/gitlab_subscriptions/add_on_purchases/update_service_spec.rb b/ee/spec/services/gitlab_subscriptions/add_on_purchases/update_service_spec.rb
index d7ba464054312cb9e6a4fdbc8a80bb1369a6a0a4..de31c20eaf513280fe02bc84030980251affafe7 100644
--- a/ee/spec/services/gitlab_subscriptions/add_on_purchases/update_service_spec.rb
+++ b/ee/spec/services/gitlab_subscriptions/add_on_purchases/update_service_spec.rb
@@ -12,7 +12,8 @@
       {
         quantity: 10,
         expires_on: (Date.current + 1.year).to_s,
-        purchase_xid: purchase_xid
+        purchase_xid: purchase_xid,
+        trial: true
       }
     end
 
@@ -28,7 +29,8 @@
             add_on: add_on,
             quantity: 5,
             expires_on: expires_on,
-            purchase_xid: purchase_xid
+            purchase_xid: purchase_xid,
+            trial: false
           )
         end
 
@@ -44,6 +46,7 @@
             add_on_purchase.reload
           end.to change { add_on_purchase.quantity }.from(5).to(10)
             .and change { add_on_purchase.expires_on }.from(expires_on).to(params[:expires_on].to_date)
+            .and change { add_on_purchase.trial }.from(false).to(true)
         end
 
         context 'when passing in the add-on purchase record' do