#manubati-connect
1 messages Β· Page 1 of 1 (latest)
Amazing! thank you
"We now would like to transfer part of this charge as a destination charge, to the suppliers we have onboarded on these currency-connected accounts. Can we do this from the stripe client (nodeJS SDK, official stripe package) thatβs instantiated as the Platform account?"
Yes, this is definitely possible - is your goal to transfer funds to a single connected account, or multiple?
there will be many connected accounts (suppliers), but for each charge of our client we would only transfer to a single connected supplier
Gotcha - so when working with Destination charges you can specify an amount to automatically transfer by setting transfer_data[amount] (see https://stripe.com/docs/connect/destination-charges#transfer-amount)
Destination charges would be going to the connected account (supplier express account)t of a connected account (CAD-connect) that's connected to the Platform
Yes that's what we are planning on using (transfer_data) in order to not specify the application_fee
π Have you tried it out yet? If you have specific questions about it I'd be happy to answer
Ok perfect!
quick question for you
As a uber client, you can take a ride in Canada, and in the states.. and you won't need to put your credit card info more than once. The charge will be in Cad$ or US$ depending on where it is, and the driver will be paid accordingly in the appropriate currency
What's the best way to architecture that with stripe connect?
One possibility is that you have one umbrella Platform Account, and then you have US platform account and CA platform account that are both connected to the umbrella account. The umbrella Platform Account is the one that the credit card information is created on, and then it can clone it to the US and CA platform accounts
Ok so exactly what we currently have set up, but we should then be cloning the use information to the Country specific accounts
this is what we should be doing to be cloning the customers onto the country specific accounts yes?>
yup!
you too!
hello @velvet jungle let's talk here
you are making your request incorrectly
you can create a Destination Charge on the Platform, to the Connect account
Hey Hmunoz, thanks
you are creating a Destination Charge on a Connect account which is not supported
so I think you're making a mistake in your requst
request
So i'm trying to create a charge using a credit card that's stored on the Umbrella Platform account... Sending the money to a connected account (CAN-Connect), and doing a transfer_amount (X% of that money) to the Supplier connected account <- this supplier account is connected to CAN-Connect
what should the payload look like then?
are these two, different Connect accounts?
Sending the money to a connected account (CAN-Connect)
vs
doing a transfer_amount (X% of that money) to the Supplier connected account
Looking at what @thin sky said last night, I thought that was the right architecture to be using
Yes they are
The architecture is as detailed above by Karbi,
An umbrella Platform account.
Connected to that, are Currency based platorm accounts which should hold the remainder(and where the money flows to)
Connected to those, are suppliers we want to transfer_amount to.
We want to do something like this. But in our case, the credit info is in the Umbrella account.
The platform in the above diagram is the CAD-Connect account.
The transfer_amount destination is the Connected Account
ok so your situation is very non typical.
is the
The platform in the above diagram is the CAD-Connect account.
do you control/ have the API keys for that account?
or is that a vendor account that you don't own/control
The CAD-Connect account is an account we control. The suppliers we do not and go through an express onboarding flow.
We're trying to ensure that we can maintain user/credit card info across borders, but flow the charges into the appropriate currency platform accounts, and have suppliers in Canada vs USA connected to those appropriate accounts
got it, that helps
so
in this case, you need to create the Destination Charge from the CAD-Connect account platform
I think right now you are creating it from the Umbrella platform
Yes i think so too. Does that mean that we need to instantiate the stripe client on our backend from the CAD-Connect account?
Do we still have access to that user info? Or we only do so, after having cloned that info?
that we need to instantiate the stripe client on our backend from the CAD-Connect account?
yes
Or we only do so, after having cloned that info?
Correct, you would need to clone the card/PM from the Umbrella -> CAD-Connect acct
So we'll need to instantiate two different clients for each of our Currency Platform accounts, and use one or the other depending of the locality
Is this how it is architectured for Uber/AirBNB for example in order to provide seamless cross-border orders with saved credit-card info?
@ebon token is my colleague and will be taking over if that's OK @hearty tinsel
Hi @hearty tinsel I am working with @velvet jungle , how would this look like?
Instantiate our SDK with the CAD-Connect keys to make the charge and set the destination to our supplier account. But how can we clone the user credit cards from the platform?
So we'll need to instantiate two different clients for each of our Currency Platform accounts, and use one or the other depending of the locality
yes
Is this how it is architectured for Uber/AirBNB for example in order to provide seamless cross-border orders with saved credit-card info?
not sure but highly likely they do
hello @ebon token ! nice to meet you
Instantiate our SDK with the CAD-Connect keys to make the charge and set the destination to our supplier account
correct
But how can we clone the user credit cards from the platform?
just clone from the Umbrella Platform to CAD-Connect, are you familiar with cloning PaymentMethods? https://stripe.com/docs/payments/payment-methods/connect#cloning-payment-methods
Is there any way to simplify cross-border payments by having a single platform account (as the schema in the graph) and receive funds from multiple currencies... and connected suppliers with bank accounts in multiple jurisdictions/currencies..
and use the on_behalf_of param to ensure that the money flows to them in the right currency?
Is there any way to simplify cross-border payments by having a single platform account (as the schema in the graph) and receive funds from multiple currencies... and connected suppliers with bank accounts in multiple jurisdictions/currencies..
there might be (also might not) but I'm not the best person to talk about regulatory routing etc
but really the set up you have is an advanced set up that works for users who want to do what you are doing aka maintain an Umbrella acct and then clone down to Platforms in certain regions
hmm just want to make sure I understand correctly, so right now we have:
- all our credit cards in PLATFORM_ACCT
- one US_ACCOUNT and one CA_ACCOUNT both standard accounts connected to PLATFORM_ACCT - we manage those 3 accounts.
We want to have CA partners / suppliers connect (express accounts) to the CA_ACCOUNT and US partners / suppliers (express accounts) connect to the US_ACCOUNT
we tried to test a charge where the node.js SDK is instantiated with the PLATFORM_ACCT keys and process the charge through the CA_ACCOUNT (Stripe-Account header set to CA_ACCOUNT) with transfer_data: { destination: CA_SUPPLIER_ACCOUNT } so that the platform fee ends up in the CA_ACCOUNT but the rest of the charge is sent to our supplier. And the cards remains in the main umbrella PLATFORM_ACCT
And we got that error mentioned above. So is our current architecture wrong? I am still unsure on how to correctly set it up.
I hope it makes more sense descibed this way
I'm stepping away but a team member is catching up, give them a sec!
π Hi again!
Hi @thin sky ! Sorry to bother you again with our questions π
Hey Karbi! unfortunately I gotta step out too but you're in good hands with @ebon token
Thanks for your help again π
@ebon token give me a few minutes to catch up and then I'll respond to your latest question
thanks @thin sky
we tried to test a charge where the node.js SDK is instantiated with the PLATFORM_ACCT keys and process the charge through the CA_ACCOUNT (Stripe-Account header set to CA_ACCOUNT) with transfer_data: { destination: CA_SUPPLIER_ACCOUNT } so that the platform fee ends up in the CA_ACCOUNT but the rest of the charge is sent to our supplier. And the cards remains in the main umbrella PLATFORM_ACCT
You should be creating the charge using the CA_ACCOUNT keys (do not set Stripe-Account at all), with transfer_data: {destination: CA_SUPPLIER_ACCOUNT}. While the cards are originally added to the PLATFORM_ACCT, when you want to use them you should clone (https://stripe.com/docs/payments/payment-methods/connect#cloning-payment-methods) them to either CA_ACCOUNT or US_ACCOUNT so that you can use them in the charge
Ok this make sense but the cloning part is still blurry in our use case. This is what the docs says (I added some questions there):
const stripe = require('stripe')('sk_test_51JwaAdEFXLwlhZzNn9yGx6dcVdmq5Gut7o780a1As8w00Z7vs3wJJqjkDjLVxvjZUm3sBjiZyuSohNIYqEPxkefl00LKDAjedc'); => so from above, it
should be CA_ACCOUNT keys right?
const paymentMethod = await stripe.paymentMethods.create({
customer: '{{CUSTOMER_ID}}',
payment_method: '{{PAYMENT_METHOD_ID}}',
}, {
stripeAccount: '{{CONNECTED_ACCOUNT_ID}}', => what is this ID in this case?
});
Sorry for so many questions but from that doc ^ I understood it as the sdk should be instantiated wit hthe platform keys then {stripeAccount} should be the connected account Id which in our case woudl be that CA_ACCOUNT
Ah, let me clarify that - for the cloning you want the API keys of the PLATFORM_ACCT, and the Stripe-Account header would be set to CA_ACCOUNT (or whathever account you want to be cloning the Payment method to)
To rephrase:
- The cloning flow only involves PLATFORM_ACCT (using their API keys) and CA_ACCT (as the Stripe-Account header)
- The charging flow involves the CA-ACCT (using their API keys) and the CA_SUPPLIER_ACCT (as the transfer destination)
π if this thread has been archived by then feel free to ask us to reopen it in the main channel!