5

Hi all Braintree experts (and others)

We are currently working on this app which uses Braintree for all the payment stuff.

The idea is pretty simple; an user can either subscribe for a monthly or yearly membership.

For some reason Braintree decided us not to update an existing subscription from monthly to yearly and visa versa so easily.

If you are stubborn like me and try it any way, you'll receive the following error message: Cannot update subscription to a plan with a different billing frequency.

Updating a subscription within the same billing cycle comes with the neath option; proratedCharges, which calculates and handles the difference in price.

Now my question is: What is the best way to change from monthly to yearly (and visa versa) with the difference in price calculated and handled (like proratedCharges does)?

I was thinking of:

  • Checking the balance of the current subscription
  • Canceling the current subscription
  • Creating a new subscription with the difference from the balance included (one time discount, or price increase, not even sure if that's possible)

Because Braintree doesn't really says a lot for this matter, and the fact that money will be involved, I really want to get this done right. So I am validating with you guys. Thanks!

Jim Vercoelen
  • 1,048
  • 2
  • 14
  • 40
  • so what was your solution in the end, because I'm running into the seems trivial limitations that are kind of difficult to find a workaround that is consistent. – EsseTi Jul 12 '18 at 12:33

1 Answers1

7

Full disclosure: I work at Braintree. If you have any further questions, feel free to contact support.

Your proposed solution would work. You can't update an existing subscription's billing frequency.

As a workaround, you can cancel the existing subscription in either the Control Panel or using subscription.cancel. Then, create a new one that factors in the old subscription's balance using add discounts or add-ons.

Community
  • 1
  • 1
hollabaq
  • 597
  • 3
  • 13
  • 2
    It would be nice if you guys added some sample code for this that also showed how one might manually prorate if they wanted to. – trueinViso Apr 24 '17 at 17:52
  • Thanks for the feedback- you should send this to our documentation team by navigating to ["Give us some feedback on this page"](https://docs.google.com/forms/d/1vjNpzXbgr7l646hb039dj5V33HjBTPLPhmx-zhWvIaA/viewform?entry.1171727737=) at the bottom of [the Braintree docs page you're viewing](https://developers.braintreepayments.com/guides/recurring-billing/manage/ruby). – hollabaq Apr 24 '17 at 21:26