Can someone help me understand billing cycles with refunds? Note this is for refunds, not app credits.
Scenario: The Store installs (e.g. Jan 1st) and completes the trial but uninstalls on the day their trial ends (e.g. Jan 3rd). A refund is given since they uninstalled the same day their trial ended, but the invoice process had already begun.
If they reinstall within the same billing cycle (e.g. Jan 15th), does their billing cycle
A. start over on Jan 15th, or do they
B. continue their original cycle as described in the docs?
If B, they are essentially given one billing cycle for free, right?
Shopify’s docs don’t reference refunds when talking about reinstalls in the same original billing cycle.
Refunds shouldn’t be automatically issued when merchants uninstall an app as they are typically only applied at the developer’s discretion. If you have seen otherwise, let me know!
So for your scenario, we would assume if a bill was issued that the merchant uninstalled after the trial had ended. Then, if they reinstall on Jan 15th, option B would apply. They continue their original billing cycle. This isn’t necessarily getting a free cycle though, since they’ve already paid for that period (if no refund was given).
“Recurring app charges are generated the first time an app charge is approved, and then on the first day of an app’s billing cycle. Because of this, a charge will appear on your bill even if you uninstall an app only a day or two after you install it.”
As an act of goodwill you could choose to offer a refund or credit for the time they weren’t using it, but it shouldn’t be happening automatically in this scenario.
I issued a refund because the billing process had already started. Once they paid their bill, I refunded them since they uninstalled within hours of their trial ending. This felt like the right thing to do since once the billing process starts, I can’t stop it.
But I did issue a refund, which you didn’t really answer. The way I read your response, though, is that they do get it for free.
Isn’t this a way for merchants to take advantage?
How can we as app developers prevent this from happening?
Can we make it so that apps can stop the billing process assuming it hasn’t been paid yet? That way we aren’t issuing a refund simply because we can’t control the billing status once the trial ends.
Thanks for that clarification. When I read your post I was making an assumption that the refund was somehow granted automatically. Apologies for misreading that.
This is an interesting scenario for sure. I would say ideally it would be best not to issue refunds or credits until the end of the current app billing cycle that they already paid for. You could position it with merchants to let them know that this allows them to choose to re-install anytime during the remainder of the cycle and if they don’t reactivate, then you’ll issue the refund. This way you are protecting yourself from being taken advantage of.
In your case, when they reinstalled, was the previous amount deferred at all? Are you using managed billing or the Billing API? I’m happy to continue digging in to this with you and find the ideal path forward.
Sounds good in theory and I appreciate the positioning, but how would that work for annual plans? I used a shorter period in my example but it’s for an annual plan. There’s no way a merchant would wait for a whole year.
The merchant hasn’t resinstalled yet but they reached out asking about reinstalling. I didn’t know how to address the billing because I of course don’t want to give them a full year for free.
I think in this case, the merchant doesn’t realize they could take advantage, which is a good thing. But it certainly makes me not want to issue any refunds for those bad actors who already try to get refunds on a bill they never pay. I don’t know who a bad actor is, so I try to treat everyone the same, which is why I require a paid invoice before refunding.
I use the Billing API
Thank you!!
I am often asked to refund because they uninstalled the same day their trial ended, but the billing has already started. The unfortunate truth is that more often than not, these are bad actors trying to get a refund without paying their bill - so I’m already cautious when it comes to refunds.
That’s why I was wondering if there was a way for us to stop the billing process. Or perhaps a better option is if a refund is given, especially for the full amount, Shopify resets the billing cycle (or give us the option to reset it).
If needed, I can handle it on our end by essentially blocking everyone I refund from reinstalling in the off chance that they try to take advantage, but that is a terrible customer experience.
Hey! I’ve reached out to our Billing team who have confirmed that when an app charge is fully refunded (not credits) and a merchant decides to re-install your app that the merchant will have to pay again. They won’t be able to use this as a workaround to get a free billing cycle.
Thank you so much @KyleG-Shopify for confirming with the billing team. Glad to hear that if a full refund is given, the merchant will be prompted to pay again.
I really appreciate your help in getting answers to my questions.