Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management

EUR Bank Transfers migration guide for Standard Connect accounts

Learn how to migrate your SEPA Credit Transfer Standard Connect integration to EUR Bank Transfers.

Copy page

Warning

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

Account properties

Connected accounts can be configured with properties that determine how the account will behave. Account types can be mapped to their corresponding properties.
This content applies to connected accounts that have full Stripe Dashboard access. This includes Standard accounts.

If your Connect platform integrates with Standard connected accounts using SEPA 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 SEPA Credit Transfer and another from EU Bank Transfers) when they upgrade the customer to use EU Bank Transfers.
  • These users communicate the change in VBAN to their end customers if they interact directly with the customer using EUR Bank Transfer on PaymentIntents and PaymentMethods, or Billing.

Impact on the SEPA Credit Transfers customers of your connected accounts

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 SEPA CT bank account.

Before you begin

  • Confirm that you’re using the legacy SEPA 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, navigate 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 SEPA Credit Transfers with direct charges for Standard connected accounts, this guide doesn’t apply to you. If you’re using SEPA 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 SEPA Credit Transfer integration. Use the new integration to migrate all the existing SEPA 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:

    Command Line
    cURL
    curl https://api.stripe.com/v1/customers \ -u "
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :"
    \ -H "Stripe-Account:
    {{CONNECTED_ACCOUNT_ID}}
    "
    \ -d name="Jenny Rosen" \ --data-urlencode email="jenny.rosen@example.com"
  2. Create a SEPA Credit Transfer source and attach it to the customer:

    Complete the steps in the integration guide of SEPA 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 SEPA Credit Transfer payment method.

    server.py
    import stripe 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 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.

    After you complete these steps, the customer of the connected account has been successfully migrated.

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

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc