#door-connect-fundsflow

1 messages ยท Page 1 of 1 (latest)

rancid cairnBOT
distant juniper
#

@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

swift dune
#

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

distant juniper
#

Ah gotcha so that is allowed if there's only one "recipient" of the funds.

#

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

swift dune
#

ok, how can I payout to the other user?

distant juniper
#

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

swift dune
#

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.

distant juniper
#

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)
swift dune
#

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?

distant juniper
#

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

swift dune
#

one moment, sorry

#

i think i understand based off of the functionality that im experiencing. How would I achieve that?

distant juniper
#

achieve what part exactly?

swift dune
#

"Since everything happens on the connected account, the Customer cus_123 and the PaymentMethod pm_123 have to exist there"

distant juniper
#

okay but you already do all that, your code works and has done it

swift dune
#

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

distant juniper
#

ah yeah you do seem quite lost ๐Ÿ™‚

swift dune
#

it just goes to the customer who initiated the payment intent's stripe balance

distant juniper
#

you still seem to mix up Customer and Account after what I said earlier though

swift dune
#

i am trying to use it correctly, customer is the one making the payment for the service, account is the user receiving the money

distant juniper
#

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

swift dune
#

the customer also has a stripe connect account, not sure if that matters

distant juniper
#

You are the platform. You control who owns an Account, and you control what those Customer(s) objects are.

swift dune
#

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

distant juniper
#

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

swift dune
#

i understand that

#

that is what looks to be happening though when i look at the customer's balance in their stripe dashbaord

rancid cairnBOT
distant juniper
#

I'm really sorry but this makes no sense sadly

#

where do you see the customer's balance?

swift dune
distant juniper
#

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.

swift dune
#

ok but the customer is the one paying for the service

distant juniper
#

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?

swift dune
#

on my platform, customers also have a connect account

distant juniper
#

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

swift dune
#

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

gentle holly
#

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?

swift dune
#

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)

gentle holly
#

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.

swift dune
#

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

gentle holly
#

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 the stripe_account header, where stripe_account is the connected account

swift dune
gentle holly
#

Ah, no. Forgot about that point. Standard accounts will need to use Direct Charges so customers will need to exist on the connected accounts