Skip to content
Sign in
An image of the Stripe logo
/
Create account
Sign in
Home
Payments
Finance automation
Banking as a service
Developer tools
No-code
All products
Home
Payments
Finance automation
Home
Payments
Finance automation
Banking as a service
Developer tools
Overview
Building your integration
Developer tools
SDKs
API
    API keys
    API upgrades
      Manage payment methods in the Dashboard by default
    Changelog
    Rate limits
    Automated testing
    Data availability
    Expanding responses
    Domains and IP addresses
    Search
    Error handling
    Error codes
Security
Sample projects
Videos
Stripe Apps
Stripe Connectors
Partners
HomeDeveloper toolsAPI upgrades

Manage payment methods in the Dashboard by default

Upgrade your API to manage payment methods in the Dashboard by default.

On August 16, 2023, Stripe updated the selection process for default payment methods that apply to PaymentIntents and SetupIntents created with the /v1/payment_intents and /v1/setup_intents APIs.

In prior versions of the Stripe API, if you didn’t specify a payment_method_types parameter during the creation request, Stripe would default to using the card payment method for both PaymentIntents and SetupIntents.

Moving forward, Stripe applies eligible payment methods that you manage from your Dashboard to your PaymentIntents and SetupIntents by default if you don’t specify the payment_method_types parameter in the creation request.

Update your payment flows

Choose from the upgrade path that matches your current Stripe integration:

If your integration uses Card Element or individual payment method Elements, we recommend migrating to the Payment Element. This single, unified integration allows you to accept over 25 different payment methods.

Create the PaymentIntent

In this version of the API, specifying the automatic_payment_methods.enabled parameter is optional. If you don’t specify it, Stripe assumes a value of true, which enables its functionality by default.

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d amount=1099 \ -d currency=usd

Client-side confirmations with Stripe.js

If your integration uses Stripe.js to confirm payments with confirmPayment or by payment method, your existing processes remains the same and requires no further changes.

When you confirm payments, we recommend that you provide the return_url parameter. This allows you to accept payment methods that require redirect.

checkout.js
const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ //`Elements` instance that was used to create the Payment Element elements, confirmParams: { return_url: 'https://example.com/return_url', }, }); if (error) { // This point will only be reached if there is an immediate error when // confirming the payment. Show error to your customer (for example, payment // details incomplete) const messageContainer = document.querySelector('#error-message'); messageContainer.textContent = error.message; } else { // Your customer will be redirected to your `return_url`. For some payment // methods like iDEAL, your customer will be redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } });

Server-side confirmation

If you use server-side confirmation, you must use the return_url parameter in your integration.

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d payment_method=
{{PAYMENT_METHOD_ID}}
\ --data-urlencode return_url="https://example.com/return_url"

Alternatively, you can create the PaymentIntent or SetupIntent with the automatic_payment_methods.allow_redirects parameter set to never. This disables the return_url requirement on confirmation. You can still manage payment methods from the Dashboard, but the payment methods that require redirects won’t be eligible.

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d payment_method=
{{PAYMENT_METHOD_ID}}
\ -d "automatic_payment_methods[enabled]"=true \ -d "automatic_payment_methods[allow_redirects]"=never

Lastly, you can create the PaymentIntent or SetupIntent with the payment_method_types parameter. This also disables the return_url requirement on confirmation. With this option, you can’t manage payment methods from the Dashboard.

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d payment_method=
{{PAYMENT_METHOD_ID}}
\ -d "payment_method_types[]"=card
Was this page helpful?
Need help? Contact Support.
Watch our developer tutorials.
Check out our product changelog.
Questions? Contact Sales.
Powered by Markdoc
You can unsubscribe at any time. Read our privacy policy.
Stripe Shell
Test mode
Welcome to the Stripe Shell! Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Log in to your Stripe account and press Control + Backtick (`) on your keyboard to start managing your Stripe resources in test mode. - View supported Stripe commands: - Find webhook events: - Listen for webhook events: - Call Stripe APIs: stripe [api resource] [operation] (e.g., )
The Stripe Shell is best experienced on desktop.
$