# Customize the submit button recurring Payment Links and Checkout Sessions

## What’s new

You can now [customize the submit button](https://docs.stripe.com/payments/checkout/custom-components.md#submit-button) for [Checkout Sessions](https://docs.stripe.com/api/checkout/sessions.md?api-version=2024-11-20.acacia) and [Payment Links](https://docs.stripe.com/api/payment-link.md?api-version=2024-11-20.acacia) with recurring items.

We added support for the [submit_type](https://docs.stripe.com/api/checkout/sessions/create.md?api-version=2024-11-20.acacia#create_checkout_session-submit_type) parameter when you create a Session where the [mode](https://docs.stripe.com/api/checkout/sessions/create.md?api-version=2024-11-20.acacia#create_checkout_session-mode) is set to `subscription`. This change also includes support for making updates to the `submit_type` on existing Payment Links.

## Impact

Users can now [customize the behavior of Checkout](https://docs.stripe.com/payments/checkout/custom-components.md?payment-ui=embedded-page#submit-button) to use `donate` as the text for the submit button for recurring payments.

## Changes

#### REST API

| Parameter | Change | Resources or endpoints |
| --- | --- | --- |
| `submit_type` | Added | [PaymentLink#update](/api/payment-link/update?api-version=2024-11-20.acacia) |

| Value | Change | Enums |
| --- | --- | --- |
| `subscribe` | Added | [Checkout.Session#create.submit_type](/api/checkout/sessions/create?api-version=2024-11-20.acacia#create_checkout_session-submit_type), [Checkout.Session.submit_type](/api/checkout/sessions/object?api-version=2024-11-20.acacia#checkout_session_object-submit_type), [PaymentLink#create.submit_type](/api/payment-link/create?api-version=2024-11-20.acacia#create_payment_link-submit_type), [PaymentLink.submit_type](/api/payment-link/object?api-version=2024-11-20.acacia#payment_link_object-submit_type) |

#### Ruby

This change does not affect the Ruby SDK.

#### Python

| Parameter | Change | Resources or methods |
| --- | --- | --- |
| `submit_type` | Added | [stripe.PaymentLink.ModifyParams](/api/payment-link/update?api-version=2024-11-20.acacia) |

| Value | Change | Enums |
| --- | --- | --- |
| `subscribe` | Added | [stripe.checkout.Session.submit_type](/api/checkout/sessions/object?api-version=2024-11-20.acacia#checkout_session_object-submit_type), [stripe.checkout.Session.CreateParams.submit_type](/api/checkout/sessions/create?api-version=2024-11-20.acacia#create_checkout_session-submit_type), [stripe.PaymentLink.submit_type](/api/payment-link/object?api-version=2024-11-20.acacia#payment_link_object-submit_type), [stripe.PaymentLink.CreateParams.submit_type](/api/payment-link/create?api-version=2024-11-20.acacia#create_payment_link-submit_type) |

#### PHP

| Value | Change | Enums |
| --- | --- | --- |
| `subscribe` | Added | [Checkout.Session.submit_type](/api/checkout/sessions/object?api-version=2024-11-20.acacia#checkout_session_object-submit_type), [PaymentLink.submit_type](/api/payment-link/object?api-version=2024-11-20.acacia#payment_link_object-submit_type) |

#### Java

| Parameter | Change | Resources or methods |
| --- | --- | --- |
| `submit_type` | Added | [PaymentLinkUpdateParams](/api/payment-link/update?api-version=2024-11-20.acacia) |

| Value | Change | Enums |
| --- | --- | --- |
| `subscribe` | Added | [PaymentLinkCreateParams.submit_type](/api/payment-link/create?api-version=2024-11-20.acacia#create_payment_link-submit_type), [checkout.SessionCreateParams.submit_type](/api/checkout/sessions/create?api-version=2024-11-20.acacia#create_checkout_session-submit_type) |

#### Node.js

| Parameter | Change | Resources or methods |
| --- | --- | --- |
| `submit_type` | Added | [PaymentLinkUpdateParams](/api/payment-link/update?api-version=2024-11-20.acacia) |

| Value | Change | Enums |
| --- | --- | --- |
| `subscribe` | Added | [Checkout.Session.submit_type](/api/checkout/sessions/object?api-version=2024-11-20.acacia#checkout_session_object-submit_type), [Checkout.SessionCreateParams.submit_type](/api/checkout/sessions/create?api-version=2024-11-20.acacia#create_checkout_session-submit_type), [PaymentLink.submit_type](/api/payment-link/object?api-version=2024-11-20.acacia#payment_link_object-submit_type), [PaymentLinkCreateParams.submit_type](/api/payment-link/create?api-version=2024-11-20.acacia#create_payment_link-submit_type) |

#### Go

| Parameter | Change | Resources or methods |
| --- | --- | --- |
| `SubmitType` | Added | [PaymentLinkParams](/api/payment-link/object?api-version=2024-11-20.acacia) |

| Value | Change | Enums |
| --- | --- | --- |
| `subscribe` | Added | [CheckoutSessionSubmitType](/api/checkout/sessions/object?api-version=2024-11-20.acacia#checkout_session_object-submit_type), [PaymentLinkSubmitType](/api/payment-link/object?api-version=2024-11-20.acacia#payment_link_object-submit_type) |

#### .NET

| Parameter | Change | Resources or methods |
| --- | --- | --- |
| `SubmitType` | Added | [PaymentLinkUpdateOptions](/api/payment-link/update?api-version=2024-11-20.acacia) |

## 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: 2024-11-20.acacia`
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 [v13.2.0](https://github.com/stripe/stripe-ruby/releases/tag/v13.2.0)
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 [v11.3.0](https://github.com/stripe/stripe-python/releases/tag/v11.3.0)
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 [v16.3.0](https://github.com/stripe/stripe-php/releases/tag/v16.3.0)
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 [v28.1.0](https://github.com/stripe/stripe-java/releases/tag/v28.1.0)
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 [v17.4.0](https://github.com/stripe/stripe-node/releases/tag/v17.4.0)
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 [v81.1.0](https://github.com/stripe/stripe-go/releases/tag/v81.1.0)
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 [v47.1.0](https://github.com/stripe/stripe-dotnet/releases/tag/v47.1.0)
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).

## Related changes

- [Adds support for enabling Adaptive Pricing per Checkout Session](https://docs.stripe.com/changelog/acacia/2024-11-20/adaptive-pricing-param.md)
- [Adds support for advanced card features on Checkout Sessions](https://docs.stripe.com/changelog/acacia/2024-11-20/advanced-card-features.md)
- [Allows Link card-only integrations to accept non-card payments under Link card brand](https://docs.stripe.com/changelog/acacia/2024-11-20/link-card-brand.md)
- [Adds additional beneficiary information for bank transfer payments](https://docs.stripe.com/changelog/acacia/2024-11-20/new-bank-transfer-beneficiary-information.md)
