3
votes

I have 2 types of yearly subscription on my website, one at 99$ and one at 299$. I want the user to be able to upgrade/downgrade his subscription when he wants to. I've tried to use the "modify" option of Paypal but it only gives me to possibility to upgrade to 20% every 180 days which is really not what I need. I've searched the Web and all I could find was:

  1. it's not possible
  2. use the paypal payflow
  3. cancel and start a new subscription

The #2, I can't find any good documentation. The #3, I don't want the user to cancel and then ask him to create a new subscription. Because if he payed 99$ and after 3 months and he wants to change for the 299$ subscription, I want to be able to charge him only 9/12 of the 299$ left minus 9/12 of the 99$ that he is not suppose to pay because he is switching subscription. (299*9/12 - 99*9/12 = amount left)

Anyone has a good way to proceed? Also, most of the shared links, in the answers that I find, are not valid anymore which makes it even harder.

1

1 Answers

4
votes

When working with Standard Subscriptions or Express Checkout w/ Recurring Payments you will run into this limitation that you've described.

If you use Payments Pro, though, which could be done on the PayFlow Gateway or the DoDirectPayment / CreateRecurringPaymentsProfile API depending on the version of PayPal you're on, then no limitation would exist on that profile.

Payments Pro is really nothing more than accepting credit cards directly without any redirect through PayPal. People just enter their card details directly on your site. PayPal charges $30/mo for this, and then another $30/mo for the add-on of recurring payments, so that can be an expensive option.

Another option would be to use Reference Transactions. This can be used with both Express Checkout and Payments Pro, and in this case you would setup a billing agreement, and then you can use the DoReferenceTransaction API at any time to process a payment of any amount without further approval. So in this case you would basically need to create your own recurring system that checks all your customer profile records each day to see which ones are due, and loop through them all to submit that DoReferenceTransaction request for each one every day. Of course, you could also set that up to just process everybody on the same day each month, or however you want to handle it.

There are definitely options, but they require more advanced development with the APIs than standard subscriptions.