# Renames and updates subscription schedule renewal properties

## What’s new

Includes multiple changes to subscription schedules:

- Renames `renewal_behavior` to `end_behavior`, and `cancel` and `release` values.
- Removes `renewal_interval`.

A side effect of this change is that if you wrote a `renewal_behavior` of `none` on an old API version, `end_behavior` is now converted to `cancel` when reading the value back. In the event that you’re upgrading your API and set `renewal_behavior` as `renew`, with this API version enabled, you’ll see `end_behavior` as `renew`. However, you can no longer update `renewal_interval`, or set `end_behavior` to `renew`, as it’s in a read-only state.

## Impact

Lets you more intuitively control how a subscription schedule ends using the `end_behavior` property. The change handles backward compatibility by automatically mapping the old `renewal_behavior` value of `none` to the new cancel end behavior.

## Changes

#### REST API

| Parameters | Change | Resources or endpoints |
| --- | --- | --- |
| `renewal_behavior` | Removed | [SubscriptionSchedule#create](/api/subscription_schedules/create?api-version=2024-06-20), [SubscriptionSchedule#update](/api/subscription_schedules/update?api-version=2024-06-20) |
| `end_behavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |
| `renewal_interval` | Removed | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20) |

| Field | Change | From → to |
| --- | --- | --- |
| `SubscriptionSchedule.renewal_behavior` | Changed | `nullable(enum('cancel'|'none'|'release'|'renew')) → enum('cancel'|'none'|'release'|'renew')` |

#### Ruby

| Parameters | Change | Resources or methods |
| --- | --- | --- |
| `renewal_behavior` | Removed | [SubscriptionScheduleCreateParams](/api/subscription_schedules/create?api-version=2024-06-20), [SubscriptionScheduleUpdateParams](/api/subscription_schedules/update?api-version=2024-06-20) |
| `end_behavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |

| Field | Change | From → to |
| --- | --- | --- |
| `SubscriptionSchedule.renewal_behavior` | Changed | `nullable(enum('cancel'|'none'|'release'|'renew')) → enum('cancel'|'none'|'release'|'renew')` |

#### Python

| Parameters | Change | Resources or methods |
| --- | --- | --- |
| `renewal_behavior` | Removed | [SubscriptionScheduleCreateParams](/api/subscription_schedules/create?api-version=2024-06-20), [SubscriptionScheduleModifyParams](/api/subscription_schedules/update?api-version=2024-06-20) |
| `end_behavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |

| Field | Change | From → to |
| --- | --- | --- |
| `SubscriptionSchedule.renewal_behavior` | Changed | `nullable(enum('cancel'|'none'|'release'|'renew')) → enum('cancel'|'none'|'release'|'renew')` |

#### PHP

| Parameters | Change | Resources or methods |
| --- | --- | --- |
| `renewal_behavior` | Removed | [SubscriptionSchedule.create().$params](/api/subscription_schedules/create?api-version=2024-06-20), [SubscriptionSchedule.update().$params](/api/subscription_schedules/update?api-version=2024-06-20) |
| `end_behavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |

| Field | Change | From → to |
| --- | --- | --- |
| `SubscriptionSchedule.renewal_behavior` | Changed | `nullable(enum('cancel'|'none'|'release'|'renew')) → enum('cancel'|'none'|'release'|'renew')` |

#### Java

| Parameters | Change | Resources or methods |
| --- | --- | --- |
| `renewalBehavior` | Removed | [SubscriptionScheduleCreateParams](/api/subscription_schedules/create?api-version=2024-06-20), [SubscriptionScheduleUpdateParams](/api/subscription_schedules/update?api-version=2024-06-20) |
| `endBehavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |

#### Node.js

| Parameters | Change | Resources or methods |
| --- | --- | --- |
| `renewal_behavior` | Removed | [SubscriptionScheduleCreateParams](/api/subscription_schedules/create?api-version=2024-06-20), [SubscriptionScheduleUpdateParams](/api/subscription_schedules/update?api-version=2024-06-20) |
| `end_behavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |

| Field | Change | From → to |
| --- | --- | --- |
| `SubscriptionSchedule.renewal_behavior` | Changed | `enum('cancel'|'none'|'release'|'renew') | null → enum('cancel'|'none'|'release'|'renew')` |

#### Go

| Parameters | Change | Resources or methods |
| --- | --- | --- |
| `RenewalBehavior` | Removed | [SubscriptionScheduleParams](/api/subscription_schedules/create?api-version=2024-06-20) |
| `EndBehavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |

#### .NET

| Parameters | Change | Resources or methods |
| --- | --- | --- |
| `RenewalBehavior` | Removed | [SubscriptionScheduleCreateOptions](/api/subscription_schedules/create?api-version=2024-06-20), [SubscriptionScheduleUpdateOptions](/api/subscription_schedules/update?api-version=2024-06-20) |
| `EndBehavior` | Added | [SubscriptionSchedule](/api/subscription_schedules/object?api-version=2024-06-20#subscription_schedule_object-end_behavior) |

## Upgrade

#### REST API

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. If you use an SDK, upgrade to the corresponding SDK version for this API version.
   - If you don’t use an SDK, update your [API requests](https://docs.stripe.com/api/versioning.md) to include `Stripe-Version: 2019-10-17`
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).

#### Ruby

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. Upgrade your Ruby SDK to the latest version.
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).

#### Python

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. Upgrade your Python SDK to the latest version.
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).

#### PHP

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. Upgrade your PHP SDK to the latest version.
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).

#### Java

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. Upgrade your Java SDK to the latest version.
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).

#### Node.js

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. Upgrade your Node SDK to the latest version.
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).

#### Go

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. Upgrade your Go SDK to the latest version.
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).

#### .NET

1. [View your current API version](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) in Workbench.
2. Upgrade your .NET SDK to the latest version.
3. Upgrade the API version used for [webhook endpoints](https://docs.stripe.com/webhooks/versioning.md).
4. [Test your integration](https://docs.stripe.com/testing.md) against the new version.
5. If you use Connect, [test your Connect integration](https://docs.stripe.com/connect/testing.md).
6. In Workbench, [perform the upgrade](https://docs.stripe.com/upgrades.md#perform-the-upgrade). You can [roll back the version](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) for 72 hours.

Learn more about [Stripe API upgrades](https://docs.stripe.com/upgrades.md).
