---
title: "Update plan group"
method: PUT
path: "/plan-groups/{plan_group_id}"
tags: ["plangroups"]
---

# Update plan group

`PUT /plan-groups/{plan_group_id}`

## Path parameters

- `plan_group_id` string, required

## Request body

- UpdatePlanGroupRequestBody
  - `add_on_compatibilities` CompatiblePlans[], nullable
    - `compatible_plan_ids` string[], required
    - `source_plan_id` string, required
  - `add_on_ids` string[], required — Use OrderedAddOns instead
  - `checkout_collect_address` boolean, required
  - `checkout_collect_email` boolean, required
  - `checkout_collect_phone` boolean, required
  - `custom_checkout_fields` CheckoutFieldInput[], nullable
    - `definition_id` string, nullable
    - `helper_text` string, nullable
    - `id` string, nullable
    - `name` string, required
    - `required` boolean, required
    - `stripe_metadata_key` string, required
  - `custom_plan_config` CustomPlanConfig
    - `cta_text` string, required
    - `cta_web_site` string, required
    - `price_text` string, required
  - `custom_plan_id` string, nullable
  - `enable_tax_collection` boolean, required
  - `fallback_plan_id` string, nullable
  - `initial_plan_id` string, nullable
  - `initial_plan_price_id` string, nullable
  - `opt_in_enabled` boolean, required
  - `opt_in_text` string, nullable
  - `opt_in_title` string, nullable
  - `ordered_add_ons` OrderedPlansInGroup[], required
    - `entitlements` EntitlementsInPlan[], nullable
      - `entitlement_id` string, required
      - `visible` boolean, nullable
    - `plan_id` string, required
  - `ordered_bundle_list` PlanGroupBundleOrder[], required
    - `bundleId` string, required
  - `ordered_plans` OrderedPlansInGroup[], required
    - `entitlements` EntitlementsInPlan[], nullable
      - `entitlement_id` string, required
      - `visible` boolean, nullable
    - `plan_id` string, required
  - `prevent_downgrades_when_over_limit` boolean, required
  - `prevent_self_service_downgrade` boolean, required
  - `prevent_self_service_downgrade_button_text` string, nullable
  - `prevent_self_service_downgrade_url` string, nullable
  - `proration_behavior` 'create_prorations' | 'invoice_immediately', required
  - `scheduled_downgrade_behavior` 'end_of_billing_period' | 'none'
  - `scheduled_downgrade_prevent_when_over_limit` boolean, nullable
  - `show_as_monthly_prices` boolean, required
  - `show_credits` boolean, required
  - `show_feature_description` boolean, required
  - `show_hard_limit` boolean, required
  - `show_period_toggle` boolean, required
  - `show_zero_price_as_free` boolean, required
  - `sync_customer_billing_details` boolean, required
  - `trial_days` integer, nullable
  - `trial_expiry_plan_id` string, nullable
  - `trial_expiry_plan_price_id` string, nullable
  - `trial_payment_method_required` boolean, nullable

## Response `200`

OK

- object
  - `data` PlanGroupResponseData, required
    - `add_on_compatibilities` CompatiblePlansResponseData[], required
      - `compatible_plan_ids` string[], required
      - `source_plan_id` string, required
    - `add_on_ids` string[], required
    - `checkout_settings` CheckoutSettingsResponseData, required
      - `collect_address` boolean, required
      - `collect_email` boolean, required
      - `collect_phone` boolean, required
      - `opt_in_enabled` boolean, required
      - `opt_in_text` string, nullable
      - `opt_in_title` string, nullable
    - `component_settings` ComponentSettingsResponseData, required
      - `show_as_monthly_prices` boolean, required
      - `show_credits` boolean, required
      - `show_feature_description` boolean, required
      - `show_hard_limit` boolean, required
      - `show_period_toggle` boolean, required
      - `show_zero_price_as_free` boolean, required
    - `default_plan_id` string, nullable
    - `fallback_plan_id` string, nullable
    - `id` string, required
    - `initial_plan_id` string, nullable
    - `initial_plan_price_id` string, nullable
    - `ordered_add_on_ids` OrderedPlansInGroup[], required
      - `entitlements` EntitlementsInPlan[], nullable
        - `entitlement_id` string, required
        - `visible` boolean, nullable
      - `plan_id` string, required
    - `plan_ids` OrderedPlansInGroup[], required
      - `entitlements` EntitlementsInPlan[], nullable
        - `entitlement_id` string, required
        - `visible` boolean, nullable
      - `plan_id` string, required
    - `prevent_downgrades_when_over_limit` boolean, required
    - `prevent_self_service_downgrade` boolean, required
    - `prevent_self_service_downgrade_button_text` string, nullable
    - `prevent_self_service_downgrade_url` string, nullable
    - `proration_behavior` string, required
    - `scheduled_downgrade_behavior` string, nullable
    - `scheduled_downgrade_prevent_when_over_limit` boolean, nullable
    - `show_as_monthly_prices` boolean, required
    - `show_credits` boolean, required
    - `show_period_toggle` boolean, required
    - `show_zero_price_as_free` boolean, required
    - `sync_customer_billing_details` boolean, required
    - `tax_collection_enabled` boolean, required
    - `trial_days` integer, nullable
    - `trial_expiry_plan_id` string, nullable
    - `trial_expiry_plan_price_id` string, nullable
    - `trial_payment_method_required` boolean, nullable
  - `params` object, required — Input parameters

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Server error

---

[API](https://skmtc.net/schematichq/apis/schematic-api.md) · [All operations](https://skmtc.net/schematichq/apis/schematic-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/schematichq/schematic-api/versions/873fb318b08a/schema)
