Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

EUR Bank Transfers migration guide for Standard Connect accounts


Deprecated

EUR Bank Transfers migration guide for Standard Connect accounts Deprecated

Deprecated

We deprecated the Sources API and plan to remove support for local payment methods. If you currently integrate with ACH Credit Transfers, you must migrate to the Payment Methods API.

For information about migrating to USD Bank Transfer supported by the current APIs, refer to the documentation below.

Reasons to migrate

If your Connect platform integrates with Standard connected accounts using the related setting Credit Transfers, you can migrate to EUR Bank Transfers. EUR Bank Transfers allows your connected accounts to benefit from the most up-to-date bank transfer functionality. Learn more about the functionality we added to EUR Bank Transfers.

Impact of not migrating

Stripe plans to disable support for local payment methods in the Sources API. If you currently handle any local payment methods using the Sources API, you must migrate them to the Payment Methods API. We’ll provide further information about this end of support through email notifications.

If you don’t migrate to Bank Transfers, Stripe takes measures to prevent any compatibility issues with your connected accounts:

  • Users who are currently connected to your platform have two VBANs (one from the related setting Credit Transfer and another from EU Bank Transfers) when they upgrade the customer to use EU Bank Transfers.
  • These users communicate the change in the related setting to their end customers if they interact directly with the customer using EUR Bank Transfer on PaymentIntents and PaymentMethods, or Billing.

After migrating to Bank Transfers, Stripe issues new bank account information for each of your existing users. You must communicate this change to your users to start sending funds to the new bank account. To make the transition smooth, we’ve added functionality to handle cases where your customer accidentally transfers funds into the existing the related setting CT bank account.

Before you begin

  • Confirm that you’re using the legacy the related setting Credit Transfers product. See the Before you begin section for the Migrate from the Sources API guide.
  • To confirm that you’re currently using Connect with Standard connected accounts, go to the Connected accounts page and filter by account type. If your live mode account list includes Standard accounts with status Enabled, then you’re using Standard Connect.
  • To confirm that you’re using direct charges on Standard Connect, verify the following:
  • If you’re using the API to create charges, the request includes the connected account ID as part of the Stripe-Account header.
  • You create charges on the connected account rather than your Stripe account.
  • The funds from these charges (minus Stripe’s fees) are directly available in the connected account’s balance.
  • If you’re not using the related setting Credit Transfers with direct charges for Standard connected accounts, this guide doesn’t apply to you. If you’re using the related setting Credit Transfers in other Connect configurations, see Migrating from Sources-based Credit Transfers.

Migrate to the Bank Transfers integration

You can build a Bank Transfers integration alongside your existing the related setting Credit Transfer integration. Use the new integration to migrate all the existing the related setting Credit Transfer customers of your connected accounts to the new payment method.

Create a test Standard connected account

Create a Standard connected account in a sandbox for the purpose of testing the new integration.

Build a Bank Transfers integration using the Sources API

  1. Create a test customer: Use the Accounts v2 API to represent customers The Accounts v2 API is generally available for Connect users, and in public preview for other Stripe users. If you’re part of the Accounts v2 preview, you need to specify a preview version in your code. To join the Accounts v2 preview, go to Account previews and features in your Dashboard and enable Reusable payment methods for Global Payouts. For most use cases, we recommend modeling your customers as customer-configured Account objects instead of using Customer objects. Command Line Select a language cURL Stripe CLI Ruby Python PHP Java Node.js Go.NET No results curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer sk_test_BQokikJOvBiI2HlWgH4olfQ2" \ -H "Stripe-Version: 2026-08-26.preview" \ -H "Stripe-Account: {{the related setting}}" \ --json '{ "contact_email": "", "display_name": "Jenny Rosen", "configuration": { "customer": {} }, "include": [ "configuration.customer"] }'
  2. Create a the related setting Credit Transfer source and attach it to the customer: Complete the steps in the integration guide of the related setting Credit Transfer. Make sure to pass the Stripe-Account header in the API requests that create and attach the source to the customer. Save the bank details of the Source from the sepa_credit_transfer field of the object to refer to later.
  3. Create and confirm a PaymentIntent: At this point, you can create and confirm a bank transfers PaymentIntent on the customer object of the connected account following the respective step in the Accept a payment guide. You must pass the Stripe-Account header to create the PaymentIntent on the customer of the connected account. Creating a customer_balance PaymentIntent in a sandbox always succeeds. However, in live mode, direct charges require the connected account itself (not the platform) to activate Bank Transfers. Therefore, before creating the PaymentIntent on the connected account, the platform must use the sepa_bank_transfer_payments capability to determine whether this is the case. If Bank Transfers isn’t activated, your integration logic might revert to the legacy the related setting Credit Transfer payment method. Accounts v2 considerations To determine whether Bank Transfers are activated for a customer-configured Account, pass the Account ID instead of the Customer ID. server.py import stripe # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2" def funding_instructions(connected_account: str, customer: stripe.Customer) -> dict: bank_transfer_payments_capability = stripe.Account.retrieve_capability( connected_account, "sepa_bank_transfer_payments",) if bank_transfer_payments_capability["status"] == "active": pi = stripe.PaymentIntent.create( stripe_account=connected_account, amount=1099, currency="eur", customer=customer["id"], payment_method_types=["customer_balance"], automatic_payment_methods={"enabled": True} payment_method_data={ "type": "customer_balance", }, confirm=True,) return pi.next_action["display_bank_transfer_instructions"] else: source = stripe.Source.retrieve( stripe_account=connected_account, id=customer["default_source"]) return source["sepa_credit_transfer"]
  4. Confirm that the integration works: After you complete these steps, the customer of the connected account has been successfully migrated.
  • After you test and confirm that the integration works , check if the bank details of the Credit Transfer Source have been migrated.
  • Navigate to the customer details page in the Dashboard, and then expand the EUR Cash balance dropdown.
  • The bank details of the cash balance must be different from the ones you obtain from the Source in the sepa _ credit _ transfer field.

Contact Stripe

After you build, test, and deploy your integration to production, and successfully serve live traffic, reach out to Stripe to let us know that your integration is compatible with Bank Transfers. We’ll make sure that your integration is working as expected and perform any clean ups required on your connected accounts.

See also

Migrating from Sources-based Credit Transfers

Last verified 2026-09-24

Is this helpful?