简体   繁体   中英

How to payout to a connected user (move funds from connected user's stripe account to their personal bank account)?

When using Stripe Connect's 'Express' variant, with Destination Charges, a user pays, the payment is split between the platform and the connected user, and the balance will accrue in the connected user's account. The funds will first show as 'pending', and shortly after, the funds will show as 'available' in the connected user's account.

Supposing the payout schedule interval is set to manual , then the platform is responsible for the movement of the funds from the connected user's stripe account to their actual bank account, so the connected user can finally use the funds like normal money.

Question

How can the platform move payout 'available' funds from the connected user's stripe account, to the connected user's actual bank account?

What I found so far

According to Stripe docs , the correct code should be:

transfer = Stripe::Transfer.create({
  amount: 1000,
  currency: "usd",
  destination: "{{CONNECTED_STRIPE_ACCOUNT_ID}}",
})

Is this correct?

The reasons I suspect it may not be are:

  1. because AFAIK a 'transfer' in Stripe nomenclature means the movement of funds between the platform and the connected account , not between the connected account and the connected user's personal bank account.

  2. Because the destination could only mean the account number of the stripe account from which funds are being moved, so why would it be called 'destination' if it's in fact the opposite of destination

Both of these concerns prompt this question.

Thanks for such a well formulated and clear question!

Payouts

To answer the core question directly, when a connected account is configured to receive manual payouts, the platform can make calls to /v1/payouts [1] in order to move funds from a connected account's available balance to their external account. In Ruby that would look something like:

payout = Stripe::Payout.create({
  amount: 1000,
  currency: 'usd',
}, {
  stripe_account: '{{CONNECTED_STRIPE_ACCOUNT_ID}}',
})

The code that is provided using Transfers is indeed the way to move funds from the platform account to the connected account as part of the "Separate charges and transfers" integration [2].

Since your system is using using Express accounts and destination charges (where a portion of the charge is transferred to the connected account using transfer_data[amount] ), that is the mechanism that is being used to move funds form the platform to the connected account.

  1. https://stripe.com/docs/connect/manual-payouts#regular-payouts
  2. https://stripe.com/docs/connect/charges-transfers

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM