I used PayPal SDK to create and execute a billing agreement that was supposed to charge the client every 3 months.
However, I used the setup_fee to charge the customer immediately and set the start date to be 1 month in the future instead of 3.
I can see on the customer's profile that the customer next payment due date is in one month and I am not capable of changing the next payment date.
I've already tried using the billing agreement update method, but it doesn't let me change the start_date or next_payment_date.
Any idea how I can change the next payment date for the existing billing agreement that have already been executed?
The answer is not great, but the somewhat solution I found was to suspend the plans.
To give more context, my problem was the following:
User subscribed to quarterly paid plan on September 15th and paid setup_fee
Next payment was incorrectly configured to be on October 15th - because I added a month to the start date*
The actual next payment date should be 3 months after, on December 15h
My "solution":
I paused the subscriptions for those users before October 15th, more specifically on October 10th.
I restarted the solution 2 days after the incorrect next_payment_date, on October 17th.
Once the plan was restarted the next_payment_date was set to 3 months later, so it was set to January 15th.
So as you can observe, I was not able to actually fix it, but rather I accepted to "lose" a month.
Note: Paypal support was LESS than useful. At first their recommendation was to cancel the plan and ask the users to buy again. Then I sugggested the approach of suspending and they INCORRECTLY confirmed to me that the next payment date would be the correct one, and that was not true, it was ONE month later. So be aware of what their support says.
Related
I have a business case where i need to bill the user for a subscription on a yearly basis but starting at a specific date: 1 of april of current or previous year.
Examples:
User registers on March 31st, 2015, gets charged 10$, gets charged 10$ again on the 1st of april 2015 and on each subsequent 1st of april
User registers on 1st of may 2015, gets charged 10$, gets billed again on 1st of april 2016 and each 1st of april after that
Can this be done with paypal recurring payments profiles? I don't see anything regarding this in the doc although i do see that i cannot start a recurring profile in the past:
The profile start date may not be earlier than the profile creation date.
https://developer.paypal.com/docs/classic/paypal-payments-pro/integration-guide/WPRecurringPayments/
Can this be done?
Use the INITAMT field to indicate an immediate charge in addition to the profile charges.
Your values will look something like this, using NVP with CreateRecurringPaymentsProfile
'BILLINGPERIOD'=>'YEAR', // bill on a yearly basis
'BILLINGFREQUENCY'=>1, // bill once ever year
'TOTALBILLINGCYCLES'=>0, // how many periods (in this case, years) 0 = no end
'INITAMT'=>10, // charge this amount right now
'AMT'=>10, // amount to be billed each time
'FAILEDINITAMTACTION'=>'CancelOnFailure', // if the init amount fails, do not create a profile
'PROFILESTARTDATE'=>'2015-04-01T00:00:00Z' // April 1, 2015 -- adjust as needed
... you also need the standard fields like the first name, last name, and card details.
Charging an initial amount has a big advantage -- you get to verify the card right away. Without an initial amount, paypal will establish the recurring payment profile without actually touching the card, as long as all the information is there. It does not make sure the information is right. So, you could be setting up a profile for a card that doesn't actually work. You won't find out about the failure until the first profile billing, and then, you don't get any information about why it failed, just the fact that it did. With INITAMT, you get the detailed feedback you get for a normal one-time charge, eg. the card was declined, the CVV was wrong, etc.
Be sure to carefully explain the bill dates to your user. If this is happening on 3/29/2015, you might not want to do the first billing on 4/1/2015, but wait a month. This really depends on your use-case.
Documentation
CreateRecurringPaymentsProfile - https://developer.paypal.com/docs/classic/api/merchant/CreateRecurringPaymentsProfile_API_Operation_NVP/
I have implemented PayPal Payments Standard regarding processing subscriptions in our website. We have subscription plans for monthly/yearly.
As per the link https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/subscribe_buttons/#id08ADF60L0E6 PayPal says if a monthly billing cycle starts at 30th of January, the next billing cycle will be adjusted to 1st of March. But in live, it is different. I found that PayPal is billing on 28th of February. Is there any updated link of PayPal regarding this billing change? This is because, we need to display an expiration date to our customer for the current billing cycle/subscription.
Now I have doubts about the following:
How PayPal will adjust if the monthly billing cycle starts at 31st of January? Feb 28th or March 1st or March 2nd.
How PayPal will adjust if the yearly billing cycle starts at 29th February of a leap year? February 28th or March 1st.
My concern about billing date is that we are displaying the expiration dates to customers of current subscription. With no clear information of next billing date from PayPal, I am confused which date to display for next billing cycle.
Please let me know if any one is already handling these issues.
Thanks in advance!!!
I was also a bit confused, but found a good reference on their docs:
Recurring payments are collected on the same day of the month. If the
initial recurring payment falls on the 31st, PayPal eventually adjusts
the billing cycle to the 1st of the month. If the initial recurring
payment falls on the 29th or 30th, PayPal adjusts the billing cycle to
the 1st of the month on the following February.
Following what they've specified, I think the right answer to to both of your questions is:
It would be adjusted to March 1st.
For more examples, this reference might help:
https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/subscription_billing_cycles/
I am currently using Paypal for subscription payments. Mostly it works fine but my problem is this:
If I am away for a week, how do I handle this? People pay mostly for the service the site provides and expect a certain amount of content added every day (or at least a weekly average amount). Therefore people shouldn't have to pay for access to the site during the time it is not being updated.
Previously I added the number of days I was away to the number of days of subscription everyone had remaining. But now there are people whose subscriptions are a few weeks into the future. Which is fine for me, but confused a lot of people.
To further confuse matters, some people pay weekly, some monthly, some annually. There is a 7 day (no Paypal needed) trial. People get their first 2 weeks in a subscription for a token amount. Some people don't pay a subscription and just pay for a week/month/etc as and then they want to.
The one-off payments and the free trial should be simple enough, I can add the days I'm away onto their account and they will know not to pay until it runs out. So it's mostly the subscription people that are the problem.
I see I can suspend payments, but I can't find any details of how this would work. If I imagine I am away from Monday until Thursday, I assume suspending payments for people wouldn't work - if someone's payment is due on Friday, I would have unsuspended the payments by then and their payment will go out as normal. If their payment was due on the Wednesday, the next time a payment will be taken is next Wednesday, so they will miss out on Friday (when I get back) until Wednesday when their next payment is taken. Or maybe suspending payments doesn't work like that.
An ideal situation would be to push user's payment forward until I'm back. I'd lengthen everyone's membership until the Friday and then payments would then start again from then - but I've not found any option to change subscription days.
I could cancel membership payments and then hope everyone signs back up, but I don't like that option.
Have I missed an option or is this one of those impossible situations?
Answering my own question. The answer was very easy.
The best solution I've found is to add extra days to every ones subscription. Then just the recurring payment people, I need to lower their subscription payment. And then put it back to it's original value afterwards.
As a simple example. The subscription is £14 per week. I have 4 days off. Upon return I add 4 days to everyone (or a proportional amount (if they subscribe two days before I return, for example)). Then I make everyone's next subscription payment reduced by £8 (they subscription averages at £2 per day - for 4 days). Then after their reduced payment - make sure it goes back to normal.
I am offering an annual program and want to automatically withdraw payments from my clients via PayPal. I see how to create a subscription to do this.
However, it charges them one month after they pay the first installment. I really want to bill all of my clients on the 1st of the month for 12 months, to simply the accounting for myself and them.
Is there a way to create an automatic payment on the 1st of every month without asking all of my clients to pay on that specific day?
I called Paypal and they said it would require html coding, but couldn't tell me HOW that might be accomplished for someone like me who doesn't write code.
If you're using the Recurring Payments API you can specify the PROFILESTARTDATE and set it to whatever future date you want. The profile will be become active immediatly, but it won't start until that date, which is when the first payment would be made.
Just keep in mind if somebody signs up on the 2nd of the month you'll basically be giving them a free month.
We are using paypal recurring payments programmatically using the Express Checkout APIs.
Based on the docs, it seems that the profile can take up to 24 hours to activate. I'm trying to figure out how to setup the billing start date such that it charges on the day that the profile activates, rather than forcing it to wait up to 24 hours.
Based on the API docs, it seems that I need to pass in the start date at the time of profile creation, which has forced me to do (today + 1 day) to force the 24 hour delay. But then if the profile activates right away and I get an IPN message, i still have to force the customer to wait for that 24 hour period...which doesn't seem very nice.
Although i can do an initamt for an upfront payment, I'm trying to avoid doing it b/c i think that would make me reduce the renewal period (e.g. if it's a 6 month subscription, i would charge 1 month upfront and do a 5 month recurring.), which would be confusing for the consumer.
I'm hoping someone can help me with this.
Docs.
Just wanted to follow-up on this. I spoke with PayPal today to clarify the issue.
They recommended using an initial payment to charge right away and then reducing the subscription term by 1 interval. So if you have a six month payment, then do a 1 month charge immediately, then do a 5 month recurring. Seems sort or ridiculous and partially confusing for the consumer.
They also confirmed that the initial recurring profile step may be delayed up to a day b/c it is run as batches.
Put that together with the fact that the system skips February for end of month payments (they adjust to the first of the month), and you've got yourself a lot of fun times ahead.
Ya it's best to do an initial payment and then subtract one from your interval or put your start interval 1 unit into the future.
Also note that if the initial payment if unable to be charged the API call will fail where as without the initial payment the API call can go through (success response) but when the payment gets charged (up to 24hrs later), it has the chanced to not be successful.
ie. credit card is good so it approves the recurring billing but when it attempts to charge, for some reason it gets rejected.
Make sure you have IPN listeners for recurring_payment_skipped to take account for that.
Simply charge for 6 month instantly and set the recurring payments to start after 6 months from the moment of initial payment.