In this series, you’ll learn all about Stripe Connect, the set of Stripe APIs and tools for building a platform or marketplace to route payments between multiple parties.
If you’re using Stripe Connect, you’ll need to create an account (called a "connected account") for each user who collects payments with (or accepts payouts from) your platform. You’ll do this every time a user signs up for your platform. The type of account you choose for your user will determine the development work required for the Stripe integration you need to build (options range from Stripe-hosted to completely custom) and what operational responsibilities you’ll have (like handling chargebacks and supporting your users). It’s possible to mix and match account types for your platform if you are solving for different use-cases or segments. There are three account types to choose from with Connect, each designed for different needs: Standard, Express, and Custom. We’ll first compare and contrast the integration effort and operational overhead, then close with some recommendations.
💰 Keep in mind, there is an additional cost for using Express or Custom account types.
Integration effort
When it comes to integration effort, Standard and Express accounts are the most straightforward options with Standard accounts requiring the least amount of work to integrate. However, if you want more control over the user experience, you may want to consider Custom accounts. While Custom accounts allow you to whitelabel the entire experience, they require significantly more development effort to implement.
Here are more details about the integration requirements for each account type:
Onboarding
Stripe-hosted onboarding supports all account types. The hosted onboarding integration requires at least two API calls.
-
Create a connected Account. Note that you can pre-populate many account details if you like the user’s website, support phone number, mailing address, etc. that way, they don’t need to re-enter those details when onboarding.
const account = await stripe.accounts.create({type: 'standard'});
-
Create an Account Link that redirects the user through the Stripe hosted onboarding flow:
const accountLink = await stripe.accountLinks.create({ account: account.id, refresh_url: 'https://example.com/reauth', return_url: 'https://example.com/return', type: 'account_onboarding', }); // redirect to accountLink.url
Connect Onboarding makes it easy to onboard merchants to your platform by providing conversion-optimized, pre-built user interfaces. This means you can easily get your merchants set up without having to worry about the complexity of building your own identity verification and onboarding flows. Plus, Connect Onboarding helps you minimize compliance and operational issues.
I recommend using Connect Onboarding for all account types. It’s worth calling out that you can technically build your own custom onboarding flow for Custom accounts and use the API to update details about the account and check for a list of additional verification requirements. Localizing a custom form and nailing all of the identity verification flows for multiple countries is quite a heavy lift so unless you have significant engineering resources, I would default to using Connect Onboarding.
Automatic updates for new compliance requirements
Global compliance requirements and rules do change over time. For Standard and Express accounts, Stripe will proactively reach out and collect information about your accounts whenever requirements change.
If you’re using Custom account types with a bespoke onboarding flow and haven’t integrated with Connect Onboarding, you’ll need to invest development resources to make updates as compliance requirements change over time. However, if you use Connect Onboarding for Custom accounts, you can easily collect onboarding and verification information from your users and save yourself the hassle of constantly updating your onboarding form. Plus, Connect Onboarding can help you stay up-to-date with the latest compliance requirements without any extra effort on your part. Just make sure to follow best practices for communicating changes to your users, as outlined in the guide for Custom accounts.
Integration effort is one the most heavily weighted factors when deciding which Stripe Connect account type to choose. Most startup and growth companies have the bandwidth and resources to implement and maintain Standard and Express accounts. If you don’t have a team of engineers to dedicate significant bandwidth to maintaining a Custom integration, I recommend Standard or Express.
Operational responsibilities
Another important consideration is who handles the operational responsibility day to day. For instance, are you the platform liable for fraud and disputes related to payments for a connected account? What type of dashboard can the connected account access to view payments, issue refunds, handle disputes, and update their information? Who is responsible for supporting connected account users when questions arise? Some of the following details differ depending on the charge type (direct vs destination) which we’ll cover in another article. Just know that one charge type may have different operational requirements than another charge type.
Fraud and dispute liability
If you’re trying to decide between Standard and Express accounts, this is likely the tie breaker.
For Standard accounts, the connected account owner (your user) is responsible for dealing with fraud and disputes*. For Express and Custom accounts, you as the platform are ultimately responsible for dealing with fraud and disputes.
Understanding the dispute process and how to handle fraud is part of any online business. Standard accounts are more suited for experienced online businesses, whereas Express accounts are ideal for businesses at any level of experience.
*this may shift depending on the charge type used.
Dashboard access
Standard accounts are conventional Stripe accounts where the account holder (your user) is able to log in to the Dashboard and can process charges on their own. If you want to obfuscate the relationship between the connected account holder and their end user for any reason, Standard is likely not a good fit.
Express accounts can only use the Express Dashboard, a simplified Stripe-hosted interface. From the Express Dashboard, your users can view their available balance, see upcoming payouts, and track their earnings in real time. The Express Dashboard does not have all of the same features as the Standard Dashboard.
Custom accounts do not have access to a Stripe-hosted dashboard. You’ll need to build custom interfaces into your application for your users to handle any operational tasks related to running their business.
User support
All support questions about a Custom connected account are handled by you, the platform. For Standard and Express accounts, some questions can be answered by Stripe and others will be handled by the platform. For instance, as identity verification requirements shift and change, Stripe will proactively reach out to your users to ensure the information on file stays compliant with local regulations.
Recommendations
Absent a compelling reason for a bespoke integration and lots of resources to build and maintain a Custom Connect integration, I would default to either Standard or Express. Assuming the platform I’m building is open to handling fraud and disputes, the platform decision between Standard and Express comes down to the relationship I expect users to have with end customers. Will my users, the owners of the connected accounts, need a long standing relationship with their customers or will their relationship be one-off, and transactional in nature? If so, do I expect my customer base to be savvy enough (or teachable enough) to handle fraud and disputes and trusted with the ability to charge the end customer manually. If I’m working with online business savvy folks who maintain long-running relationships with their end customers, I’d choose Standard. If I’m working with any internet user who has a one-off relationship with end customers or if I want to prevent them from charging end customers, then I’d lean towards Express.
About the author
CJ Avilla (@cjav_dev) is a Developer Advocate at Stripe, a Ruby on Rails developer, and a YouTuber. He loves learning and teaching new programming languages and web frameworks. When he’s not at his computer, he’s spending time with his family or on a bike ride 🚲.
Top comments (1)
Hey there.
I am building a booking system where my users will have properties with accommodations. The guests will be charged when making a booking. I will implement stripe connect in order to charge the guests the booking price and then send the money to the users.
I see in the stripe docs there are 2 ways of doing so:
Which one is the best for my use case?
What are the main things the connected account can do in each case?
What should I take into account if I choose one or the other?
Can I move from one to another later?