diff --git a/ee/app/assets/javascripts/fulfillment/shared_queries/subscription_actions_reason.customer.query.graphql b/ee/app/assets/javascripts/fulfillment/shared_queries/subscription_actions_reason.customer.query.graphql
index 053fe34c4048b4540c62b02725ae4cd3d88aedaa..f01cebda2255726ec528a91dbb48d21b0e16f3aa 100644
--- a/ee/app/assets/javascripts/fulfillment/shared_queries/subscription_actions_reason.customer.query.graphql
+++ b/ee/app/assets/javascripts/fulfillment/shared_queries/subscription_actions_reason.customer.query.graphql
@@ -1,11 +1,11 @@
-query getSubscriptionPermissionsData($namespaceId: ID!) {
-  subscription(namespaceId: $namespaceId) {
+query getSubscriptionPermissionsData($namespaceId: ID, $subscriptionName: String) {
+  subscription(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {
     canAddSeats
     canAddDuoProSeats
     canRenew
     communityPlan
   }
-  userActionAccess(namespaceId: $namespaceId) {
+  userActionAccess(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {
     limitedAccessReason
   }
 }
diff --git a/ee/app/assets/javascripts/pages/admin/code_suggestions/index.js b/ee/app/assets/javascripts/pages/admin/code_suggestions/index.js
index 2e1ee0f1b4ceea874d53069ade902999916869e4..37613b167a59670bec5d893688bd633e5ccd9afc 100644
--- a/ee/app/assets/javascripts/pages/admin/code_suggestions/index.js
+++ b/ee/app/assets/javascripts/pages/admin/code_suggestions/index.js
@@ -1,14 +1,7 @@
 import Vue from 'vue';
-import VueApollo from 'vue-apollo';
-import createDefaultClient from '~/lib/graphql';
+import apolloProvider from 'ee/usage_quotas/shared/provider';
 import CodeSuggestionsUsage from 'ee/usage_quotas/code_suggestions/components/code_suggestions_usage.vue';
 
-Vue.use(VueApollo);
-
-const apolloProvider = new VueApollo({
-  defaultClient: createDefaultClient(),
-});
-
 function mountCodeSuggestionsUsageApp() {
   const el = document.getElementById('js-code-suggestions-page');
 
@@ -23,6 +16,7 @@ function mountCodeSuggestionsUsageApp() {
     provide: {
       isSaaS: false,
       addDuoProHref: el.dataset.addDuoProSeatsUrl,
+      subscriptionName: el.dataset.subscriptionName,
     },
     render: (h) => h(CodeSuggestionsUsage),
   });
diff --git a/ee/app/assets/javascripts/usage_quotas/code_suggestions/components/code_suggestions_info_card.vue b/ee/app/assets/javascripts/usage_quotas/code_suggestions/components/code_suggestions_info_card.vue
index 47e417e406b995ed60d2e39e1aff463ff3a19c4d..f6c478a0a72173a0fdb8ed53e83494d6b004a7db 100644
--- a/ee/app/assets/javascripts/usage_quotas/code_suggestions/components/code_suggestions_info_card.vue
+++ b/ee/app/assets/javascripts/usage_quotas/code_suggestions/components/code_suggestions_info_card.vue
@@ -42,7 +42,7 @@ export default {
     GlModalDirective,
   },
   mixins: [Tracking.mixin()],
-  inject: ['addDuoProHref', 'isSaaS'],
+  inject: ['addDuoProHref', 'isSaaS', 'subscriptionName'],
   props: {
     groupId: {
       type: String,
@@ -60,7 +60,7 @@ export default {
       return parseInt(this.groupId, 10);
     },
     shouldShowAddSeatsButton() {
-      if (this.isLoading || !this.addDuoProHref) {
+      if (this.isLoading) {
         return false;
       }
       return true;
@@ -86,12 +86,12 @@ export default {
       query: getSubscriptionPermissionsData,
       client: 'customersDotClient',
       variables() {
-        return {
-          namespaceId: this.parsedGroupId,
-        };
+        return this.groupId
+          ? { namespaceId: this.parsedGroupId }
+          : { subscriptionName: this.subscriptionName };
       },
       skip() {
-        return !this.addDuoProHref || !this.groupId;
+        return !(this.groupId || this.subscriptionName);
       },
       update: (data) => ({
         canAddDuoProSeats: data.subscription.canAddDuoProSeats,
diff --git a/ee/app/views/admin/code_suggestions/index.html.haml b/ee/app/views/admin/code_suggestions/index.html.haml
index d56ca4d66b775d0a2d63d88a668c3a060ff5f3d3..c3dfb19b71a9f166b38552ee62018a9bfab375fa 100644
--- a/ee/app/views/admin/code_suggestions/index.html.haml
+++ b/ee/app/views/admin/code_suggestions/index.html.haml
@@ -2,4 +2,4 @@
 - page_title s_('CodeSuggestions|GitLab Duo Pro')
 - duo_pro_url = add_duo_pro_seats_url(@subscription_name)
 
-#js-code-suggestions-page{ data: { add_duo_pro_seats_url: duo_pro_url } }
+#js-code-suggestions-page{ data: { add_duo_pro_seats_url: duo_pro_url, subscription_name: @subscription_name } }
diff --git a/ee/spec/frontend/usage_quotas/code_suggestions/components/code_suggestions_info_card_spec.js b/ee/spec/frontend/usage_quotas/code_suggestions/components/code_suggestions_info_card_spec.js
index 3e0229b22945047b299ce9d773accfbb24500323..168060e95fa1a14726e195ec20c47b7d99a3b8cf 100644
--- a/ee/spec/frontend/usage_quotas/code_suggestions/components/code_suggestions_info_card_spec.js
+++ b/ee/spec/frontend/usage_quotas/code_suggestions/components/code_suggestions_info_card_spec.js
@@ -20,6 +20,7 @@ jest.mock('~/lib/utils/url_utility', () => ({
 const defaultProvide = {
   addDuoProHref: 'http://customers.gitlab.com/namespaces/10/duo_pro_seats',
   isSaaS: true,
+  subscriptionName: null,
 };
 
 describe('CodeSuggestionsInfoCard', () => {
@@ -123,13 +124,6 @@ describe('CodeSuggestionsInfoCard', () => {
         await waitForPromises();
         expect(findAddSeatsButton().exists()).toBe(true);
       });
-
-      it('does not render add seats button if link is empty', async () => {
-        createComponent({ provide: { isSaas: false, addDuoProHref: '' } });
-        // wait for apollo to load
-        await waitForPromises();
-        expect(findAddSeatsButton().exists()).toBe(false);
-      });
     });
 
     describe('with saas', () => {
@@ -145,13 +139,6 @@ describe('CodeSuggestionsInfoCard', () => {
           expect(findAddSeatsButton().exists()).toBe(true);
         });
       });
-
-      it('does not render add seats button if link is empty', async () => {
-        createComponent({ provide: { addDuoProHref: '' } });
-        // wait for apollo to load
-        await waitForPromises();
-        expect(findAddSeatsButton().exists()).toBe(false);
-      });
     });
 
     describe('tracking', () => {
diff --git a/ee/spec/support/helpers/subscription_portal_helpers.rb b/ee/spec/support/helpers/subscription_portal_helpers.rb
index 236803bf564ab825e16f1ff80d3070fcbc1d8733..0385950cd86737dbb3db974c7925a6eaa0ee78db 100644
--- a/ee/spec/support/helpers/subscription_portal_helpers.rb
+++ b/ee/spec/support/helpers/subscription_portal_helpers.rb
@@ -93,7 +93,7 @@ def stub_subscription_management_data(namespace_id, can_add_seats: true, can_ren
   def stub_subscription_permissions_data(namespace_id, can_add_seats: true, can_add_duo_pro_seats: true, can_renew: true, community_plan: false, reason: 'MANAGED_BY_RESELLER')
     stub_full_request(graphql_url, method: :post)
       .with(
-        body: "{\"operationName\":\"getSubscriptionPermissionsData\",\"variables\":{\"namespaceId\":#{namespace_id}},\"query\":\"query getSubscriptionPermissionsData($namespaceId: ID!) {\\n  subscription(namespaceId: $namespaceId) {\\n    canAddSeats\\n    canAddDuoProSeats\\n    canRenew\\n    communityPlan\\n    __typename\\n  }\\n  userActionAccess(namespaceId: $namespaceId) {\\n    limitedAccessReason\\n    __typename\\n  }\\n}\\n\"}"
+        body: "{\"operationName\":\"getSubscriptionPermissionsData\",\"variables\":{\"namespaceId\":#{namespace_id}},\"query\":\"query getSubscriptionPermissionsData($namespaceId: ID, $subscriptionName: String) {\\n  subscription(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {\\n    canAddSeats\\n    canAddDuoProSeats\\n    canRenew\\n    communityPlan\\n    __typename\\n  }\\n  userActionAccess(namespaceId: $namespaceId, subscriptionName: $subscriptionName) {\\n    limitedAccessReason\\n    __typename\\n  }\\n}\\n\"}"
       )
       .to_return(status: 200, body: {
         "data": {