Skip to main content
Retrieves all the data needed to render a customer self-service portal, including subscriptions, entitlements, and billing information.

Query

query GetCustomerPortal($input: CustomerPortalInput!) {
  customerPortal(input: $input) {
    subscriptions {
      subscriptionId
      status
      startDate
      currentBillingPeriodEnd
      plan {
        refId
        displayName
      }
      addons {
        addon {
          refId
          displayName
        }
        quantity
      }
      prices {
        billingPeriod
        price {
          amount
          currency
        }
      }
    }
    entitlements {
      feature {
        refId
        displayName
        featureType
      }
      isGranted
      hasUnlimitedUsage
      usageLimit
      currentUsage
      resetPeriod
    }
    billingInformation {
      defaultPaymentMethodLast4Digits
      defaultPaymentMethodType
      defaultPaymentExpirationMonth
      defaultPaymentExpirationYear
    }
    billingPortalUrl
    canUpgradeSubscription
    promotionalEntitlements {
      featureId
      displayName
      hasUnlimitedUsage
      usageLimit
    }
  }
}

Parameters

input
CustomerPortalInput
required
Input parameters for the customer portal query

Return Type

Returns a CustomerPortal object with:
FieldTypeDescription
subscriptions[CustomerPortalSubscription]Active subscriptions
entitlements[Entitlement]All effective entitlements
billingInformationCustomerPortalBillingInformationPayment method details
billingPortalUrlStringLink to billing provider portal
canUpgradeSubscriptionBooleanWhether upgrade is available
promotionalEntitlements[CustomerPortalPromotionalEntitlement]Promotional grants
resourceCustomerResourceResource details (if applicable)

Billing Information Fields

FieldTypeDescription
defaultPaymentMethodLast4DigitsStringLast 4 digits of payment method
defaultPaymentMethodTypePaymentMethodTypeCARD, BANK_TRANSFER, etc.
defaultPaymentExpirationMonthIntCard expiration month
defaultPaymentExpirationYearIntCard expiration year
defaultPaymentMethodIdStringPayment method ID

Common Use Cases

Build a complete customer portal showing current plan, usage, and upgrade options.
Display current feature usage against limits with progress bars.
Show payment method and link to billing portal for updates.
Check canUpgradeSubscription and show upgrade CTAs when appropriate.

Example: Building a Portal UI

const { data } = await client.query({
  query: GET_CUSTOMER_PORTAL,
  variables: { input: { customerId: user.customerId } }
});

const portal = data.customerPortal;

// Display subscription info
portal.subscriptions.forEach(sub => {
  console.log(`Plan: ${sub.plan.displayName}`);
  console.log(`Status: ${sub.status}`);
  console.log(`Renews: ${sub.currentBillingPeriodEnd}`);
});

// Display usage meters
portal.entitlements
  .filter(e => e.feature.featureType === 'NUMBER')
  .forEach(e => {
    const percentage = (e.currentUsage / e.usageLimit) * 100;
    console.log(`${e.feature.displayName}: ${e.currentUsage}/${e.usageLimit}`);
  });

// Show upgrade option
if (portal.canUpgradeSubscription) {
  showUpgradeButton();
}