PayPal Subscription Plan: Suggestion in case number of user licenses change in between

Hello Folks,

I've a product website comprised with subscription plan. I've two types of subscription i.e. Monthly and Yearly.
How I can charge from PayPal in case number of licenses changed by customer?
For example,
The customer comes with 5 years of subscription plan for Product and I charge yearly subscription from PayPal.
Assume, at the time of beginning;
==> Customer buys 10 licenses and per user licenses cost is 100$
==> So, I've charged yearly 1000$ through PayPal
==> Now, after four months customer wants to buy 20 licenses now. In that case, for next year of subscription can easily manage i.e. 2000$ per year
==> BUT, for current year, I need to charge 666.67$ more for 10 more licenses for 8 months.

Question: Here is, as PayPal integration with Subscription plan is yearly then what are different alternatives we have to charge 666.67$ amount?

Best Regards
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Andrew AngellCo-Owner / DeveloperCommented:
Are you working with Standard Subscriptions or the Express Checkout API with Recurring Payments?

If you're working with Express Checkout you could add a billing agreement to the original checkout.  Then you could use the DoReferenceTransaction API at any time in the future to process any amounts you need to without further approval.

If you're working with Standard Subscription buttons you won't be able to do that.  Your only option will be to send them a money request for the additional they need to pay for the current year and let them go through and pay it.
MohitPanditAuthor Commented:
Thanks for quick response.

We are using standard subscription with recurring payment.

Best Regards
MohitPanditAuthor Commented:
I wanted to add one more point,
We are using Standard subscription with recurring payments without subscription buttons.

We use to enter customer information along with credit card information and through C# programming; we use to call API of PayPal.

Do you have other thoughts on it?

Best Regards
Exploring SharePoint 2016

Explore SharePoint 2016, the web-based, collaborative platform that integrates with Microsoft Office to provide intranets, secure document management, and collaboration so you can develop your online and offline capabilities.

Andrew AngellCo-Owner / DeveloperCommented:
I think you're confusing terminology.  "Payments Standard" with PayPal means that you're using the basic HTML buttons as opposed to the API.  It sounds like you are indeed using the API which means you must be using Express Checkout.  Can you confirm that?
MohitPanditAuthor Commented:
I checked again with my development team:

For recurring payment, we are using Paypal API neither the subscription buttons nor the express checkout.

We don't want to redirect the customer to the paypal site, that's why we are not using Express checkout here. Also it doesn't match with our requirement.

As for recurring payment, main admin user can also handles the update subscription process for the client user.
So, all the detail related to the client user is a saved only once while creating their "Profile" on the paypal site. On the basis of this "Profile" we are processing the recurring payment flow.

Do you have other thoughts?

Best Regards
Andrew AngellCo-Owner / DeveloperCommented:
Ok, so you must be using Payments Pro then..??  Are you working with DoDirectPayment / CreateRecurringPaymentsProfile, or are you working with the PayFlow Gateway?
Andrew AngellCo-Owner / DeveloperCommented:
Either way you can run a reference transaction to process the additional amount you need.  There is separate documentation for PayFlow vs PayPal APIs.
MohitPanditAuthor Commented:
Thanks for your valuable feedback. I shall take a look over it and let you update.

Best Regards
MohitPanditAuthor Commented:
I checked with dev team and for Recurring payments they are using "CreateRecurringPaymentsProfile" , " UpdateRecurringPaymentsProfile" API.

Could you please stamp with your valuable suggestions?

Best Regards
Andrew AngellCo-Owner / DeveloperCommented:
What you're going to need to do is add an additional call to DoDirectPayment prior to calling CreateRecurringPaymentsProfile.  

With DDP, you can run a $0 authorization, or what they call a card verification.  This will hit the bank to ensure the card is valid, but it will not run anything at all.  

You will get a transaction ID back from that $0 authorization transaction that you'll want to save with the customer data or order data or wherever you're saving that stuff.

When the time comes that you need to process some new, random amount, you'll pull the transaction ID for the customer from their $0 authorization, and you'll pass that into the DoReferenceTransaction API along with the amount you want to charge.  

As long as the card has sufficient funds at that point the transaction will complete successfully.
MohitPanditAuthor Commented:
But as per scenario,

1. We've already created recurring payments for one year;
2. Now, we want additional amount for more licenses (as per aforesaid example 666.67$)
3. Also, we need to set next year recurring payments with revised amount (as per aforesaid example 2000$).

As per you comments

What you're going to need to do is add an additional call to DoDirectPayment prior to calling CreateRecurringPaymentsProfile.  

Can we have DoDirectPayment in that scenario?

Best Regards
Andrew AngellCo-Owner / DeveloperCommented:
What I outlined would only work for new people signing up.  If you're trying to get this done with people who have already created profiles you may or may not be able to depending on a few things.

In your CRPP request are you including an INITAMT?  If so, you would be getting a transaction ID back for that transaction, and that transaction ID should work in the DoReferenceTransaction request.  I haven't tested that sort of thing specifically, but in theory it should work.  You'll need to test it in the sandbox.

If that's the case, then you don't need to worry about DoDirectPayment at all.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
MohitPanditAuthor Commented:
Thanks for quick response. Let me take a look over it and let you update.

Best Regards
MohitPanditAuthor Commented:
As discussed with dev team, they are not using INITAMT right now. Is it still possible?

Apart from this, what will be your suggestions in case, customer does choose yearly subscription and after few months converts with monthly subscription and vice-verse.

In that case, we need to charge consumed month with pro-rate basis (like choose yearly and after four months converted with monthly; so for four months, it should charge pro-rate basis and after that monthly for next 8 months).

Do you have your great thoughts on it?

Best Regards
Andrew AngellCo-Owner / DeveloperCommented:
The process I outlined earlier would handle what you're explaining, but not for the current profiles.  Only for new sign-ups.  If you use the $0 authorization procedure in combination with your profile setup then you could process pro-rated amounts any time you need to.  To update the profile for the next year you would just use the UpdateRecurringPaymentsProfile API.
Andrew AngellCo-Owner / DeveloperCommented:
Get it all worked out?
MohitPanditAuthor Commented:
Thanks Andrew
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.