# Fix the payment_method_types error

Requests to the PaymentIntents, SetupIntents, and Checkout Sessions APIs that include `payment_method_types` will fail. Remove the field and turn on the payment methods you want in the **Payment methods settings** of the [Dashboard](https://dashboard.stripe.com/settings/payment_methods).
## Why you see this error
A request that includes `payment_method_types` returns a 400 error:
> The `payment_method_types` parameter is no longer supported. Payment methods
are now managed from your Dashboard settings
(https://dashboard.stripe.com/settings/payment_methods). For migration guidance, see
https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.
This applies to API version 2026-09-30.endive and later. Earlier versions accept the
parameter, so you see this error after upgrading.
`payment_method_types` remains a read-only field in the response, listing the payment methods Stripe resolved for the payment. Code that reads it keeps working. Only sending it fails.
## Remove payment_method_types
1. Go to [Payment methods settings](https://dashboard.stripe.com/settings/payment_methods) and click **Turn on** next to each payment method you want to accept. Some payment methods need additional information before they activate. If you're a platform, read about [managing payment methods for connected accounts](https://docs.stripe.com/connect/manage-payment-methods).
1. Remove `payment_method_types` from your integration code.
1. If you confirm PaymentIntents or SetupIntents on your server, add a `return_url`. Removing `payment_method_types` makes redirect-based payment methods eligible, and confirming one without a `return_url` fails. Payments that use `off_session` don't need one. To keep them ineligible instead, set `automatic_payment_methods[allow_redirects]` to `never`. Read about [server-side confirmation](https://docs.stripe.com/upgrades/manage-payment-methods#server-side-confirmation). If you confirm them in the browser with Stripe.js, you typically pass a [return_url](https://docs.stripe.com/js/payment_intents/confirm_payment#confirm_payment_intent-options-confirmParams-return_url) already. Checkout Sessions handle the return flow for you.
Terminal is an exception: in-person payments use `card_present`, which isn't managed in Dashboard settings. Pass `card_present` in `allowed_payment_method_types` instead of `payment_method_types`.
Read about [dynamic payment methods](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods) and how to activate a new payment method.
## How Stripe chooses which payment methods to show
When you manage payment methods from the Dashboard, Stripe shows the payment methods that fit each payment:
- You add or remove a payment method in the Dashboard without changing code.
- Stripe filters out payment methods that don't support the payment's currency, amount, country, capture method, or `setup_future_usage`, so you don't maintain that logic yourself.
- Stripe orders the eligible payment methods for each customer.
- You can use payment method rules, payment method configurations, and A/B testing.
To check whether a payment method appears for a payment, enter a transaction ID or an amount and currency on the [payment methods review](https://dashboard.stripe.com/settings/payment_methods/review) page. For the full list of criteria, read [how dynamic payment methods work](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods#how-it-works).
## Control which payment methods appear
The following options add control on top of the Dashboard settings. The first three keep your payment methods managed in the Dashboard.
### Use a different set of payment methods for certain payments
Create a [payment method configuration](https://docs.stripe.com/payments/payment-method-configurations) for each scenario, such as one set of payment methods for one-time payments and another for subscriptions. Pass the configuration ID on the payment to choose between them.
### Show or hide a payment method based on amount or location
Set [payment method rules](https://docs.stripe.com/payments/payment-method-rules) in the Dashboard, such as showing a payment method only above a minimum amount, or hiding it for customers outside a country. Rules apply to non-card payment methods.
### Exclude a payment method from a single payment
Pass [excluded_payment_method_types](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods#exclude-payment-methods) to leave a payment method out of one payment while keeping it available for the rest. To control Apple Pay, Google Pay, or Link for a single payment, use the wallet settings for your integration instead.
### Set an explicit list of payment methods
If none of the options above work, pass `allowed_payment_method_types` with the payment methods you accept. This opts the payment out of Dashboard-managed payment methods: a payment method you turn on later doesn't appear until you change code. Stripe filters your list to the payment methods compatible with the payment and returns them in the response's `payment_method_types` field. You can't combine it with `excluded_payment_method_types`, `automatic_payment_methods`, or `payment_method_configuration`.