No problem @gpdmop. I agree that it certainly exposes the platform to additional risk from merchants who act in bad faith.
I wouldnât be too confident of Stripe implementing any feature requests, but what you could do is:
Check the connected accountâs balance using the âStripe Connect - Retrieve Connected Account Balanceâ call that comes with the plugin
If thereâs a sufficient balance, go ahead and trigger the refund
If thereâs NOT a sufficient balance, you could halt the refund and alert the merchant
Of course you would want to think about how this would affect the customerâs experience. They may not be delighted if they click a âRefundâ button and then donât get anything.
PS - this Stripe page may be useful in understanding Connected account balances and how they interact with refunds.
Super helpful response. In my case the end user would be the admin issuing a refund so the ux you mentioned would be sufficient. Iâm hoping there is some call available to trigger $$ from their bank account into the stripe account so they can then effectively issue the refund. Will do some more digging on that front.
You can now autofill fields in the Stripe Checkout Session! Specifically, you can autofill the email field by adding the current userâs email address to the âCustomer Emailâ field in the âStripe Connect - Create Checkout Sessionâ workflow action:
May-24 update
Released a video tutorial earlier this week on how you can embed Stripe payments forms (i.e. Checkout Sessions) in your Bubble app with the Stripe Connect - Marketplace plugin:
Just released a new version of the plugin (version 2.9.0) that allows you to create invoices and split the payment between your platform and the seller:
The plugin documentation has been updated with instructions on how to create invoices (link here). The steps include:
Create a Customer ID (if you donât already have one saved down) for the customer using the âStripe Connect - Create Customerâ action.
Create a blank invoice using the âStripe Connect - Create Invoiceâ action. You can specify the platform fee using the â
Add an Invoice Item to the Invoice created in step 2 using the âStripe Connect - Create Invoice Itemâ action
Send the invoice to the customer using the âStripe Connect - Send Invoiceâ action.
New actions added to this version of the plugin include:
Further information on creating invoices with Stripe Connect
As a follow-up to my previous post on creating invoices with Stripe Connect, I just wanted to post this image of the steps involved.
Creating invoices with Stripe Connect is slightly more complex than the standard way of processing payments via the Checkout, so hopefully this is useful to people
(more) June-24 updates
Iâve just released a new version of the plugin (version 2.10.1) that has two updates:
The âStripe Connect - Create a Transferâ action now returns the unique Stripe ID associated with that transfer
A new data call âStripe Connect - Retrieve a Transferâ allows you to obtain additional info on the transfer
This can be useful if youâre using using a âSeparate Charge & Transferâ charge type, making a transfer to a connected account and want to get information on the transfer.
In order to use the new âRetrieve a Transferâ call, youâll need to save down the âTransfer IDâ thatâs associated with the transfer. This transfer ID is now returned by the âStripe Connect - Create a Transferâ action.
You can then use this ID with the âStripe Connect - Retrieve Transfer Detailsâ call to get information associated with the transfer.
The plugin documentation has also been updated with instructions on how to use the updates - see here.
Split a payment with Stripe Connect - video tutorial (short version)
We have several pretty lengthy videos out there (see here and here) on how to use the Stripe Connect - Marketplace plugin, but wanted to put something a bit briefer together on processing a marketplace payment.
The user will now have the option to add a promotion code that is linked to the coupon you created in the Stripe Checkout Session.
Important: the discount will NOT be split evenly (or pro-rated) between the seller and the platform. The seller will effectively lose out by giving the discount, while your marketplace will get the same amount.
For example, letâs say a seller on your platform is selling a product for $100 and your platform takes a 20% platform fee. If a coupon that provides a 10% discount is used:
Cross Border Transfers / Payouts - July-24 update
Iâve got some queries from customers over the past few months about making cross-border payouts.
This is something thatâs only applicable for US-based platforms. As you can see from this Stripe article, US platforms can use certain payment flows to pay out merchants in other countries in their local currencies.
However, there are often special requirements when onboarding merchants from these countries. Two that users of the Stripe Connect - Marketplace plugin have run into over the past few months include:
The capabilities.card_payments parameter
The tos_acceptance parameter (terms of service)
Some countries (EG Nigeria and the Philippines) do not allow merchants who are signing up for Express accounts to request the card_payments parameter to be set to true. Similarly, some countries will only allow merchants to register with a Recipient service agreement.
Happy to say that the latest version of the Stripe Connect - Marketplace plugin allows you to set both of these parameters when creating Express accounts for merchants with the âStripe Connect - Create Express Accountâ action:
I generate the refund, but the refund amount is taken directly from my platform accountâs funds (even though the related connect account has a positive balance that is more than the amount theyâre refunding in my application)
Questions:
Can you maybe suggest what I might be missing that would cause the funds to come from my platform account instead of the connected account?
Assuming Iâve gotten #1 figured out⊠In the event that the connected accountâs balance is not larger than the amount theyâre attempting to refund - what is the best practice here?
To your previous response we can check the balance and alert the user if there isnât enough in the account⊠but what should we say in that alert? Log into your stripe dashboard and upload funds then submit the refund again? If so, can they access this just by viewing the "create express dashboard link? If not, what is the alternative message (sorry we canât help you do this refund OR something else)?
Hi @gpdmop, no problem at all! Always happy to help where I can
Thatâs an interesting one. Itâs hard for me to say for sure without seeing your app and the specific transaction, but were you using a âSeparate Transfer & Chargeâ charge type by any chance?
What you could do is:
Have a button for customers called ârequest refundâ
If there are sufficient funds in the connected account when the customer requests the refund, process it as normal
If there are NOT sufficient funds in the connected account, send an email notification to the the connected account owner letting them know that someone has requested a refund and there are not sufficient funds in their connected account to process it
To my knowledge, there is no way for Express account owners to add funds to their Stripe account. However, they could add the necessary funds to their bank account
As mentioned in my previous comment, Stripe will attempt to claw back funds from the linked bank account before taking them from your platform account), so you could prompt them in the email notification to add funds to their linked bank account
You will need to let the end customer know that their request for a refund is being reviewed (or something like that)
This is just a suggestion. There are other ways you could handle refund situations like this, but the above should at least help the end customer understand whatâs happening with their refund and give your sellers a chance to provide the necessary funds.
You nailed it. Accidentally switched it to âSeperate Transfer & Charge.â Switched back and Iâve made some progress. Now Iâm just stuck on checking whether or not the account balances are sufficient. Does it look like Iâve set these up right (cart item sum = dollar amount so Iâm multiplying by 100 to get to cents)?
Inside two text elements to make sure youâre getting the numbers you would expect.
Also, I presume the first workflow is for when there are not enough funds in the connected account and the second for when there are enough funds? If so, I would consider changing the ℠to a > and the < to a †(you want to be able to process refunds if there is exactly the amount required in the connected account )
Manual Payouts - July-24 Update
We recently released a new version of the Stripe Connect - Marketplace plugin that allows you to make manual payouts. This can be really useful if youâre building a marketplace where you want to control when the funds are paid out to a sellerâs bank account.
For example, if youâre building a services marketplace (like Upwork), you may allow the customer to make a payment upfront, but want to wait until the seller has delivered the service before paying out funds to the sellerâs bank account.
To implement manual payouts:
When registering sellers for a Stripe Express Account (with the âStripe Connect - Create Express Accountâ action), set the payout interval is set to 'Manual â
When the funds are ready to be paid out to the seller (EG when a service has been delivered), trigger the âStripe Connect - Manual Payoutâ action.
Optional (but highly recommended step):
Ensure there are sufficient funds available to make the payout. For new Stripe Express accounts, Stripe typically wonât make the funds available for a payout for 7-14 days. Therefore, you may wish to build in logic to first check if there are sufficient funds available in the connected account.
You can also watch the below video tutorial for an example of implementing manual payouts in a services marketplace
Reverse a Transfer Action - July-24 Update
Just released a new version of the plugin (version 2.13.0) that has a new action:
Stripe Connect - Reverse a Transfer
This action can be useful if youâre issuing a refund for a payment that was made using the separate charges and transfers approach. If you use the âStripe Connect - Create a Refundâ action to issue a refund (with this charge type), the full amount of the payment will be refunded from your platform account.
This is because the charge was made on your platform account, not the connected account.
The âReverse a Transferâ action means you can now reverse the transfer that was made to the connected account, effectively making the platform whole.
The âProcessing Refundsâ section of the plugin documentation has also been updated to reflect this addition: