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
| Page | Description |
|---|---|
| Cards | Credit and debit card processing |
| Buy Now Pay Later | Affirm, Klarna, Afterpay, and more |
| Wallets | Apple Pay, Google Pay, PayPal |
| Bank Debits | ACH, SEPA, BACS, and other direct debits |
| Bank Transfers | Push payment bank transfers |
| Stablecoins | Crypto 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,
});Dynamic payment methods (Recommended)
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 method | When you know if payment succeeded |
|---|---|
| Cards | Immediately |
| Wallets (Apple Pay, Google Pay) | Immediately |
| ACH Direct Debit | 1-5 business days |
| SEPA Direct Debit | 3-7 business days |
| Bank transfers | Varies |
For delayed methods, always use webhooks — don't rely on redirect URLs.
Reusable vs single-use
| Type | Examples | Can save for future? |
|---|---|---|
| Reusable | Cards, bank debits | Yes |
| Single-use | Some bank transfers | No |
Set up reusable payment methods for future use to reduce future declines and friction.
PaymentIntent webhook events
| Event | Description |
|---|---|
payment_intent.processing | Submitted, waiting for confirmation (delayed methods) |
payment_intent.succeeded | Payment complete — fulfill the order |
payment_intent.payment_failed | Payment failed — request another method |