Payment Methods API

Learn more about the API that powers a range of global payment methods.

The Payment Methods API allows you to accept a variety of payment methods through a single API. A PaymentMethod object contains the payment method details to create payments. With the Payment Methods API, you can combine a PaymentMethod:

Supported payment methods

To determine which payment methods to use for specific locales, see the guide to payment methods, which includes available payment methods for different regions, a detailed description of each payment method’s characteristics, and the geographic regions where they are most relevant. You can enable any payment methods available to you in the Dashboard. Activation is generally instantaneous, and does not require additional contracts.

​​Payment methods function in one of two ways:

  • Some methods require additional action to complete the payment. For instance, some methods redirect customers to their online bank service for authentication.
  • Some banks immediately notify you when the payment is successful but some methods take several days to finalize a payment, whether successful or failed.

The Payment Methods API supports the following payment methods:

Immediate payment notification Delayed payment notification
No additional customer action Cards without 3D Secure

BECS Direct Debit

SEPA Direct Debit

Additional customer action

Cards with 3D Secure

FPX

iDEAL

Alipay (coming soon)

Bancontact

EPS

giropay

Klarna (coming soon)

Przelewy24

WeChat Pay (coming soon)

ACH Credit Transfer (coming soon)

ACH Debit with verification (coming soon)

Checks (coming soon)

Multibanco (coming soon)

Sofort (coming soon)

We are continually adding support for more payment methods on the Payment Methods API. In the meantime, you can use other payment methods with the Sources API.

Customer actions

​​Some payment methods require your customer to take additional steps to complete the payment. The PaymentIntent object’s next_action parameter specifies the type of customer action.

Some common actions that customers need to perform are:

  • ​​Redirect to their bank’s online service to authenticate and approve the payment.
  • Verify ownership of their account by providing a one-time code that you post to the Stripe API (e.g., microdeposits).
  • Push funds (e.g., in the case for bank transfers) through their bank’s online service.

Not all payment methods require additional customer actions. For example, card payments (excluding 3D Secure) require no additional authentication beyond collecting card details.

Immediate or delayed notification of payment success

Some payment methods immediately return payment status when a transaction is attempted (e.g., card payments) but other methods have a delay, such as ACH debits. For those that immediately return payment status, the PaymentIntent status either changes to succeeded or requires_payment_method. A status of succeeded guarantees that you will receive the funds from your customers.

Payment methods with delayed notification can’t guarantee payment during the delay. The status of the PaymentIntent object will be processing until the payment status is either successful or failed. It’s common for businesses to hold an order in a “pending” state during this time, not fulfilling the order until the payment is successful.

Single-use or reusable

You can reuse certain payment methods (e.g., cards or bank debits) for additional payments without authorizing and collecting payment details again. You can attach a reusable payment method to a Customer object to use it again in the future.

Single-use payment methods (e.g., iDEAL) can’t be attached to customers, because they are consumed after a payment attempt.

Use webhooks to track payment status

Use webhooks for payment methods that either require customer action or when payment notification is delayed. Stripe sends the following events when the PaymentIntent status is updated:

Event Description Next steps
payment_intent.processing The customer’s payment was submitted to Stripe successfully. Only applicable to payment methods with delayed notification. Wait for the initiated payment to succeed or fail.
payment_intent.succeeded The payment succeeded. Fulfill the purchased goods or services.
payment_intent.payment_failed The payment failed. ​​Send an email or push notification to request another payment method.

​​You can also use the following options instead of building a webhook handler to listen to events:

  • Manually track the status of payments in the Stripe Dashboard, if your business accepts a low volume of orders from payment methods with delayed notification. The Dashboard allows you to view all your Stripe payments, send email receipts, handle payouts, or retry failed payments.
  • Use polling (e.g., repeatedly retrieving a PaymentIntent so that you can check its status). Note that polling is significantly less reliable and may not work at scale. Stripe enforces rate limiting on API requests, so exercise caution if you use polling.
  • Use a partner application to handle common business events, like shipping and inventory management.

The PaymentMethod object

A PaymentMethod contains reusable payment method details for creating payments (e.g., card expiration date or billing address), it does not include transaction-specific information (e.g., amount, currency). A PaymentMethod is attached to a PaymentIntent to represent the states of a payment lifecycle. Each PaymentMethod has a type attribute (e.g., "type": "sepa_debit" ) and an additional hash whose name matches the type and contains information specific to the PaymentMethod type (e.g., "sepa_debit":{}). Example of a sepa_debit PaymentMethod object:

{ "id": "pm_123456789", "object": "payment_method", "billing_details": { "address": {...}, "email": "jenny@example.com", "name": "Jenny Rosen", "phone": "+335555555555" }, "sepa_debit": { "bank_code": "37040044", "branch_code": "94832", "country": "FR", "fingerprint": "ygEJfUjzWMGyWnZg", "last4": "3000" }, "type": "sepa_debit", (...) }

See also

Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.