#door-connect-fundsflow
1 messages ยท Page 1 of 1 (latest)
@swift dune yeah you are going down the wrong path honestly. There's no way to move money between connected accounts, especially with Standard accounts. I think you likely picked the wrong account type or the wrong flow of funds.
So let's take a step back: can you give me a two sentence summary of an example flow of funds, who pays, who gets which portion of the funds, etc.?
door-connect-fundsflow
Hi, ok thanks good to know. I am trying to charge a user, have our platform take a fee, and then payout to another user
Ah gotcha so that is allowed if there's only one "recipient" of the funds.
You want to use the Direct Charges flow in that case: https://stripe.com/docs/connect/direct-charges
Here's a great end to end video about this: https://www.youtube.com/watch?v=dCL9adgdP0A
Looking at the PaymentIntent you shared, it seems to be exactly that already.
Because you created a $1178.10 USD PaymentIntent on a connected account acct_123. And you also said "please give me back $56.10 for my platform" as an ApplicationFee
ok, how can I payout to the other user?
You don't need to. The funds are already net settled in that connected account (minus our fees and your ApplicationFee) and they will automatically receive their funds after that based on the normal Payout schedule
ok i believe im misunderstanding something. I set up my app in a way where the payment methods, for example credit cards, are the connected users own personal credit cards, etc. So then when I create a payment intent, it looks like the payment intent charge goes to the customer associated with the payment method/payment intent. So it looks like the customer is charging themselves and the money never gets moved to another account.
I don't really know what that could mean I'm sorry. Definitely some misunderstanding somewhere. In our API:
- a Customer (cus_123) represents someone paying for a service. You collect payment method details (pm_123) and collect the payment from them in a PaymentIntent.
- an Account (acct_123) represents an entity (individual or company) receiving money for their services. They get money in their account's balance and it gets paid out to their bank account on file.
- a Platform facilitates the payment from a Customer to an Account (you in this case are the platform)
ok, I understand that terminology, so when making a create payment intent call, the customer field should be the customer that is paying for the service, the payment method assocaited with the payment intent will also be associated with this customer. Then the stripe header in the call should be associated with the account id of the entity receiving the money?
Correct!
But there's an aditionnal complexity here
Since everything happens on the connected account, the Customer cus_123 and the PaymentMethod pm_123 have to exist there. They wouldn't be the ones in your own platform account. So you have to make sure you understand that
@swift dune does that make sense? Want to make sure before I close/archive the thread
one moment, sorry
i think i understand based off of the functionality that im experiencing. How would I achieve that?
achieve what part exactly?
"Since everything happens on the connected account, the Customer cus_123 and the PaymentMethod pm_123 have to exist there"
okay but you already do all that, your code works and has done it
i understand that my codes works, but I am not confident that it is my intended outcome. From my example, it looks like the payment the customer makes goes to the stripe account of the same customer. There's no reference in the create payment intent call that I make that references to the account that I want to receive the payment the customer makes
ah yeah you do seem quite lost ๐
it just goes to the customer who initiated the payment intent's stripe balance
you still seem to mix up Customer and Account after what I said earlier though
i am trying to use it correctly, customer is the one making the payment for the service, account is the user receiving the money
So what's the problem? Why would that specific Customer be the same as the connected account? That part doesn't make sense to me
the customer also has a stripe connect account, not sure if that matters
You are the platform. You control who owns an Account, and you control what those Customer(s) objects are.
that's me inferring from what i see when i log into the customer's stripe account, I see that they have a balance of the charge
It would make ~no sense to have a connected account for say a book store that is acct_123 and then also have the founder of that book store have a Customer object cus_123 on that same account to pay themselves
i understand that
that is what looks to be happening though when i look at the customer's balance in their stripe dashbaord
I'm really sorry but this makes no sense sadly
where do you see the customer's balance?
when i log into the customer's stripe account and view their dashboard at dashboard.stripe.com
The PaymentIntent pi_3Obqhi4eXQcqhMwl1VJlT8IR was created on your connected account acct_1Oaka**** that's the business offering the service. They get the money themselves in their Stripe Account balance.
The Customer that paid is cus_PPZkCxR2**** and they paid with their card details (4242) and they have absolutely no balance
when i log into the customer's stripe account
you did it again ๐ you said Customer to mean Connected Account.
ok but the customer is the one paying for the service
A Customer pays for a service, they have absolutely no interaction with the Stripe Dashboard and have no access to it whatsoever
What exact URL are you on?
on my platform, customers also have a connect account
yeah I'm really sorry, this isn't working and I have no idea how else to explain most of this ๐ฆ
Right now you have a connected account and that connected account received the funds. And you seem to either mix up the vocabulary, or have attached a Customer describing the same human on the same account and we don't seem to be able to get aligned on that
cc @gentle holly who is going to take over.
Summary: platform using Direct Charges with Standard accounts and ApplicationFees. Example PaymentIntent pi_3Obqhi4eXQcqhMwl1VJlT8IR
Overall the flow works fine.
But there's confusion in who the Customer paying is on that request and whether it represents "the same person as the connected account" and I'm not finding a way to understand the mis-alignment unfortunately.
Deferring to you to take over
ok let me approach this differently from a code perspective so we're not just going back and forth over semantics
i would like to make a stripe create payment intent call to send money from user A to user B. In my exact example, we have previously confirmed the user A's payment method and have confirmed the payment as well
based on our conversation, i understand the intended outcome of this and why in my example the customer charge went to the connected account of the same platform user, but what i would like to understand is how to set up something like this that will transfer the money from user A to user B
What are User A and User B object types here? Is User A a Customer (with ID "cus...") and User B a connected account (with ID "acct_...") or something else?
yes, correct
i will note, each user has an associated customer id (cus_) and account id (acct_)
however, i will also note that i am unable to get the above call to work unless the customer id and account id are associated with the same platform user (see above where user a's account and customer id are used for the customer and stripe account header fields above)
I'm still a bit confused but I will try to explain what the above code is doing.
In this case, a platform is making a request to create a PaymentIntent. The platform is making the request as one of their connected accounts (stripe_account_id). Because of this, the PI will ultimately be created on the connected account and the customer needs to be a Customer object on the connected account as well.
ok thanks, that was my suspicion, i believe the understanding im missing is that the customer needs to be a customer on the connected account. I thought that the customer was tied to the platform
how can the app create customers that are associated with specific connected accounts? it sounds like that's what i will need to do in order to achieve my desired outcome.
from what you're saying it sounds like if i want to send money from user A to user B, A needs to to be a customer on B's connected account. How do I achieve that since it doesn't look like a connect account is able to be associated via the stripe customer create call
That's correct, at least using the code as written above
The above code is using direct charges. An alternative to this is to create user A/customer A on the platform account and use destination charges or separate charges and transfers to transfer funds to user B/connected account B
it doesn't look like a connect account is able to be associated via the stripe customer create call
You'd do it in a similar way. If you need to create a customer on a connected account, you can make the call using the platform's secret key and using thestripe_accountheader, wherestripe_accountis the connected account
is this achievable with standard accounts?
Ah, no. Forgot about that point. Standard accounts will need to use Direct Charges so customers will need to exist on the connected accounts