Templates Plugins Courses

Stripe Marketplace Plugin - Destination Charges

Hi,

I’m using the Stripe Marketplace plugin, and I’m trying to set up payments via the Stripe Checkout for an express connect account, using ‘destination’ charges.

However this doesn’t seem possible to do with the plugin.

I’ve used the SCA element and successfully created a checkout session and returned the session ID, but when I redirect to the Checkout page and follow through with the checkout process, it’s using ‘direct’ charges by default.

There doesn’t seem to be anywhere within the create session action to set whether you want to use direct or destination charges, so I’m assuming it only works with direct charges?

Unless I’m missing something obvious.

Hi, Adam!

Thanks for reaching out!

Let me check on this matter and I’ll get back to you asap.

Best, Julia.

1 Like

Hi, Adam!

Thanks for reaching out!

So, a direct charge is when a customer directly pays the seller and the platform can take an app fee. Destination charges are a bit similar but in this case, the money the customer pays land on the platform and then the platform needs to perform a transfer (so there are 2 actions instead of 1 for the direct charges). However, both of these options are available through the plugin. Thus I suggest using direct charges since it requires only 1 action, therefore, processing fees will be applied only once and also when making a destination charge you will need to wait 1-2 days before the funds will be available for transfer. For using “destination” charges you need to leave empty fields “Seller ID” and “Mode”:

Hope this helps!
Best, Julia.

Hey, is there a guide on how to implement destination charges with the plugin? I tried to simply leave the Mode and Seller ID empty, but gave me an error.

I originally set everything up as a direct charge with “create a session” and then “go to checkout SCA A”

Any suggestion on where to look / what to do here?

@Julia,

After speaking with Stripe’s jumpstart team about how to charge our users destination charges, we were told that the third party maker of the plugin we bought for bubble is responsible for the code and hence they cannot help us configure it to do as we want.

Hence we look to Zeroqode for help and guidance on how to change our configuration from Direct to Destination charges using your bubble plugin. Here is the documentation that Stripe advised you guys at Zeroqode to look at: Creating destination charges on your platform | Stripe Documentation

We are also open to discussing this on a call but couldn’t find if you offered any coaching / consulting services for bespoke no-code project configurations.

Many thanks,
Founders

Hello, @founders
Thanks for reaching out.

I need to note that our support team doesn’t provide any coaching and consultation services, it’s beyond our responsibilities.
We can provide you with general information via email, Forums (Zeroqode and Bubble), and intercom.

In order to provide you with more details on this matter, please let me know the purpose of Destination charges in your case.
Destination charges are created on the platform, but as part of the charge operation, funds are transferred to the connected account specified in the transfer_data[destination] parameter of the charge.

So, in case you want to send money to a specific account, it could be done through a simple session.
Also, you can take a look on the “Creating separate charges and transfers” action:

However, I would appreciate more details from you, so I will be able to analyze actions\calls, which are already created in the plugin.

Looking to hearing from you soon.
Best regards,

Hi @Ecaterina - thank you for coming back to us!

With destination charges we want to ensure our platform is covering the transaction costs incurred from Stripe, i.e. our account balance is debited for the cost of the Stripe fees, refunds, and chargebacks. That way connected accounts should receives exactly what they are owed without any fees deducted from their payout. Does the transfer_data[destination] param enable that? If not, how can we achieve this?

I had a look at the “creating separate charges and transfers” option but as shared previously in this post we already have a session and checkout workflow set up and adding this step would not work as we don’t have any fixed amounts that need to be transferred apart from the 100% to the connected account and +10% to us as the platform (of which we wish to cover all Stripe costs and fees incurred by the transaction).

Feel free to email us at team@wishlist.fund

Hello, @founders
Thanks for these details.

Indeed, there is no “Create a destination charge” in our plugin. However, in case you want to use exactly this action, you can configure it through the API connector.

Please note that it’s not necessary to indicate an exact price for any product or service. You can just mention the “previous step”.
Even using the “Seller charge a customer” action, you can fully transfer all the amount of money to your seller. App fee is not obligatory and you can set 0 as this parameter.

Additionally, you can create a " Platform charge customer":

Here you also don’t need to indicate an exact amount of money.
Please check our Demo Page for more details: Zeroqode-demo-19 | Bubble Editor

Hope it will help you.
Best regards,

@Ecaterina how do we configure a Destination charge through the API connector?

@Ecaterina @Julia we’re roping you both in to help us, hope that’s OK!

Since buying your Stripe Connect plugin for bubble we have made several attempts at changing the default Direct charge to a Destination charge. Quick reminder of the difference here:

In a nutshell, we as the platform (wishlist.fund) want to take on all costs of the Stripe fees, refunds, and chargebacks related to a transaction such that the connected accounts receives their full payout without any deducted costs. Below is a diagram to illustrate our use case:

When a fan “gifts” a wisher, we ideally want to split out the amount of the transaction into two line items:

  1. The price of the wish/gift (in this case $200 shoes)
  2. The 10% transaction fee (which includes our platform fee and payment provider costs for Stripe)

At the moment everything is bundled up together.
How? We add a 10% surcharge to the amount of the wish ($200+$20=$220), which the fan pays upon checkout. Of that we take a 5% platform fee ($12) and send the rest of the amount ($208) to the connected account, i.e. the wisher.
Why? Because your plugin has set Direct charges as the default and we promise wishers 100% of their payout by us bearing the payment fees, we have to leave a buffer on their end (i.e. ~ 105%) to account for the Stripe fees which will be deducted on their end.

This is not very accurate as you can imagine. With international payments and currency conversions the Stripe fees fluctuate by 2-3% so the guarantee of a 100% payout to wishers is proving difficult to keep. Similarly for fans who gift them, it would be nice to offer a breakdown upon checkout in Stripe.

@Julia you mentioned that Destination charges are possible via your plugin yet your solution didn’t work for us so if you have any ideas for how to achieve the desired result please let us know.

Thanks,
Founders

Hello, @founders

Allow me to mention that my colleague Julia is no longer in charge of the Support Team, so she couldn’t reply to any of your questions :slight_smile:

Thanks for these details. Now, I’ve got the entire picture of your idea.

This is possible by using the official Stripe Documentation for creating destination charges and API Connector:


Here you need to create new API call, using the data, provided by Stripe. Here you can find more information about that: [SOLVED] Stripe API Destination Charge - Dynamic Destination Account not being passed through - APIs - Bubble Forum

As for Destination Charges, the money the customer pays land on the platform, and then the platform needs to perform a transfer (so there are 2 actions instead of 1 for the direct charges).
I suggest using direct charges since it requires only 1 action, therefore, processing fees will be applied only once also when making a destination charge you will need to wait 1-2 days before the funds will be available for transfer.

In order to analyze, what is possible in your case, I need to see the whole workflow for your attempt, and not only one action.

Please share it with me and I will discuss with our team what exactly was missed.
I am looking to hearing from you soon.
Best regards,

Thanks for coming back @Ecaterina !

The post you reference for Stripe API Destination Charge is interesting but would need a full guide to set up a similar workflow for our app. Do you have that handy?

Our current workflow is this for fans who gift creators:

We would really like direct charges to be changed to destination charges in this workflow using your plugin with the purpose of us (the platform) to pay for the Stripe fees associated with each transaction rather than the connected account.

Let me know if you need more info.

Hello, @founders

I’m afraid we don’t have any guidance on configuring the API, since it is not related to our product somehow. The link I provided earlier just demonstrates the successful use case from the Forum.

Please allow me to discuss with our Dev. Team that is possible in your case and how we can configure Destination charges within this plugin.
I will revert to you once will receive any feedback from team.

Best regards,

1 Like

Hi @Ecaterina,

Just checking in now that a week has passed to ask for an update. Is there a soon-to-be ready fix?

We really need a solution to this shortcoming in the plugin as our app currently processes payments for live customers with Direct charges causing +/-100% payouts due to the fluctuating Stripe fees. So for us this remains increasingly time critical.

Thanks,

Hello, @founders

I need to point out that this is not a fix of the existing functionality, but an improvement of the entire product since by default, we haven’t built a “Destination Charge” action.
However, since it could be really useful for our users, we decided to add this action.

The plugin will be deployed in the nearest time, so I will let you know once it will be ready.

Best regards,

Hello, @founders
Thanks for your patience.

By this message, I would like to notify you that we finished our improvement and added “Creating destination charge” as a possible action for our plugin:

Please upgrade the plugin’s version and give it a try.
Bet regards,

Thank you so much @Ecaterina !

We were under the impression from Julia that it was indeed intended that the plugin would support Destination charges but we’re happy that it should do so now :+1:

Just to recap: We want to guarantee 100% payouts to “sellers” and charge “buyers” an extra 10% on top of the price upon checkout to cover Stripe fees as well as our application fee. At the moment we have Direct charges enabled, which causes connected accounts (sellers) to have the Stripe fees deducted from their payouts generating instances of <100% payouts… rather than passing Stripe fees on to sellers we want to be the party that foots the bill for the Stripe fees such that they simply come out of our end (the 10% platform fee).

Now, if we enable Destination charges, what would a Destination Account be? Is that the account we want to charge the Stripe fees to or is it the connected account (seller) whom we pay out funds to? If the former then we should put down our own Stripe ID for that, right? If both, then there really is no point to changing it from Direct charges as the result is the same :sweat_smile:

The last option is of course to put down the buyer ID as the Destination Account but they don’t have connected accounts in our app so not sure how that would work.

Again, huge thank you for your support here :pray:

Hello, @founders

I suppose that this feature was planned, but not implemented earlier. Moreover, this feature was not requested as well.

Destination charges are created on the platform, but as part of the charge operation, funds are transferred to the connected account specified in the transfer_data[destination] parameter of the charge. The platform is responsible for the cost of the Stripe fees, refunds, and chargebacks:

To create a destination charge, specify the ID of the connected account that should receive the funds - Seller:

This is also stated in the Stripe Official Documentation, shared above. So, the new action was created accordingly to the Stripe’s official documentation.

In case you want to charge Customer separately, you can also use this action:

Please try it and let me know if you need an additional information.
Best regards,

Cheers, much appreciated!

So how do we merge the Creating destination charges step with our Create a session step? It’s important that the buyer ends up at the checkout page via the Go to checkout SCA A step with all the right inputs (see our previously shared workflow above).

Hello, @founders

Actually, I need to note that our team is not providing step-by-step guidance for user use cases, since everybody has their own idea, and it’s beyond our responsibilities.
However, we will check if it would be possible to combine the Go to checkout SCA action with the Destination charges, since, as you can see in our new action, there are no Seller\Session IDs.

I will revert to you once will receive any feedback from our team.
Best regards,