# Updates the process for configuring future usage in the Payment Element ## What’s new Adds support for setting `setup_future_usage` on a `PaymentIntent` or [Payment Element](https://docs.stripe.com/payments/payment-element.md) instead of setting `payment_method_save_usage` when you enable `payment_method_save` on the `CustomerSession`’s [components.payment_element.features](https://docs.stripe.com/api/customer_sessions/create.md?api-version=2026-03-25.dahlia#create_customer_session-components-payment_element-features) hash. You can set the top-level `setup_future_usage` property and payment method-specific overrides in `payment_method_options`. Also, removes the ability to set both `payment_method_save_usage` and `setup_future_usage`. Attempting to set both returns an `IntegrationError`. Previously, enabling `payment_method_save` required that you set `payment_method_save_usage`, and conflicts between `payment_method_save_usage` and `setup_future_usage` were possible. ## Why is this a breaking change? If your integration sets both `payment_method_save_usage` on the `CustomerSession` and `setup_future_usage` on the `PaymentIntent` or Payment Element, it now returns an `IntegrationError` on render. You need to [update your code](https://docs.stripe.com/payments/save-during-payment.md?payment-ui=elements#save-payment-methods) to only set `payment_method_save_usage` or `setup_future_usage`, not both, for any given `CustomerSession`. In addition, enabling `payment_method_save` on the `CustomerSession` no longer requires that you set `payment_method_save_usage` on the `CustomerSession`. You can provide either `payment_method_save_usage` or `setup_future_usage`. ## Impact When you enable `payment_method_save` for a `CustomerSession`, you now have the option of setting future usage to `on_session` or `off_session` on the `PaymentIntent` or Payment Element instead of on the `CustomerSession`. However, to avoid conflicts, you can no longer set it in both places. If your integration sets both `payment_method_save_usage` and `setup_future_usage` (either top-level or in `payment_method_options`), you need to update your code to follow one of these approaches: - **Use payment\_method\_save\_usage**: Set `payment_method_save_usage` on the `CustomerSession`. Don’t set `setup_future_usage` on the `PaymentIntent` or `setupFutureUsage` in `stripe.elements()`, either top-level properties or payment method-specific values in `paymentMethodOptions` or `payment_method_options`. - **Use setup\_future\_usage**: Set `setup_future_usage` on the `PaymentIntent` or `setupFutureUsage` in `stripe.elements()`. You can set the top-level properties or payment method-specific values in `paymentMethodOptions` or `payment_method_options`. Don’t set `payment_method_save_usage` on the `CustomerSession`. If you enable `payment_method_save`, you no longer have to set `payment_method_save_usage`. However, if you don’t provide it, you must configure future usage on the `PaymentIntent` or Payment Element. ## Related changes - [Changes the Address Element state field to default to Latin-formatted characters](https://docs.stripe.com/changelog/dahlia/2026-03-25/address-element-getvalue-and-change-event-formatting.md) - [Updates the elements.update() method to return a Promise](https://docs.stripe.com/changelog/dahlia/2026-03-25/elements-update-returns-promise.md) - [Removes support for boolean values in options.layout.radios](https://docs.stripe.com/changelog/dahlia/2026-03-25/disallow-booleans-for-radios.md) - [Removes deprecated Payment Intents, Setup Intents, and Sources methods from Stripe.js](https://docs.stripe.com/changelog/dahlia/2026-03-25/remove-legacy-stripejs-methods.md) - [Renames Checkout initialization method](https://docs.stripe.com/changelog/dahlia/2026-03-25/rename-init-checkout-to-init-checkout-elements.md) - [Renames Embedded Checkout initialization method](https://docs.stripe.com/changelog/dahlia/2026-03-25/rename-init-embedded-checkout-to-create-embedded-checkout-page.md)