> ## 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.

# Subscription upgrades

An **upgrade** describes the process of a customer switching to a higher-priced option, including:

1. Switching to a higher tier.
2. Switching to a longer commitment.
3. Increasing the unit quantity (e.g. increasing the seat count).
4. Adding an add-on.
5. Increasing the quantity of a specific add-on.

When a customer upgrades their subscription in the middle of their billing cycle, they're **immediately charged** the **prorated** amount of the upgraded subscription until the end of the current billing cycle.

This means that the customer gets access to their higher-priced option and will be charged the difference for the rest of the billing period immediately.

<Note>
  When updating a subscription manually via the Stigg app, you can override the default proration and billing anchor behavior. See [Updating subscriptions](../subscriptions/updating-subscriptions) for details.
</Note>

## How plan upgrades are determined

When a customer switches from one plan to another, Stigg determines whether the transition is an upgrade using the following priority order:

1. **Plan inheritance** - If the target plan inherits from the customer's current plan, the transition is an upgrade.
2. **Price comparison** - If there's no inheritance relationship between the plans:
   * **Both paid plans**: the transition is an upgrade if the target plan has a higher starting price.
   * **Both custom-priced plans**: the upgrade direction is determined by the order of plans in the pricing table.
   * **Both free plans**: the transition is considered neither an upgrade nor a downgrade.

This determination is reflected in:

* The `isUpgrade` and `isDowngrade` fields in webhooks such as `subscription.created` and `subscription.updated`
* The `SubscribeIntentionType.UPGRADE_PLAN` and `SubscribeIntentionType.DOWNGRADE_PLAN` intent types in the [pricing table widget](/documentation/snap-in-widgets/pricing-table)
