Canceling or downgrading a subscription with a prorated refund

550 views
Skip to first unread message

Philippe Le Roux

unread,
Oct 15, 2021, 5:58:11 PM10/15/21
to Stripe API Discussion
Hi,

We're using Stripe API since almost three years ago and are in the process to refactor dome things to offer a more effective transactional experience to our clients.

We offer subscriptions to different products. On subscription can have one product or multiple products. We have only one subscription per client.

The problem we have is when a client want to remove a product. We want to be able to remove the product from the subscription, refund the prorated amount of non used time and have an invoice with the amount refunded (including the taxes).

We tried to do it in the dashboard or through the API for both situations (canceling a unique product subscription or removing a product in a subscription), it doesn't refund the client and put the credited amount in the client Balance. Then we don't have a way to refund the balance.

Can somebody tell us what's the right process we need to apply for the all function (removing a product, generating the invoice with taxes and refunding the client)?

Thanks in advance,

PS: I contacted support a couple of times about that and it's escalating to email and I am still waiting feedback 48h later.



Si vous ne souhaitez plus recevoir de messages commerciaux de Certimail ou si vous avez un commentaires à formuler suite à nos envois, veuillez l'indiquer en répondant à ce message.

Remi J.

unread,
Oct 15, 2021, 6:38:52 PM10/15/21
to Stripe API Discussion
Hello Philippe,

We don't have a solution that will automatically refund the customer when an update to their subscription leads to a credit. Our product will automatically add the balance to the customer balance so that it's used on future invoices instead. This is the most common approach for businesses with recurring business.

The reason we don't have this as an option is that we don't support sending funds back to a payment method without this being tied to a previous payment. You can't charge someone $20 five times and then just send them back $100. Instead, you have to refund each charge so that the refund itself is tied to the original payment. It also ensures that the cardholder can't dispute those payments with their bank since they have been explicitly refunded.

With that in mind, it's possible for a subscription to have been upgraded a few times over the past month where the customer was charged in small increments. When they decide to cancel the most expensive price for example it's possible that you owe them a larger credit than what you most recently charged them. The recommended approach in that case is to build some logic that will look at how much credit they got after the downgrade and then refund the most recent payment that customer had for that amount. If that payment is lower than the credit amount, you then move to the next payment, until you've exhausted the whole credit amount. Once you're done, you can reset their customer balance to remove the credit.

It's definitely complex to build properly, but it'd be as complex to abstract this on our end as every business will handle refunds in a different manner. It's something we've discussed in the past that we might offer in the future though but we haven't started working on this.

I hope this puts you on the right track, though you might be better off with defaulting to the credit for future invoices instead and handle the edge-case of customers requiring a refund by hand in the Dashboard for example.
Best,
Remi

--
To unsubscribe from this group and stop receiving emails from it, send an email to api-discuss...@lists.stripe.com.
Reply all
Reply to author
Forward
0 new messages