Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
OverviewAccept a paymentUpgrade your integration
Online payments
OverviewFind your use case
Use Payment Links
Build a payments page
Build a custom integration with Elements
Build an in-app integration
Use Managed Payments
Recurring payments
In-person payments
Terminal overview
Availability
Readers
No code
Custom integration
Payment methods
Add payment methods
    Overview
    Payment method integration options
    Manage default payment methods in the Dashboard
    Payment method types
    Cards
    Pay with Stripe balance
    Stablecoin payments
    Bank debits
    Bank redirects
    Bank transfers
    Meal vouchers
    Credit transfers (Sources)
    Buy now, pay later
    Real-time payments
    Vouchers
    Wallets
    Gift cards
    Special regional requirements
    Custom payment methods
Manage payment methods
Faster checkout with Link
Payment operations
Analytics
Balances and settlement time
Compliance and security
Currencies
Declines
Disputes
Radar
Payouts
ReceiptsRefunds and cancellations
Advanced integrations
Custom payment flows
Flexible acquiring
Off-Session Payments
Multiprocessor orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Financial Connections
Climate
Verify identities
United States
English (United States)
  1. Home/
  2. Payments/
  3. Add payment methods

Manage default payment methods in the Dashboard

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.

Payment methods

By default, Stripe enables cards and other common payment methods. You can turn individual payment methods on or off in the Stripe Dashboard. In Checkout, Stripe evaluates the currency and any restrictions, then dynamically presents the supported payment methods to the customer.

To see how your payment methods appear to customers, enter a transaction ID or set an order amount and currency in the Dashboard’s payment methods review page.

Checkout supports Apple Pay and Google Pay with no integration changes. Learn how to test wallets.

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
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -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
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -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 aren’t eligible.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -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 allowed_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
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -d amount=1099 \ -d currency=usd \ -d confirm=true \ -d "payment_method=
{{PAYMENT_METHOD_ID}}
" \ -d "allowed_payment_method_types[]=card"
Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Chat with Stripe developers on Discord.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc