Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp

Migrate from another processor

Migrate to PayTo from another payment processor or from AU BECS.

You must transfer existing mandates with customer re-authorization for migration. This applies to:

  • PayTo migrations from another payment provider
  • AU BECS to PayTo migrations

To migrate your customers to PayTo, you need to obtain new authorization from each customer by sending new PayTo agreements using Stripe APIs.

If you need to migrate a large number of customers, you can bulk send new PayTo agreements for authorization. If you have specific migration needs or questions about migrating a large number of customers, contact Stripe support to discuss your use case. The support team can provide guidance tailored to your migration scenario.

Notify customers about upcoming changes

Inform your customers about the migration before initiating the process. Include the following information:

  • They need to authorize a new payment agreement
  • The terms of the new payment agreement which need to match with the mandate_options you are going to specify on the SetupIntent
  • Your customer support contact details

Create PayTo agreements for migration

For each customer and bank account, create a new Customer object or retrieve an existing one to associate with the PayTo agreement.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Create and confirm a SetupIntent to initiate the PayTo agreement authorization flow.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/setup_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer={{CUSTOMER_ID}} \ -d confirm=true \ -d "payment_method_types[]"=payto \ -d "payment_method_data[type]"=payto \ -d "payment_method_data[payto][account_bsb]"={{BSB_NUMBER}} \ -d "payment_method_data[payto][account_number]"={{ACCOUNT_NUMBER}} \ -d "payment_method_options[payto][mandate_options][amount]"=1000 \ -d "mandate_data[customer_acceptance][type]"=online \ -d "mandate_data[customer_acceptance][online][ip_address]"="127.0.0.0" \ -d "mandate_data[customer_acceptance][online][user_agent]"=device

Alternatively, customers can authorize agreements using their PayID:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/setup_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer={{CUSTOMER_ID}} \ -d confirm=true \ -d "payment_method_types[]"=payto \ -d "payment_method_data[type]"=payto \ -d "payment_method_data[payto][pay_id]"={{PAY_ID}} \ -d "payment_method_options[payto][mandate_options][amount]"=1000 \ -d "mandate_data[customer_acceptance][type]"=online \ -d "mandate_data[customer_acceptance][online][ip_address]"="127.0.0.0" \ -d "mandate_data[customer_acceptance][online][user_agent]"=device

Customers receive an authorization request from their bank, typically through a push notification or email. They must approve the agreement to complete the migration. When the customer accepts or rejects the agreement, you receive mandate.updated event.

Retrieve and store new payment methods

Retrieve and store the PaymentMethod ID from the confirm SetupIntent response to use for future payments. You can also retrieve it by listing all PaymentMethods for the customer.

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