I intend to write this as a longer form post, but I have a bunch of discoveries and pitfalls about Stripe Connect and wanted to share them here first.
The most confusing part of Stripe are probably the charge and account types. You can do Standard, Express and Custom accounts. Do destination charges, direct charges, separate transfers. It's pretty mind-blowing.
My advice here is to spend some serious time on deciding which integration is best for you. It highly depends on your app and country. You should also try out the new recommendation feature, but don't trust it blindly.
In short:
If you offer an integration that allows Stripe accounts to have some control (Standard), you will also get all their webhooks, not only the ones from charges/subscriptions created by you.
If you run webhooks for your connected accounts (which today is almost a must), you need to verify that the IDs match with your own system. If not, they may be coming from another connected app.
Stripe Connect is continuously rolling out in new countries. To help you with onboarding, Stripe is even offering an API endpoint with available countries. But, beware! Available doesn't equal available.
India-based Connect accounts are not able to do cross-border transactions, for example. Mexico-based Stripe connect accounts can often not be connected without an extended security check.
If you are rolling out internationally, I'd always recommend to do so opt-in. Listen for updates from Stripe, enable the location locally, enroll people on it and see whether it works out!
Is there really no way to know if a country works properly outside of testing it manually? I would think there would be a list somewhere or someway to know in the API what each country's connect capabilities are.
You can check on an account-level which capabilities and functions are enabled. You're looking at things like "cross-border transfers" to make sure you can work with them.
But yes, in many cases it's a thing of "getting your first prod error" 😅
"You can check on an account-level which capabilities and functions are enabled"
Hey sorry, can you elaborate? Do you mean set up a connect account in each country and then check for which capabilities and functions are enabled on each? If so where do I check for these capabilities? In the api or dashboard?
Hey! We actually check this live with customers that connect with us. So right after someone connects their account, we ping this API.
https://stripe.com/docs/api/accounts/object#account_object-capabilities
You'd want to check that capabilities.card_payments and charges_enabled is true. This is not only country dependent, but also e.g. if they need to do additional ID verification.
I think you also see this on your dashboard.
very cool! didn't know about that end point
Hey @dqmonn! thanks for posting... I'm trying to start a SaaS company and agree on some of the confusing part of Connect. I'm having trouble on some parts of using the Stripe API. Do you mind taking time to chat? I also posted a (lengthy) IH post in the Stripe group detailing some of my problems. You can see that at the link below.
https://www.indiehackers.com/post/help-using-stripe-connect-for-customers-to-accept-direct-payments-1808f535c1