#ADITYA-multiparty
1 messages ยท Page 1 of 1 (latest)
When we want to process customer 1 transition to business 1 ==> we create payment intent under Business 1 and process it .
When we want to process customer 2 transition to business 2 ==> we create payment intent under Business 2 and process it.
Now problem arise when we want to saved cards .
Customer 1 saved cards for Business1 can't be access by customer 1 saved cards for Business2 . Ideally we want saved card for Master Huddleup .
Are you familiar with Connect already?
Yes . We implemented connect and it is working properly .
We stuck at saving cards info . how to access across vendors.
Awesome! What kind of connected accounts are you working with? Standard? Express? Custom?
Standard
Another way we explored that create payment intent for Master on behalf on vendor . Which works perfectly - saved cards access across vendors .
But we want to get it reviewed second approach - is right way ?
When you say that you create the payment intent for master on behalf of vendor - does that mean you're using destination charges? Or are you using Direct charges?
Ideally, you should be using Direct charges with Standard accounts
With Direct Charges you'd have the issue where the customer + payment information lives on the connected account, and so to solve that you would implement cloning of payment methods (https://stripe.com/docs/payments/payment-methods/connect#cloning-payment-methods) so you could have them live on the Platform account and clone them to each connected account
In first apporach - API we are using:
stripe.PaymentIntent.create(
amount=1099,
currency='usd',
payment_method_types=['card'],
stripe_account='{{CONNECTED_ACCOUNT_ID}}',
)
But In second method - master payment intent we tried using this API:
stripe.PaymentIntent.create(
amount=1099,
currency='usd',
application_fee_amount=200,
payment_method_types=['card'],
on_behalf_of='{{CONNECTED_ACCOUNT_ID}}',
transfer_data={
'destination': '{{CONNECTED_ACCOUNT_ID}}',
},
)
{{CONNECTED_ACCOUNT_ID}} => Vendor Account ID
Definitely use the first approach (direct charges) if you're using Standard connect accounts
- I am reconfirming this ....
does that mean you're using destination charges? Or are you using Direct charges?
Is it possible to have voice call with you ?
We don't offer voice calls here, but we do offer callbacks at https://support.stripe.com/contact
Let me summarize everything again to see if that clears things up as well
Sure .
In First approach - how can we link saved cards across vendors ( customers of Master)
For the two methods you shared, the first is a Direct charge, and the second is a Destination charge. We strongly recommend that if you're working with Standard connect accounts, the you go with your first approach/Direct charges. If you go with Destination charges that can result in problems for you down the line.
With Direct charges, if you need to share payment information across multiple connected accounts you should look into cloning card payments (https://stripe.com/docs/payments/payment-methods/connect#cloning-payment-methods). With this scenario, the customer and payment methods would live on the platform and you could clone them to the connected account as needed. To reference the image you shared earlier, Customer 1 + their payment info would be stored on Huddle Up. When Business 1 wants to charge them, you'd clone the customer + payment info from Huddle Up to Business 1 and optionally attach it to the customer for future use. You'd do the same thing for Business 2
Thanks a lot Karbi . Got it . checking out cloning . It seems it will solve our problem .
Thanks a lot again for quick and spot -on help. I really appreciate it .
๐ happy to help! Try out cloning in test mode and let us know if anything comes up
Yup . Thanks .
hey @fresh orchid , I unarchived this thread
Copying your new message in:
Thanks @cedar summit for suggesting cloning card method around this .
We tried to implement that but we stuck at this point :
payment_method = stripe.PaymentMethod.create(
customer='{{CUSTOMER_ID}}',
payment_method='{{PAYMENT_METHOD_ID}}',
stripe_account='{{CONNECTED_ACCOUNT_ID}}',
)
To do this we need to create payment method, which requires card element - which we are not storing locally .
Got it. Thanks
So these payment methods would need to be attached to Stripe customers in order to be reusable like this
So you can retrieve them from your platform customer:
Then use the payment method ID with the sharing/cloning snippet for whichever target account
Actually what we want is, the customer we used with previous transaction, so the customer details that were saved by stripe so that we can reuse that. We ourself aren't saving any card details on our server so we can't create a PaymentMethod to begin with as it requires type which will be card. and then card details. And before cloning we would need a PaymentMethod to clone with .
The cloning to connected accounts approach is specifically for replicating saved cards from your platform to connected accounts. If you don't have saved cards on your platform customer that you want to use on a connected account, then what are you trying to do here?
Hi @stray hawk . in this image . as we are using standard connect system . We created and saved card for Business 1 - customer 1 . Now when same customer 1 do transition @ other Business 2, we want to use saved card ( which he saved it @ business 1 ) . Now we don;t have anything related to card . What is saved during first transition - also at stripe only.
@fresh orchid okay so what is blocking you exactly? In your flow you need to figure out a way to store card details at the "Huddle up" level for it to work. You can not save card details as part of the first payment on business 1. If you do, you can not re-use that card elsewhere
Yes . How to save card or reuse customer data @ Huddleup Level when when we are doing direct payment at business 1 . using payment intent using this stripe.PaymentIntent.create(
amount=1099,
currency='usd',
payment_method_types=['card'],
stripe_account='{{CONNECTED_ACCOUNT_ID}}',
). @tacit rivet please add if you want .
that's impossible that's what I explained above
you will have to change your integration path/logic if you want to save cards at the platform first
1/ Collect card details via a SetupIntent on the platform
2/ Get the PaymentMethod pm_123 on the platform
3/ Clone that PaymentMethod on Business 1 and get pm_ABC
4/ Confirm the PaymentIntent (your code above) with that new PM id.
Okay, Thanks
did that make sense?
Yes. But can we save card details used by customer directly after payment is made? Like save the card he used for payment so he doesn't have to go through different process to save it again.
We're using the stripe pre-built in payment screen.
On React Native platform
That's not really possible to do it in one step, you have to do the extra steps unfortunately
Okay, but is there an extra step we can take so its done in the same flow? And need not create a completely different flow
Honestly no, that's jut not possible
you have to do the flow like I mentioned above, that's the only way
Okay thanks