#manubati-connect

1 messages Β· Page 1 of 1 (latest)

thin sky
#

hello! Give me a minute and I'd be happy to help

velvet jungle
#

Amazing! thank you

thin sky
#

"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?

velvet jungle
#

there will be many connected accounts (suppliers), but for each charge of our client we would only transfer to a single connected supplier

thin sky
velvet jungle
#

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

thin sky
#

πŸ‘ Have you tried it out yet? If you have specific questions about it I'd be happy to answer

velvet jungle
#

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?

thin sky
#

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

velvet jungle
#

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?>

thin sky
#

yup!

velvet jungle
#

perfect! thank you so much for your help Karbi.

#

Have a great evening!

thin sky
#

you too!

hearty tinsel
#

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

velvet jungle
#

Hey Hmunoz, thanks

hearty tinsel
#

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

velvet jungle
#

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?

hearty tinsel
#

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

velvet jungle
#

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

hearty tinsel
#

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

velvet jungle
#

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

hearty tinsel
#

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

velvet jungle
#

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?

hearty tinsel
#

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

velvet jungle
#

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

ebon token
#

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?

hearty tinsel
#

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

Considerations for Stripe Connect platforms adding support for new payment methods using the Payment Methods API.

velvet jungle
#

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?

hearty tinsel
#

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

ebon token
# hearty tinsel > Instantiate our SDK with the CAD-Connect keys to make the charge and set the d...

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

hearty tinsel
#

I'm stepping away but a team member is catching up, give them a sec!

thin sky
#

πŸ‘‹ Hi again!

ebon token
#

Hi @thin sky ! Sorry to bother you again with our questions πŸ˜†

velvet jungle
#

Hey Karbi! unfortunately I gotta step out too but you're in good hands with @ebon token

#

Thanks for your help again πŸ™‚

thin sky
#

@ebon token give me a few minutes to catch up and then I'll respond to your latest question

ebon token
#

thanks @thin sky

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

Considerations for Stripe Connect platforms adding support for new payment methods using the Payment Methods API.

ebon token
#

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

thin sky
#

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)
ebon token
#

ah gotcha

#

ok I will do some tests this afternoon and get back to you if needed πŸ˜„

thin sky
#

πŸ‘ if this thread has been archived by then feel free to ask us to reopen it in the main channel!