Skip to content

Payment Methods Fresh

The Payment Methods API allows you to accept a variety of payment methods through a single API. A PaymentMethod object contains payment method details used to create payments.

In this section

PageDescription
CardsCredit and debit card processing
Buy Now Pay LaterAffirm, Klarna, Afterpay, and more
WalletsApple Pay, Google Pay, PayPal
Bank DebitsACH, SEPA, BACS, and other direct debits
Bank TransfersPush payment bank transfers
StablecoinsCrypto stablecoin payments

Use with Payment Intents

Combine a PaymentMethod with a PaymentIntent to accept payments:

javascript
const paymentIntent = await stripe.paymentIntents.create({
  amount: 2000,
  currency: 'usd',
  payment_method: 'pm_card_visa',
  confirm: true,
});

Or with a SetupIntent to save for later:

javascript
const setupIntent = await stripe.setupIntents.create({
  customer: 'cus_123',
  payment_method: 'pm_card_visa',
  confirm: true,
});

Instead of specifying payment methods manually, use dynamic payment methods. Stripe automatically shows the most relevant payment options for each customer based on their location, device, and transaction:

javascript
// No payment_method_types needed — Stripe handles it
const session = await stripe.checkout.sessions.create({
  line_items: [{ price: 'price_1234', quantity: 1 }],
  mode: 'payment',
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
});

Manage which payment methods are enabled in Dashboard → Settings → Payment Methods.

Immediate vs delayed notification

Payment methodWhen you know if payment succeeded
CardsImmediately
Wallets (Apple Pay, Google Pay)Immediately
ACH Direct Debit1-5 business days
SEPA Direct Debit3-7 business days
Bank transfersVaries

For delayed methods, always use webhooks — don't rely on redirect URLs.

Reusable vs single-use

TypeExamplesCan save for future?
ReusableCards, bank debitsYes
Single-useSome bank transfersNo

Set up reusable payment methods for future use to reduce future declines and friction.

PaymentIntent webhook events

EventDescription
payment_intent.processingSubmitted, waiting for confirmation (delayed methods)
payment_intent.succeededPayment complete — fulfill the order
payment_intent.payment_failedPayment failed — request another method

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18