eCommerce
  Navigation

What Classifies as a Recurring product?

Recurring products are any subscription based products that are billed automatically in a given interval. These can be any service that require regular payments to keep the service active. For example, a training program, club membership, or a blog subscription.

Although the setup in the admin is quite straightforward, a PayPal Payflow Pro account is a pre-requisite for the subscriptions to work.  Please click here to learn more about setting up an account with Paypal.

Setting up a Recurring Product

Once a product has been setup as per the  instructions mentioned here, the SKU tab of the product allows one to set the product as a recurring item.

This is somewhat how your screen may look like:

Change the frequency of your subscription to the desired period:

If your service has a  start-up fee, you can add the amount there so it can be charged initially as a one-time fee start-up fee. Otherwise, leave this field empty.

The  Start Date  can be a given date or it can be something relative like "next Monday", "next month", etc. See the Relative Time and Date Formats  section below

The Minimum Duration can be specified if you prohibit someone from canceling for a given duration. If a minimum duration is not specified, then the user can stop the service at any time, regardless of the option chosen under "Cancellation Policy" since the minimum must always be achieved for the cancellation policies to take effect.

The  Maximum Duration  can also be specified if you think it's needed, otherwise leave it blank or a put a zero there.

Cancellation Policy: 

Refund and stop the service - users will be able to stop the service immediately if there are still some number of occurrences remaining. However, only the last period's amount will be refunded.

Stop the service immediately - allows users to stop the recurring billing service immediately without refunds. For instance, if they were billed yesterday and decide to discontinue today, then they will not be able to get a refund. 

Stop the service by the end of the period - this option stops the recurring payment when the maximum duration is reached or when the subscription is cancelled via the admin on our end or via Paypal by the user.

FAQs

What is the default cancellation policy?

The default policy gives the users options to stop / renew a service anytime unless a minimum number of occurrences is set via the "Minimum Duration" field in the admin.

What happens to the stop/renew options for the other cancellation policies when there is minimum no. of occurrences set?

The minimum must always be achieved for the cancellation policies to take effect.

If someone's credit card expires, what does that trigger? Does it create an order in the system? And once their payment is made, when do they start?

The order and invoice gets created but marked unpaid. The person's account is marked as inactive in the recurring section until their payment is received.

On the My Recurring Orders section on the website: Does the renewal of an order create an order and invoice automatically? In admin, do these show under Orders/Invoices/Recurring or all?

A renewal does not create an order or invoice. It is the receipt of payment after the renewal is done that creates the orders and invoices automatically. These show under Orders and Invoices respectively. Recurring is not used as an accounting tool. It's only to see the subscribers.

What is accomplished duration and successful payments on the my recurring orders page?

Accomplished duration is the duration of your subscription (including paused times).

Successful payments show the number of successful payments that have been received.

Is it possible to add automatic access to certain parts of the website so when a user signs up for a recurring product they can automatically access the website?

Yes, it's possible, but has to be customized per site. Send your requirements to help@aspiresoft.com to get a quote.

Can an invoice / order be deleted if it hasn't been paid? What if only some of the orders and invoices of a given customer are deleted, but others are kept so customer can pay for at least a few?

The system creates orders and invoices based on payments on Paypal. If an order / invoice is deleted from the admin, but the profile is kept active, our system would recreate all the missing orders and invoices in the next batch. The best approach for such cases is to first cancel the profile in the admin, remove the invoices that you don't expect to receive payment for and leave only the ones that the customer intends to pay. These can be paid any time from the pay link viat he Orders' section in one's account on the website.

What happens when a customer updates the credit card information on a paused profile?

The default behavior from Paypal in this case is that such an update will automatically activate their profile.

Relative Time and Date Formats

When setting up the Start Date for a recurring product, you may use the following symbols and day-based notations: 

Used Symbols

Description
Format

dayname

'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'

daytext

'weekday' | 'weekdays'

number

[+-]?[0-9]+

ordinal

'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' | 'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' | 'next' | 'last' | 'previous' | 'this'

reltext

'next' | 'last' | 'previous' | 'this'

space

[ \t]+

unit

(('sec' | 'second' | 'min' | 'minute' | 'hour' | 'day' | 'fortnight' | 'forthnight' | 'month' | 'year') 's'?) | 'weeks' | daytext

Day-based Notations

Format
Description
Examples

'yesterday'

Midnight of yesterday

"yesterday 14:00"

'midnight'

The time is set to 00:00:00

'today'

The time is set to 00:00:00

'now'

Now - this is simply ignored

'noon'

The time is set to 12:00:00

"yesterday noon"

'tomorrow'

Midnight of tomorrow

'back of' hour'

15 minutes past the specified hour

"back of 7pm", "back of 15"

'front of' hour'

15 minutes before the specified hour

"front of 5am", "front of 23"

'first day of'

Sets the day of the first of the current month. This phrase is best used together with a month name following it.

"first day of January 2008"

'last day of'

Sets the day to the last day of the current month. This phrase is best used together with a month name following it.
"last day of next month"
ordinal space dayname space 'of'

Calculates the x-th week day of the current month.

"first sat of July 2008"

'last' space dayname space 'of'

Calculates the last week day of the current month.

"last sat of July 2008"

number space? (unit | 'week')

Handles relative time items where the value is a number.

"+5 weeks", "12 day", "-7 weekdays"

ordinal space unit

Handles relative time items where the value is text.

"fifth day", "second month"

'ago'

Negates all the values of previously found relative time items.

"2 days ago", "8 days ago 14:00", "2 months 5 days ago", "2 months ago 5 days", "2 days ago"

dayname

Moves to the next day of this name.

"Monday"

reltext space'week'

Handles the special format "weekday + last/this/next week".

"Monday next week"

Note:

1.  Relative statements are always processed  after  non-relative statements. This makes "+1 week july 2008" and "july 2008 +1 week" equivalent.

Exceptions to this rule are: "yesterday", "midnight", "today", "noon" and "tomorrow". Note that "tomorrow 11:00" and "11:00 tomorrow" are different. Considering today's date of "July 23rd, 2008" the first one produces "2008-07-24 11:00" where as the second one produces "2008-07-24 00:00". The reason for this is that those five statements directly influence the current time.

2.  Relative month values are calculated based on the length of months that they pass through. An example would be "+2 month 2011-11-30", which would produce "2012-01-30". This is due to November being 30 days in length, and December being 31 days in length, producing a total of 61 days.

3. number is an integer number; if a decimal number is given, the dot (or comma) is likely interpreted as delimiter. For instance, '+1.5 hours'is parsed like '+1 5 hours', not as '+1 hour +30 minutes'.

4.  Observe the following remarks when the current day-of-week is the same as the day-of-week used in the date/time string. The current day-of-week could have been (re-)calculated by non-relative parts of the date/time string however.

  • "dayname" does not advance to another day. (Example: "Wed July 23rd, 2008" means "2008-07-23").
  • "number dayname" does not advance to another day. (Example: "1 wednesday july 23rd, 2008" means "2008-07-23").
  • "number week dayname" will first add the number of weeks, but does not advance to another day. In this case "number week" and "dayname" are two distinct blocks. (Example: "+1 week wednesday july 23rd, 2008" means "2008-07-30").
  • "ordinal dayname" does advance to another day. (Example "first wednesday july 23rd, 2008" means "2008-07-30").
  • "number week ordinal dayname" will first add the number of weeks, and then advances to another day. In this case "number week" and "ordinal dayname" are two distinct blocks. (Example: "+1 week first wednesday july 23rd, 2008" means "2008-08-06").
  • "ordinal dayname 'of' " does not advance to another day. (Example: "first wednesday of july 23rd, 2008" means "2008-07-02" because the specific phrase with 'of' resets the day-of-month to '1' and the '23rd' is ignored here).

Also observe that the "of" in "ordinal space dayname space 'of' " and "'last' space dayname space 'of' " does something special.

  • It sets the day-of-month to 1.
  • "ordinal dayname 'of' " does not advance to another day. (Example: "first tuesday of july 2008" means "2008-07-01").
  • "ordinal dayname " does advance to another day. (Example: "first tuesday july 2008" means "2008-07-08", see also point 4 in the list above).
  • "'last' dayname 'of' " takes the last dayname of the current month. (Example: "last wed of july 2008" means "2008-07-30")
  • "'last' dayname" takes the last dayname from the current day. (Example: "last wed july 2008" means "2008-06-25"; "july 2008" first sets the current date to "2008-07-01" and then "last wed" moves to the previous Wednesday which is "2008-06-25").

Use this online testing tool to verify that your setup will work as expected: http://strtotime.co.uk/


Please send us suggestions regarding this documentation page
If you would like to recommend improvements to this page, please leave a suggestion for the documentation team.

Be the first to write a comment...