#samuelho

1 messages · Page 1 of 1 (latest)

nova anvilBOT
valid acorn
#

For Standard connected account, only Direct Charges is recommended that the liability is on connected account and connected account is responsible for refunds and disputes. However, Direct Charges only allows one payment to one connected account. When Checkout Session with Direct Charges is used, it's not possible to collect one payment only, then transfer to different connected accounts later.

If you wish to collect payment in one single payment and transfer to different connected, only Express or Custom connected account with Separate Charges and Transfers can be used. The limitation is that the payment is made on platform and the liability is on the platform that the connected accounts are not responsible for refunds and disputes.

With Checkout Session (Stripe hosted payment page), your system will create a Checkout Session first, then redirect customer to complete the payment. Payment Intent is used under the hood as it shouldn't be needed as part of your integration.

The Checkout Session flow will be:

  1. Customer goes to cart checkout page
  2. Create Checkout Session
  3. Redirect customer to Checkout Session URL
  4. Customer completes payment on Checkout Session page
  5. Customer will be redirected to success_url after completing the payment and your server will listen to checkout.session.completed event to fulfill order
#

With multi-vendors with Standard connected accounts using Direct Charges on Checkout Session, the only way is create Checkout Session on each connected account and have customer completes them individually.

Alternatively, you may save the customer's payment method with Setup Intent on the platform, then clone it to the connected account for Direct Charges using Payment Intent.

royal ocean
#

Ah this is very helpful, Ill take some time and digest this. Thank you for pointing me in the right direction!

A follow up:

In terms of saving these credentials with the setup intent, how does that flow look like?

  • Lets say if there were 3 items in the cart each a unique vendor, you mentioned that the alternative is to save the customers credentials and clone it into the vendor's connected account for direct charges. Is it just a single checkout session but it would walk through 3 of the same checkout pages but with different vendors since they have to authorize each individually?
  • just as a code example below - how does that flow work with the session creation given that there are multiple vendors?
const session = await stripe.checkout.sessions.create({
        mode: "payment",
        line_items: product.map((el) => {
          return {
            price_data: {
              currency: "usd",
              product_data: {
                name: el.name,
              },
            },
            quantity: el.quantity,
          };
        }),
        success_url: "https://example.com/success",
        cancel_url: "https://example.com/cancel",
      });

Also in terms of maintenance and upgrades later on, say if I were to decide to switch my platform over to using custom accounts. Is this port possible/recommended?

valid acorn
#

Lets say if there were 3 items in the cart each a unique vendor, you mentioned that the alternative is to save the customers credentials and clone it into the vendor's connected account for direct charges. Is it just a single checkout session but it would walk through 3 of the same checkout pages but with different vendors since they have to authorize each individually?
The Checkout Session will be used to save customer's payment method, not collecting the payment method. After the payment method is collected, then your system will use Payment Method API to clone to connected account and Payment Intent API to charge the payment to each connected account, i.e. 3 payments. No Checkout Session will be required for payments.

just as a code example below - how does that flow work with the session creation given that there are multiple vendors?
Checkout Session will be used in setup mode without line items as explained above: https://stripe.com/docs/payments/save-and-reuse?platform=web&ui=checkout