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
Get started
About Stripe payments
Start an integration
Payment Links
Checkout
Web Elements
Mobile Elements
Payment scenarios
During the payment
After the payment
Add payment methods
More payment scenarios
Faster checkout with Link
Other Stripe products
Connect
Terminal
Radar
Financial Connections
Crypto
Identity
Climate
Resources
About the APIs
    API tour
    Payment Intents API
    Setup Intents API
    Payment Methods
    Older APIs
      Charges
      Sources
        Transition to the new APIs
        Card Sources
        Sources and customers
        ACH Direct Debit
        Connect platforms
        Best practices
        iOS
        Android
Implementation guides
Regulation support
Testing
HomePaymentsOlder APIsSources

Transition to the Payment Methods API

Learn the differences between Sources and Tokens as compared to the Payment Methods API.

The Payment Methods API replaces the existing Tokens and Sources APIs as the recommended way for integrations to collect and store payment information. It works with the Payment Intents API to create payments for a wide range of payment methods.

Transitioning to the Payment Methods API

The main difference between the Payment Methods and Sources APIs is that Sources describes transaction state through the status property, which means that each Source object must be transitioned to a chargeable state before it can be used for a payment. In contrast, a PaymentMethod is stateless, relying on the PaymentIntent object to represent payment state.

We’re continually adding payment methods support on the Payment Methods API and don’t recommend using the deprecated Sources API.

FlowsPayment Methods with Payment Intents API Tokens or Sources with Charges API
CardsSupportedSupported on Tokens Not recommended on Sources
Dynamic 3D SecureSupportedNot supported
Card presentSupportedNot supported
ACH Direct DebitSupportedSupported on Tokens Not supported on Sources
ACH Credit TransferUSD Bank TransfersBeta
AffirmSupportedNot supported
Afterpay / ClearpaySupportedNot supported
AlipaySupportedNot supported
Bacs Direct DebitSupportedNot supported
BancontactSupportedNot suported
Bank Transfers (replacement for Credit Transfers)Supported in US, EU, GB, JP, and moreNot supported
BECS Direct Debit (Australia)SupportedNot supported
BLIKSupportedNot supported
BoletoSupportedNot supported
Canada PADsSupportedNot supported
EPSSupportedBeta
FPXSupportedNot supported
giropaySupportedSupported
GrabPaySupportedNot supported
iDEALSupportedSupported
KlarnaSupportedEOL December 2023
KonbiniSupportedNot supported
MultibancoPlannedBeta
OXXOSupportedNot supported
PayNowSupportedNot supported
PixSupportedNot supported
PromptPaySupportedNot supported
Przelewy24SupportedNot supported
SEPA Direct DebitSupportedSupported
SofortSupportedSupported
WeChat PaySupportedBeta

If your integration currently uses the Sources or Tokens API, follow the migration guide to transition to the Payment Intents and Payment Methods APIs.

When you have chosen the API to integrate against, our guide to payment methods may help you determine the right payment method types to support for your customers. This guide includes detailed descriptions of each payment method and describes the differences in the customer-facing flows, along with the geographic regions where they are most relevant. You can enable any payment method available to you within the Dashboard. Activation is generally instantaneous and does not require additional contracts nor include a lengthy process.

Compatibility with Sources and cards

If you previously collected customer payment details with Stripe using cards or Sources, you can start using the Payment Methods API immediately without migrating any payment information for payment types that are available on the Payment Methods API.

Compatible payment instruments that have been saved to a Customer are usable in any API that accepts a PaymentMethod object. For example, you can use a saved card as a PaymentMethod when creating a PaymentIntent:

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:
\ -d "payment_method_types[]"="card" \ -d "amount"=1099 \ -d "currency"="usd" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_method"="{{CARD_ID}}"

Remember to provide the customer ID that your compatible payment instrument is saved to when attaching the object to a PaymentIntent.

You can retrieve all saved compatible payment instruments through the Payment Methods API.

{ "id": "card_1EBXBSDuWL9wT9brGOaALeD2", "object": "card", "address_city": "San Francisco", "address_country": "US", "address_line1": "1234 Fake Street", "address_line1_check": null, "address_line2": null, "address_state": null, "address_zip": null,
{ "id": "card_1EBXBSDuWL9wT9brGOaALeD2", "object": "payment_method", "billing_details": { "address": { "city": "San Francisco", "country": "US", "line1": "1234 Fake Street", "line2": null, "postal_code": null,

Note that with this compatibility, no new objects are created; the Payment Methods API provides a different view of the same underlying object. For example, updates to a compatible payment instrument through the Payment Methods API is visible through the Sources API and vice versa.

For SEPA Direct Debit payments, you can reuse a SEPA source as a PaymentMethod by attaching it to a Customer object. Compatible SEPA sources must have a populated mandate hash with a non single_use interval.

See also

  • Guide to payment methods
  • Connect platforms using the Payment Methods API
  • Payment Methods API reference
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.
On this page
Transitioning to the Payment Methods API
Compatibility with Sources and cards
See also
Products Used
Payments
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.
$