Ronen Eizen
Aug 24, 2022
2 mins read

Stripe offers 3 methods to create a multiparty payment: Direct Charge, Destination Change, and Separate Charges and Transfers. If you are a visual person like me the documentation may not be enough to clarify which option would be best for your scenario. Here we’ll fill a few gaps that are missing from the official documents.

Direct Charge

The Direct Charge method is relatively straightforward. Your platform has to implement stripe account onboarding to connect accounts. As a result, your platform will be able to facilitate payments for these accounts and collect application fees in the process.

Direct Charge Flow

With this method, the connected account is responsible for the Stripe fees.

const paymentIntent = await stripe.paymentIntents.create(
  {
    amount: 10000,
    currency: 'usd',
    application_fee_amount: 1000,
  },
  {
    stripeAccount: '{{CONNECTED_STRIPE_ACCOUNT_ID}}',
  }
)

*Note that without stripeAccount parameter this intent will be created for your own account.

Destination Charge

The Destination Charge can be visualized as follows.

Destination Charge Flow

In this scenario, the payment is routed to a connected account directly. It is the platform’s responsibility to collect fees in the process. Important to note that in this scenario the platform is responsible for stripe fees. Therefore the platform should calculate and include stripe fees in the application fees.

Separate Charges and Transfers

Separate Charges and Transfers, as the name suggests, consist of separate steps that exist in Stripe’s API autonomously. The element that connects these API calls is transfer_group the parameter which is passed to paymentIntents.create invocation.

// Create a PaymentIntent:
const paymentIntent = await stripe.paymentIntents.create({
  amount: 10000,
  currency: 'usd',
  transfer_group: '{ORDER10}',
})

The scheme below is a visual representation of the money flow. As you can see the funds first land on the platform’s balance. The following transfer step can use the funds from the payment to credit the connected account.

Separate Charges and Transfers Flow

The payment will have an additional Transfer Group field on the platform’s dashboard.

Platform's Dashboard with the payment

On the connected account’s dashboard will appear another payment for the amount of transfer.

Connected Account's Dashboard with the payment

Lingo:

Platform - is the master account that facilitates payments and the account to which other accounts connect.

Connected Account - an account that is connected to a platform (e.g. Express, Standard, or Custom account).

Share: