> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stigg.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Plan

Creates a new subscription plan in draft status.

## Mutation

<CodeGroup>
  ```graphql Mutation theme={null}
  mutation CreatePlan($input: PlanCreateInput!) {
    createOnePlan(input: $input) {
      id
      refId
      displayName
      description
      status
      pricingType
      versionNumber
    }
  }
  ```

  ```json Variables theme={null}
  {
    "input": {
      "refId": "plan-pro",
      "displayName": "Pro Plan",
      "description": "For growing teams",
      "productId": "product-main",
      "pricingType": "PAID"
    }
  }
  ```

  ```json Response theme={null}
  {
    "data": {
      "createOnePlan": {
        "id": "plan-uuid-123",
        "refId": "plan-pro",
        "displayName": "Pro Plan",
        "description": "For growing teams",
        "status": "DRAFT",
        "pricingType": "PAID",
        "versionNumber": 1
      }
    }
  }
  ```
</CodeGroup>

## Parameters

<ParamField body="input" type="PlanCreateInput" required>
  Input for creating a plan

  <Expandable title="properties">
    <ParamField body="productId" type="String" required>
      Product reference ID
    </ParamField>

    <ParamField body="displayName" type="String" required>
      Plan display name
    </ParamField>

    <ParamField body="refId" type="String">
      Unique plan reference ID (auto-generated if not provided)
    </ParamField>

    <ParamField body="description" type="String">
      Plan description
    </ParamField>

    <ParamField body="pricingType" type="PricingType">
      FREE, PAID, or CUSTOM
    </ParamField>

    <ParamField body="billingId" type="String">
      Billing provider product/price ID
    </ParamField>

    <ParamField body="parentPlanId" type="String">
      Parent plan ID for inheritance
    </ParamField>

    <ParamField body="hiddenFromWidgets" type="[WidgetType]">
      Widgets to hide this plan from
    </ParamField>

    <ParamField body="additionalMetaData" type="JSON">
      Custom metadata
    </ParamField>

    <ParamField body="environmentId" type="UUID">
      Environment ID
    </ParamField>
  </Expandable>
</ParamField>

## Return Type

Returns the created `Plan` object in DRAFT status.

## Next Steps

After creating a plan:

1. Add entitlements with `createPackageEntitlements`
2. Set pricing with `setPackagePricing`
3. Configure compatible addons with `setCompatibleAddonsOnPlan`
4. Publish with `publishPlan`

## Related Operations

* [Set Package Pricing](/api-and-sdks/api-reference/mutations/set-package-pricing) - Add pricing
* [Publish Plan](/api-and-sdks/api-reference/mutations/publish-plan) - Publish draft
* [List Plans](/api-and-sdks/api-reference/queries/list-plans) - Query plans
