If something goes wrong in a transaction, users have the option to either raise a dispute or reach out to the marketplace administrator to request a cancellation and a refund. By default, only marketplace operators can cancel a transaction and initiate a refund.
A refund can only be done before a transaction has been marked as completed. Once a transaction has been marked as completed, the money can only be refunded from the admin's own Stripe balance and not the seller's balance.
How to cancel a transaction and issue a refund with Stripe
The procedure for canceling a transaction and issuing a refund, including handling the marketplace commission, varies based on the transaction setting used in the transaction in question:
Calendar booking
After a booking request is accepted by the provider, marketplace operators can cancel the transaction in Console → manage transaction sections → open the transaction → click on Cancel under "Next possible transitions".
Doing this will result in the cancellation of the transaction and initiate a refund through Stripe, returning the original payment amount to the payer.
The transaction can only be canceled before it's marked as complete. Transactions using the "Calendar booking" process will automatically be marked complete 2 days after the end of the booking period.
Purchase
After a transaction is marked as "Shipped" by a provider, either the customer or marketplace operator can initiate a dispute within 14 days of the transaction date.
After a dispute is initiated by either the marketplace operator or customer, the marketplace operator can cancel the transaction in Console → manage transaction sections → open the transaction → click on Cancel from disputed under "Next possible transitions".
Doing this will result in the cancellation of the transaction and initiate a refund through Stripe, returning the original payment amount to the payer.
If "Marked received from disputed" is clicked instead, it will trigger a payout to the provider.
The transaction can only be canceled before it's marked as complete. Transactions using the "Purchase" process will automatically be marked complete 14 days after the provider marks the transaction as "Shipped"
Why refunds should be done through Console, not via the Stripe dashboard
IMPORTANT: We strongly advise canceling transactions via Console, instead of manually issuing refunds via the Stripe dashboard. Manually processing refunds in Stripe disrupts the transaction state synchronization with Sharetribe, as refund data is communicated from Sharetribe to Stripe but not vice versa.
There are situations in which a refund done through the Stripe Dashboard makes sense, but you should do this only if you're fully aware of the impacts.
Here is an example of how a refund done via the Stripe Dashboard can lead to issues. Imagine a provider with two transactions for 100€ each, with a provider + buyer commission of 10% each. Let's say the following happens:
Two buyers pay 110€ each.
The provider should receive 180€ ((100€ - 10€) x2).
The marketplace should receive 40€ (2 x 2 x 10€).
The admin refunds one payment manually from Stripe and chose:
not to refund the provider commission (10€)
to keep the buyer commission (10€) as a penalty to the provider
110€ (100€ + 10€ of buyer commission) is refunded to the buyer, from the provider's account
the balance on the provider account is then 70€.
Eventually it's time to pay out the other transaction:
the balance of 70€ is insufficient for paying out 90€ to the provider's bank account
the payout for that transaction will fail, even though nothing was wrong with that transaction.
Are partial refunds supported?
Sharetribe does not support issuing partial refunds out of the box, but it can be implemented with code customization by modifying the transaction process.
In practice, the Stripe Dashboard allows issuing partial refunds. However, issuing a partial refund through the Stripe dashboard will lead to state discrepancies, as the transaction remains unchanged in Sharetribe's system, unaware of the refunded state.
Consequently, even if a refund is processed via the Stripe Dashboard, from Sharetribe's standpoint, the transaction is not recognized as refunded. This discrepancy can cause issues with payouts for transactions that have been partially or fully refunded and might also affect future transactions (refer to this doc for a specific example). In situations where the refund is partial, a portion of the funds will continue to reside in the provider's Connect account balance. These funds will either need to be manually disbursed or will be automatically released by Stripe once the maximum duration for holding funds is reached.
Is the Stripe payment processing fee refunded?
No. While refunding a payment incurs no additional fees, the initial fees charged for processing the payment are not reimbursed (you can learn more about Stripe fees here).