<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://3.19.219.109/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Joshua</id>
		<title>WHMCS Documentation - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://3.19.219.109/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Joshua"/>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/Special:Contributions/Joshua"/>
		<updated>2026-04-04T00:46:29Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>http://3.19.219.109/index.php?title=Release_Notes&amp;diff=31032</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Release_Notes&amp;diff=31032"/>
				<updated>2021-12-14T14:31:07Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table class=&amp;quot;table table-striped&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;'''Version Number'''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;'''First Release Date'''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;'''Release Notes'''&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 8.4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1st December 2021&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version_8.4.0_Release_Notes|View Release Notes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 8.3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13th October 2021&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version_8.3.0_Release_Notes|View Release Notes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 8.2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;21st June 2021&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version_8.2.0_Release_Notes|View Release Notes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 8.1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;29th Dec 2020&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 8.1.0 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 8.0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;28th Sep 2020&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 8.0.0 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7th April 2020&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.10 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;8th January 2020&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.9 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;28th August 2019&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.8 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;21st January 2019&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.7 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;31st July 2018&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.6 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2nd April 2018&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.5 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14th November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.4 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3rd October 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.3 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;16th May 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.2 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;14th December 2016&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.1 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 7.0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3rd October 2016&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 7.0 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 6.3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;29th March 2016&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 6.3 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 6.2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;9th December 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 6.2 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 6.1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;22nd September 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 6.1 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 6.0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; 7th July 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 6.0 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 5.3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5th February 2014&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 5.3 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 5.2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;12th March 2013&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 5.2 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 5.1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6th July 2012&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 5.1 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 5.0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;24th November 2011&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 5.0 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 4.5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18th May 2011&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 4.5 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 4.4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;13th December 2010&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 4.4 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 4.3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;18th August 2010&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 4.3 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 4.2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10th March 2010&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 4.2 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 4.1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;30th September 2009&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 4.1 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Version 4.0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;6th May 2009&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;[[Version 4.0 Release Notes|View Release Notes]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-related-pages&amp;quot;&amp;gt;[[Security Levels]] | [http://blog.whmcs.com/?t=106987 About Release Numbering]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=31031</id>
		<title>Licensing Addon</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=31031"/>
				<updated>2021-12-13T21:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WHMCS licensing addon module allows you to license your own web applications for selling to end users. Supporting both local license keys and periodic remote checking, it offers a robust and secure way of licensing your scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Licensing Addon&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The WHMCS Licensing Addon  is not associated with the [[WHMCS_cPanel_Licensing_Module|cPanel Licensing Automation module]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
By purchasing the licensing addon, this will unlock access to the licensing addon module files which are now bundled with the default WHMCS install package.  So after purchasing, there are no manual installation steps necessary any more - you just need to activate and configure the module in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Addon Modules''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Addon Modules'''. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* '''Public License Verification Tool''' - Enable this option to make available a verification page which visitors can use to check whether a domain is licensed to be using your software. The appearance can be customised by editing the /modles/addons/licensing/licenseverify.tpl template file. It's accessed at http://www.yoursite.com/whmcs/index.php?m=licensing&lt;br /&gt;
* '''Maximum Allowed Reissues''' - Should you wish to limit how many times a client can reissue a licence, specify the maximum number of reissues here.&lt;br /&gt;
* '''Auto Logs Prune''' - To prevent the licence access logs from becoming too large you can specify for how long they should be kept.&lt;br /&gt;
&lt;br /&gt;
==Setting up a licensing product==&lt;br /&gt;
&lt;br /&gt;
#Begin by creating a product under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services'''. More information on creating products is available at [[Products_and_Services#Products|Products and Services]]&lt;br /&gt;
#On the module settings tab, choose &amp;quot;License Software&amp;quot; in the Module dropdown&lt;br /&gt;
#The options for a licensing product will then appear. These are explained in detail below:&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonproductconfigrevised.png]]&lt;br /&gt;
&lt;br /&gt;
*Key Length - this defines how long the randomly generated key will be - enter the numerical value you want&lt;br /&gt;
*Key Prefix - this defines the start of the license key and is how you can validate an applicable key for the product you're performing the checking in has been entered - eg. Monthly-, Owned-, Mobile-, etc...&lt;br /&gt;
*Allow Reissue - determines whether a client can reissue the license from the client area&lt;br /&gt;
*Allow Domain Conflict - When unticked WHMCS will make sure the location at which the licence is being used matches the 'Valid Domain' value in the service record. Tick the option if you want to allow a user to run the product on multiple domains.&lt;br /&gt;
*Allow IP Conflict - as above but for the IP address&lt;br /&gt;
*Allow Directory Conflict - as above but for the directory&lt;br /&gt;
*Support/Updates Addon - explained in detail below&lt;br /&gt;
*Free Trial - This option can be ticked to prevent clients from using more than one licence of this product on the same domain. If a client tries to order a second copy of this product and use it on the same domain as a previous service, it will be automatically suspended with the reason &amp;quot;Duplicate Free Trial Use&amp;quot;. Useful for limiting free trials to one per domain.&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
&lt;br /&gt;
Downloads are how your client receives the software product after purchase.  These are configured using the existing digital download product release mechanism.  For more information on this, refer to [[Product Downloads Distribution]]&lt;br /&gt;
&lt;br /&gt;
==Addons==&lt;br /&gt;
&lt;br /&gt;
Each product can be assigned multiple addon products which can be added at the time of initial ordering or at a later date.  Uses for addons include extra value added services such as installation, configuration, upgrades, etc...  They allow you to charge additional fees for items which aren't required in order to utilise the actual product.&lt;br /&gt;
&lt;br /&gt;
==Support &amp;amp; Update Addons==&lt;br /&gt;
&lt;br /&gt;
If you enable these on your licensing product, then the client is required to have an active support &amp;amp; updates package in order to receive support &amp;amp; download the related product downloads.  This means you can charge your users for the continued support and updates using any of the recurring terms available to you in WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Setting up a Support &amp;amp; Updates Addon Package===&lt;br /&gt;
&lt;br /&gt;
The guide below explains how to create a support &amp;amp; updates package which is include free with the initial license purchase and then requires renewal once it expires.&lt;br /&gt;
&lt;br /&gt;
#Ensure your licensing product is created first&lt;br /&gt;
#Then, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Product Addons''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Product Addons'''.&lt;br /&gt;
#Click '''Add New'''.&lt;br /&gt;
#Enter the name, description, price and recurring cycle - leave the Show on Order setting unchecked&lt;br /&gt;
#Now tick the licensing product(s) in the applicable products section for the addon&lt;br /&gt;
#Now go back to the product configuration area and click the edit icon next to your licensing product&lt;br /&gt;
#On the Module Settings tab, choose the addon you just created in the &amp;quot;Support/Updates Addon&amp;quot; field and save&lt;br /&gt;
&lt;br /&gt;
And that's it! If you didn't want to include it free with the initial purchase, you would leave the setting on the Module Settings tab at None and tick the box for Show on Order in the addon configuration.&lt;br /&gt;
&lt;br /&gt;
==Module Commands==&lt;br /&gt;
&lt;br /&gt;
*Create - Used to generate the license key for the product with status Reissued&lt;br /&gt;
*Suspend - This will set the license status to Suspended&lt;br /&gt;
*Unsuspend - This will set the license status back to Active&lt;br /&gt;
*Terminate - This will set the license status to Expired&lt;br /&gt;
*Reissue - Sets the license status to Reissued so the domain, IP &amp;amp; directory is saved on the next check&lt;br /&gt;
*Revoke - This command will completely remove the license key and allow the number to be reused in future&lt;br /&gt;
*Manage - This button takes you to where you can view &amp;amp; edit the allowed domain, IP &amp;amp; directory for the license&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonrevised.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Managing Licenses==&lt;br /&gt;
&lt;br /&gt;
To manage licenses, go to Addons &amp;gt; Licenses Manager.  From here you can browse through all the license keys that have been issued, search for license keys and make changes to the allowed domains, ips and directory for a license.&lt;br /&gt;
&lt;br /&gt;
==Integrating the Check Code==&lt;br /&gt;
&lt;br /&gt;
The code used to integrate the license check is included with the addon in the &amp;lt;tt&amp;gt;/modules/servers/licensing/check_sample_code.php&amp;lt;/tt&amp;gt; file. The user can then enter their license key during an installation process or by pasting it into a file. You can then load that key in your file before calling the &amp;lt;tt&amp;gt;check_license&amp;lt;/tt&amp;gt; function to validate in which the file is run. For each successful check, a local key is returned. You can then store that local key in your database or a file to use locally for license verification on subsequent page loads.&lt;br /&gt;
&lt;br /&gt;
To integrate the license check, perform these steps:&lt;br /&gt;
&lt;br /&gt;
# Copy and paste the license check code from the &amp;lt;tt&amp;gt;check_sample_code.php&amp;lt;/tt&amp;gt; file into the top of the file you want to protect.&lt;br /&gt;
# Enter the System URL from your WHMCS installation in the &amp;lt;tt&amp;gt;$whmcsurl&amp;lt;/tt&amp;gt; variable.&lt;br /&gt;
# Customise the &amp;lt;tt&amp;gt;$licensing_secret_key&amp;lt;/tt&amp;gt; variable used to ensure your local keys are different from other licensing addon users.&lt;br /&gt;
# Optionally, change the &amp;lt;tt&amp;gt;$localkeydays&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$allowcheckfaildays&amp;lt;/tt&amp;gt; variables if you want to change how often a remote license check is made.&lt;br /&gt;
# Ensure that your code performs the following actions:&lt;br /&gt;
#* Retrieve the license key and local key from the database or file storage.&lt;br /&gt;
#* Call the &amp;lt;tt&amp;gt;check_license&amp;lt;/tt&amp;gt; function.&lt;br /&gt;
#* Perform the desired actions in accordance with the results of the &amp;lt;tt&amp;gt;check_license&amp;lt;/tt&amp;gt; function. For sample &amp;lt;tt&amp;gt;if&amp;lt;/tt&amp;gt; statements, see the &amp;lt;tt&amp;gt;check_sample_code.php&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
#* Store the local key that the license check returns.&lt;br /&gt;
&lt;br /&gt;
===Using Product Addons===&lt;br /&gt;
If the licensing product has any ordered addons, the results from the licensing addon will include a pipe separated string called &amp;quot;addons&amp;quot; with their details that can be processed and used for any number of purposes. For example: restricting access to certain features unless a particular addon has been ordered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [addons] =&amp;gt; name=Test Addon;nextduedate=2017-12-26;status=Active&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $addons from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;addons&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;;&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $tempresult) {&lt;br /&gt;
  $tempresults3 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
    $temparr[$tempresults3[0]] = $tempresults3[1];&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $addons[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Configurable Options===&lt;br /&gt;
If the licensing product has any ordered configurable options, the results from the licensing addon will include a pipe separated string called &amp;quot;configoptions&amp;quot; with their details that can be processed and used for any number of purposes. For example: limiting usage of software to a particular number of clients or admin users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[configoptions] =&amp;gt; Test=0|Test 002=&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $configoptions from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;configoptions&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $key =&amp;gt; $value) {&lt;br /&gt;
    $temparr[$key] = $value;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $configoptions[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==License Statuses==&lt;br /&gt;
&lt;br /&gt;
The license may be in one of these states:&lt;br /&gt;
&lt;br /&gt;
* '''Reissued''' — The license is ready to use and will record the domain, IP address, and installation path.&lt;br /&gt;
* '''Suspended''' — The license has been suspended and cannot be used at this time.&lt;br /&gt;
* '''Active''' — The license is currently being used with a valid domain, IP address, and installation path.&lt;br /&gt;
* '''Expired''' — The license has reached its expiration date.&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the local key?===&lt;br /&gt;
&lt;br /&gt;
The local key is the thing that stops the license checking code having to call your server on every page load. It's basically just an encrypted version of the license check data, so that when it's present and valid, the licensing addon doesn't have to make a remote call which would slow down your application/code, thus improving performance.  The local key will always be empty on the first check your client makes, but then with every successful remote check, a local key value is returned (sample code provided) which you then just need to store and pass into any future license check calls.  We recommend storing into a database for ease of updating and retrieval, but flat files can work just as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Note:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The module create function of this module does not generate a username and password by design. Therefore the username/password fields will be blank under the client's Products/services tab.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
&lt;br /&gt;
===Invalid Key===&lt;br /&gt;
This generally indicates that the licensing checking code is not passing a license key back to the licensing addon. The code being used will need to be corrected to ensure that it is returning the full license key to WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Remote Check Failed===&lt;br /&gt;
This suggests a connection problem between the user's server and the end client's server.&lt;br /&gt;
&lt;br /&gt;
The first step will be to provide the user with a cURL test script that attempts to connect to your WHMCS installation and run it from their server, correcting any detected issues.&lt;br /&gt;
&lt;br /&gt;
If that all appears clear, it could be due to a SSL configuration issue on the user's server. As a workaround, you can potentially add the following into your licence checking code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===A new local key is being generated on every request===&lt;br /&gt;
This behaviour suggests that the local licence key returned by the license checking function after a successful check is not being stored. When no local licence key is stored and passed into the licensing checking function, a remote check has to be performed and a new local key is generated.&lt;br /&gt;
&lt;br /&gt;
Storing the local license key returned by the license checking function and passing it back into the checking function should resolve this. We recommend storing it in a way most appropriate for your particular software, for example in a flat file or in a database.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Order_Management&amp;diff=30993</id>
		<title>Order Management</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Order_Management&amp;diff=30993"/>
				<updated>2021-11-29T21:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About Orders==&lt;br /&gt;
&lt;br /&gt;
[[File:Videotutorial.png‎|center|link=https://www.youtube.com/watch?v=Vrl7ShvsCcg&amp;amp;hd=1|Watch Video Tutorial]]&lt;br /&gt;
&lt;br /&gt;
Every time a user buys something from you, this creates an &amp;quot;order&amp;quot; record. The order holds all the details relating to a checkout process, including a unique reference number, any promo codes that the client used, the affiliate who referred them, and [[Order_Management#Reviewing_Fraud_Check_Results|fraud check results]] (if enabled).&lt;br /&gt;
&lt;br /&gt;
The system doesn't create orders for renewals, as those don't involve a new checkout process and are recurring invoices for a previous order. Orders always remain pending until admin review, even though the items inside them will auto activate (if you set them to), allowing your staff to review and process all the new orders you receive and run any manual checks or actions you deem necessary for new purchases.&lt;br /&gt;
&lt;br /&gt;
The system assigns two unique numbers to each order. First, the '''ID Number''' is an internal reference that the system uses. Your first order will be ID 1, the second will be ID 2, and so on. The system also assigns them an '''Order Number''' (or Order #). This is the number your clients will receive at the end of the checkout process and is a randomly generated 10 digit number. This won't divulge the size of your company.&lt;br /&gt;
&lt;br /&gt;
==Managing Orders==&lt;br /&gt;
[[File:Order details.png|thumb|Order Details Page]]&lt;br /&gt;
You can manage orders from the '''Order''' tab. The menu provides the ability to quickly filter orders by status. For more granular filtering and searching, use the '''Search/Filter''' tab on the Manage Orders page.&lt;br /&gt;
 &lt;br /&gt;
===Order Details===&lt;br /&gt;
 &lt;br /&gt;
Click the Order ID to view the '''Order Details''' page. This page shows all the information pertaining to the order. The first section displays useful reference information:&lt;br /&gt;
 &lt;br /&gt;
*The date and time when the client placed it.&lt;br /&gt;
*The details of the client who placed it.&lt;br /&gt;
*The promotion code and discount they used (if any).&lt;br /&gt;
*The '''Payment Method''' and total amount due.&lt;br /&gt;
*The Invoice ID for this order. Click it to see the invoice in full.&lt;br /&gt;
*The IP address of the user placing the order for the client.&lt;br /&gt;
*The affiliate who referred the client and a link to [[Affiliates#Assigning_an_Affiliate_to_an_Existing_Order|manually assign one]].&lt;br /&gt;
 &lt;br /&gt;
===Order Items===&lt;br /&gt;
 &lt;br /&gt;
The '''Order Items''' section lists each of the products, services and domains the client has ordered alongside the '''Status''' and '''Payment Status''', providing an at-a-glance reference to whether someone has already created the account and whether you have received payment.&lt;br /&gt;
*If products are in pending status, the system will display several settings to configure. For more information, see [[#Accepting Pending Orders|Accepting Pending Orders]] below.&lt;br /&gt;
*If you have enabled the [[FraudLabs Pro]] or [[MaxMind]] [[Fraud Protection]] modules, the system will display '''Fraud Check Results'''. For more information, see [[#Reviewing Fraud Check Results|Reviewing Fraud Check Results]]&lt;br /&gt;
*If you have enabled it in '''General Settings''', the system displays '''Notes / Additional Information''' if the client provided any when placing the order.&lt;br /&gt;
 &lt;br /&gt;
===Available Action===&lt;br /&gt;
 &lt;br /&gt;
The '''Available Action''' buttons allow you to change the status of the order:&lt;br /&gt;
 &lt;br /&gt;
**'''Accept Order''' — Refer to [[#Accepting Pending Orders|Accepting Pending Orders]] below.&lt;br /&gt;
**'''Cancel Order''' — Sets the order status to ''Cancelled'', runs module termination for any active products in the order (removing accounts from the server and setting the product status to ''Cancelled'') and also sets the status of an unpaid invoice for the order to ''Cancelled''.&lt;br /&gt;
**'''Cancel &amp;amp; Refund''' — Sets the order status to ''Cancelled'', runs module termination for any active products, and refunds any payment against the invoice for the order via the payment gateway (if the module supports it).&lt;br /&gt;
**'''Set as Fraud''' — Runs the module termination for any active products in the order, cancels the associated invoice, and changes the order's status to ''Fraud''.&lt;br /&gt;
**'''Set Back to Pending''' — Changes the status of products and services and the order to ''Pending'' status.&lt;br /&gt;
**'''Delete Order''' — Removes the order and everything relating to it. Only use this option if you want to irrevocably remove the order from the system. This includes deleting the products or services within that order and the associated invoice.&lt;br /&gt;
 &lt;br /&gt;
===Bulk Management===&lt;br /&gt;
 &lt;br /&gt;
You can use several bulk management options to change the status of multiple orders at once. These tools only change the status of the order; they do not run any module commands to provision or terminate accounts. You can only do this via the '''Order Details''' page.&lt;br /&gt;
&lt;br /&gt;
==Placing an Order==&lt;br /&gt;
You can place an order by going to '''Orders &amp;gt; Add New Order'''.&lt;br /&gt;
&lt;br /&gt;
Note: Instead of using the dropdown menu on the add order page to find a client, use the WHMCS intelligent search. Then, from the Actions menu on the Clients Summary page, click the Add New Order link. The system will preselect the client.&lt;br /&gt;
&lt;br /&gt;
* Begin by selecting the client from the dropdown and choosing the payment gateway with which you want the client to pay.&lt;br /&gt;
* Select a promo code from the dropdown of active promotions to apply a discount to the order. The system will apply any discount amount that you select here to the order, regardless of any requirements in the promotion configuration. When staff select a discount, the system always applies it.&lt;br /&gt;
* If you need to create a custom promotion code, use the &amp;quot;Create Custom Promo&amp;quot; button. This feature requires that the Administrator User have both the &amp;quot;Use Any Promotion Code on Order&amp;quot; and &amp;quot;Create/Edit Promotions&amp;quot; permissions. You can read more about permissions on the [[Administrators_and_Permissions|Administrators and Permissions]] page.&lt;br /&gt;
* Next, choose the product or service and billing cycle. Here you can specify a quantity if you wish to add duplicates of the same product and specify a price override if you don’t wish to charge the standard product pricing.&lt;br /&gt;
* If the package comes with a domain, enter the user's domain in the box. If the client registered the domain with you, you should select the &amp;quot;Register&amp;quot; option and choose any addons the user has for their domain.&lt;br /&gt;
* To add more products to the order, click the “Add Another Product” link. This allows you to add a different product, while the quantity option above would add exact duplicates.&lt;br /&gt;
* The Order Setting options allow control over whether the system sends the order confirmation email to the client, whether it generates an invoice, and whether it emails an invoice notification to the client. There are three options:&lt;br /&gt;
** '''Order Confirmation''' — Send the Order Confirmation email.&lt;br /&gt;
** '''Generate Invoice''' — Create an invoice for this service, as shown in the order summary section.&lt;br /&gt;
** '''Send Email''' — Send the Invoice Created email template.&lt;br /&gt;
&lt;br /&gt;
==Accepting Pending Orders==&lt;br /&gt;
Whenever a client places an order in WHMCS, it comes in as a pending order. To view pending orders, go to Orders &amp;gt; List Pending Orders and click the Order ID. From there, you can accept or deny the order.&lt;br /&gt;
&lt;br /&gt;
Even if you have enabled auto-activation, while the system may automatically provision and deliver products and services in that order to the customer, the order status will remain pending until you manually confirm it. This is so that you can always see and review the new orders you've had and be able to, for example, manually review, check for fraud, or check for other problems.&lt;br /&gt;
&lt;br /&gt;
===Products===&lt;br /&gt;
If the order contains any products, you will see those in the list of order items. If you linked the products to a module and you haven't activated the product or service yet (for example, by auto-activation on payment) then you'll see the options to select a server to install it to, define a username and password, and checkboxes to create the account and send the welcome email. Checking the &amp;quot;Run Module Create&amp;quot; box will run the associated module creation command when you accept the order.&lt;br /&gt;
&lt;br /&gt;
===Domains===&lt;br /&gt;
If the order contains any domains, and an automated action on receipt of payment hasn't activated them, then you'll also have the option to choose a Domain Registrar and checkbox for &amp;quot;Send to Registrar&amp;quot; to specify whether to submit it via the API. You'll need to do this if you haven't enabled automatic registration or are wanting to register or transfer the domain without payment.&lt;br /&gt;
&lt;br /&gt;
It is important to note that while all orders are pending until you activate them, the system will automatically activate items in that order (hosting accounts and domains) based on your auto setup options and auto registration options.  If you have configured them to do this instantly upon payment, that will happen while the order remains pending.  This is to ensure you manually review each order you get.&lt;br /&gt;
&lt;br /&gt;
==Modifying an Order==&lt;br /&gt;
Orders represent a record of the order at a fixed point in time. This includes the purchased items (products, services, addons, or domains), the amount displayed on the order form, who placed the order, and other details.&lt;br /&gt;
&lt;br /&gt;
Subsequent modifications can be made to the constituent parts of the order, but these changes will not be reflected in the order record. Orders themselves cannot be modified. In order to change the order record, place a new order with the desired attributes.&lt;br /&gt;
&lt;br /&gt;
To do this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class = &amp;quot;alert alert-info&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; These steps assume that no provisioning has taken place yet. Canceling the old order will run the Terminate module command to remove the services from the server.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Follow the steps for placing an order to create and place a new order with the attributes.&lt;br /&gt;
# Cancel the old order.&lt;br /&gt;
&lt;br /&gt;
==Reviewing Fraud Check Results==&lt;br /&gt;
 &lt;br /&gt;
This section lets you verify results for your chosen fraud protection service ([[FraudLabs Pro]] or [[MaxMind]]). You can also view Validation.com information here.&lt;br /&gt;
 &lt;br /&gt;
===Validation.com===&lt;br /&gt;
 &lt;br /&gt;
In WHMCS 8.2 and later, you have enabled user identity verification, information from the third-party Validation.com service will display here. For more information, see [[User Identity Verification]].&lt;br /&gt;
&lt;br /&gt;
===MaxMind===&lt;br /&gt;
 &lt;br /&gt;
If you use the MaxMind service, you might want to check the results that MaxMind sends back regarding an order. You can do this from the order details page. You get to that by clicking the Order ID number for an order next to the order in the list of orders. You will then see a &amp;quot;Fraud Check Results&amp;quot; option which will list what you received from MaxMind regarding that order.&lt;br /&gt;
 &lt;br /&gt;
If you decide that the order was in fact not fraudulent, and you want to manually overide the fraud check, you can do that by clicking the '''Set Back to Pending''' button, which will change the order status from Fraud to Pending and the invoice back to Unpaid. This allows the user to go ahead and make payment from the client area as normal, or, if a merchant gateway is in use, you can click through to the invoice and instantly attempt to capture the clients payment using the '''Attempt Capture''' button on the invoice.&lt;br /&gt;
 &lt;br /&gt;
If an order's fraud score is over your setting's threshold, it will skip the 'Pending' status and the system will set it to 'Fraud'.&lt;br /&gt;
&lt;br /&gt;
==Custom Order Statuses==&lt;br /&gt;
By default, there are four order statuses that should cover most situations: Pending, Active, Fraud and Cancelled. If you need more, you can create them via '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Order Statuses''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Other &amp;gt; Order Statuses'''. For more information, see the [[Order Statuses]] page.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=SolusVM&amp;diff=30965</id>
		<title>SolusVM</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=SolusVM&amp;diff=30965"/>
				<updated>2021-11-02T20:22:55Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.solusvm.com SolusVM] is a virtual server control panel from SolusLabs Ltd. [http://www.solusvm.com SolusVM] supports OpenVZ virtualization (linux), Xen virtualization (Linux, Windows, BSD) and KVM virtualization (Linux, Windows, BSD).&lt;br /&gt;
&lt;br /&gt;
== Virtual Server Provisioning Module (Admin/Reseller)==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
This module allows you to create, destroy, suspend, unsuspend, upgrade, downgrade, reboot, boot and shutdown virtual servers, plus functions to provision virtual servers in different locations, all directly from within WHMCS. &lt;br /&gt;
&lt;br /&gt;
The client also has an array of functions and statistics from within the client area, including, reboot, boot, shutdown, change passwords, change hostname, view resource usage and graphs, plus the added bonus of a serial console or VNC. &lt;br /&gt;
&lt;br /&gt;
The module also has an option that allows your clients to order custom virtual servers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Download&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.solusvm.com/Installation%2Bof%2Bthe%2Bmodule.html Click here] to download and view installation instructions.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reseller Product Provisioning Module ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
This module allows you to create a range of reseller resource products allowing orders to be auto-provisoned instantly on payment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Download&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.solusvm.com/Installation%2Bof%2Bthe%2Bmodule.html Click here] to download and view installation instructions.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=SolusVM&amp;diff=30964</id>
		<title>SolusVM</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=SolusVM&amp;diff=30964"/>
				<updated>2021-11-02T20:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.solusvm.com SolusVM] is a virtual server control panel from SolusLabs Ltd. [http://www.solusvm.com SolusVM] supports OpenVZ virtualization (linux), Xen virtualization (Linux, Windows, BSD) and KVM virtualization (Linux, Windows, BSD).&lt;br /&gt;
&lt;br /&gt;
== Virtual Server Provisioning Module (Admin/Reseller)==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
This module allows you to create, destroy, suspend, unsuspend, upgrade, downgrade, reboot, boot and shutdown virtual servers, plus functions to provision virtual servers in different locations, all directly from within WHMCS. &lt;br /&gt;
&lt;br /&gt;
The client also has an array of functions and statistics from within the client area, including, reboot, boot, shutdown, change passwords, change hostname, view resource usage and graphs, plus the added bonus of a serial console or VNC. &lt;br /&gt;
&lt;br /&gt;
The module also has an option that allows your clients to order custom virtual servers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Download&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.solusvm.com/Installation%2Bof%2Bthe%2Bmodule.html Click here] to download and view installation instructions.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reseller Product Provisioning Module ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
This module allows you to create a range of reseller resource products allowing orders to be auto-provisoned instantly on payment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Download&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.solusvm.com/display/BET/SolusVM+WHMCS+billing+module Click here] to download and view installation instructions.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=SolusVM&amp;diff=30963</id>
		<title>SolusVM</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=SolusVM&amp;diff=30963"/>
				<updated>2021-11-02T20:19:25Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.solusvm.com SolusVM] is a virtual server control panel from SolusLabs Ltd. [http://www.solusvm.com SolusVM] supports OpenVZ virtualization (linux), Xen virtualization (Linux, Windows, BSD) and KVM virtualization (Linux, Windows, BSD).&lt;br /&gt;
&lt;br /&gt;
== Virtual Server Provisioning Module (Admin/Reseller)==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
This module allows you to create, destroy, suspend, unsuspend, upgrade, downgrade, reboot, boot and shutdown virtual servers, plus functions to provision virtual servers in different locations, all directly from within WHMCS. &lt;br /&gt;
&lt;br /&gt;
The client also has an array of functions and statistics from within the client area, including, reboot, boot, shutdown, change passwords, change hostname, view resource usage and graphs, plus the added bonus of a serial console or VNC. &lt;br /&gt;
&lt;br /&gt;
The module also has an option that allows your clients to order custom virtual servers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Download&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.solusvm.com/Installation%2Bof%2Bthe%2Bmodule.htmlClick here] to download and view installation instructions.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reseller Product Provisioning Module ==&lt;br /&gt;
=== Overview ===&lt;br /&gt;
This module allows you to create a range of reseller resource products allowing orders to be auto-provisoned instantly on payment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Download&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://docs.solusvm.com/display/BET/SolusVM+WHMCS+billing+module Click here] to download and view installation instructions.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=GoCardless&amp;diff=30943</id>
		<title>GoCardless</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=GoCardless&amp;diff=30943"/>
				<updated>2021-10-19T12:46:50Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{gateways&lt;br /&gt;
| onetime = yes&lt;br /&gt;
| recurring = yes&lt;br /&gt;
| reversals = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This page describes a payment gateway available in WHMCS version 7.7 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://gocardless.com GoCardless] is a payment gateway which allows for direct debit payments to be automated electronically.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
To activate the GoCardless module in WHMCS, navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Payments &amp;gt; Payment Gateways'''. Then, choose GoCardless from the All Payment Gateways tab.&lt;br /&gt;
&lt;br /&gt;
Upon clicking, you will be redirected to link you account to WHMCS GoCardless App. On the page displayed, it is possible to sign-up for a new account or sign-in to an existing account. Once signed up, you will be redirected back to your WHMCS installation where you can customise the display name of the module.&lt;br /&gt;
&lt;br /&gt;
====Automatic Configuration====&lt;br /&gt;
There is no manual configuration required for the GoCardless Payment Module. All configuration fields will be filled automatically when redirected back to the WHMCS installation.&lt;br /&gt;
&lt;br /&gt;
[[File:Gocardless-config.png]]&lt;br /&gt;
&lt;br /&gt;
For each supported currency and scheme enabled a custom name can be defined that will be displayed to clients wherever the available payment gateways are listed. This allows for naming that provides a more friendly and recognisable name based on the customers location, for example &amp;quot;Direct Debit&amp;quot; for UK/GBP customers, &amp;quot;ACH&amp;quot; for US/USD customers, etc...&lt;br /&gt;
&lt;br /&gt;
===Supported Currencies===&lt;br /&gt;
GoCardless only support the following currencies: 'AUD', 'CAD', 'DKK',  'EUR',  'GBP', 'NZD', 'SEK', and 'USD'. Any clients not using one of these currencies will be unable to make a payment using GoCardless and will receive an appropriate message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Support for USD was added in WHMCS 7.9.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SSL Requirement===&lt;br /&gt;
&lt;br /&gt;
GoCardless requires an HTTPS secured connection for the WHMCS installation that customers will be returned to following setup of a mandate.  If the domain your WHMCS installation is installed on does not have a valid SSL Certificate, the payment return will not work.&lt;br /&gt;
&lt;br /&gt;
If you need to purchase an SSL Certificate, you can do so at [https://www.whmcs.com/ssl-certificates www.whmcs.com/ssl-certificates]&lt;br /&gt;
&lt;br /&gt;
==Payment Workflow==&lt;br /&gt;
When the first payment is made, a mandate is set up with the client's bank. This typically takes a few days, so the invoice will change from '''Unpaid''' to '''Payment Pending''' status.&lt;br /&gt;
At this point you can view the mandate details and expected payment completion date by viewing the invoice. As soon as the mandate is set up and the first payment has cleared, the invoice's status will change to '''Paid''' and the service will be provisioned by WHMCS automatically.&lt;br /&gt;
&lt;br /&gt;
When the renewal invoice is generated for a recurring service, a capture attempt will be made against the mandate in accordance with '''Process Days Before Due''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings'''. As it can take a few days for the payment to complete, we recommend a setting of '''3'''. This way, 3 days before the invoice '''Due Date''', the payment process will be initiated by the cron and the invoice status updated from '''Unpaid''' to '''Payment Pending'''. Payment should then complete on the invoice '''Due Date''' and the invoice will be marked '''Paid''' once the payment has cleared.&lt;br /&gt;
&lt;br /&gt;
Once a mandate has been created, WHMCS can use it for processing renewal payments for any other services associated with the client as long as they are set to the GoCardless gateway as well.&lt;br /&gt;
&lt;br /&gt;
When making a manual payment, customers are able to select to use a previously stored bank account or enter a new one.&lt;br /&gt;
&lt;br /&gt;
Please note that customers never leave your WHMCS installation during checkout or adding/removing a new bank account. Personal bank information is submitted directly to GoCardless and is never stored in your local WHMCS installation.&lt;br /&gt;
&lt;br /&gt;
==Charge Date Preference==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This section describes a feature available in WHMCS version 8.0 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
By default, payment capture attempts will set the GoCardless Charge Date to the due date for an invoice. Enabling this setting on the GoCardless module will instead initiate the payment capture immediately upon invoice generation.&lt;br /&gt;
&lt;br /&gt;
To do, navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Payments &amp;gt; Payment Gateways'''. Click the '''Manage Existing Gateways''' tab. Tick the &amp;quot;Charge Date Preference&amp;quot; box and save changes.&lt;br /&gt;
&lt;br /&gt;
==Reversed Payments==&lt;br /&gt;
&lt;br /&gt;
The Direct Debit Guarantee scheme allows the payee to file a claim for any payment taken in error. WHMCS will monitor for ''charged_back'' events from GoCardless and will automatically process these as appropriate.&lt;br /&gt;
&lt;br /&gt;
To learn more, visit [[Payment Reversals]]&lt;br /&gt;
&lt;br /&gt;
==Refunding Payments==&lt;br /&gt;
&lt;br /&gt;
While refunds with GoCardless are not directly supported from within WHMCS, they can still be processed directly with GoCardless on a case-by-case basis through their review and approval process.&lt;br /&gt;
&lt;br /&gt;
Please refer to the [https://support.gocardless.com/hc/en-ca/articles/210536269-Refunding-payments refunding payments] section of the GoCardless documentation.&lt;br /&gt;
&lt;br /&gt;
==Reinstate Mandate==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This section describes a feature available in WHMCS version 7.8 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Permission Required:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Reinstating Mandates requires specific permission from GoCardless&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
When a mandate has been accidentally cancelled, WHMCS can initiate steps to reinstate the mandate without having the client set it up again.&lt;br /&gt;
Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt;  Payments &amp;gt; Payment Gateways'''. Click the '''Manage Existing Gateways''' tab. Click on the '''Manage Cancelled Mandates''' button and follow the instructions in the modal that appears to reinstate a cancelled mandate.&lt;br /&gt;
&lt;br /&gt;
==Import Existing Mandates==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This section describes a feature available in WHMCS version 7.8 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; If any of the mandates being imported are set to be automatically charged by GoCardless, that will need to be disabled to prevent possible duplicate charges.&amp;lt;/div&amp;gt;&lt;br /&gt;
For mandates that have been setup outside of WHMCS, they can be imported and associated with a client.&lt;br /&gt;
Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt;  Payments &amp;gt; Payment Gateways'''. Click the '''Manage Existing Gateways''' tab.&lt;br /&gt;
Click on the '''Import Existing Mandates''' button and follow the instructions in the modal that appears to import a active mandate to a specific client.&lt;br /&gt;
&lt;br /&gt;
==Reconfiguring Callbacks==&lt;br /&gt;
After moving WHMCS, it is important that you navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt;  Payments &amp;gt; Payment Gateways''' and click '''Configure GoCardless Account Connection''' and sign back in using the same details. This will ensure that the new System URL and Gateway callback file URL are stored and used for existing and new mandates going forward.&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Support_Tickets&amp;diff=30818</id>
		<title>Support Tickets</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Support_Tickets&amp;diff=30818"/>
				<updated>2021-09-30T16:58:17Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Ticket Reply Badges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Support Ticket''' system is a fully featured ticket desk that allows you to handle all communication with your clients. It features threaded discussions, private notes, ticket flagging, varying priority levels, [[Predefined_Replies|predefined replies]], and automatic inactive ticket closure. You can assign Admins to specific departments, so that they only have access to their designated areas.&lt;br /&gt;
 &lt;br /&gt;
==The Ticket List==&lt;br /&gt;
[[File:Support-tickets-view.png|thumb|The support ticket list]]&lt;br /&gt;
When a client submits a support ticket the appropriate members of staff assigned to that department will receive a '''New Support Ticket Opened''' email. To view the ticket, navigate to '''Support &amp;gt; Support Tickets'''.&lt;br /&gt;
 &lt;br /&gt;
This page displays all tickets that are in the '''Awaiting Reply''' status by default. The ticket order can be changed by clicking the table headings. To view only those tickets with a certain status, department or to search click the '''Search/Filter''' tab. The most-commonly-used status lists can accessed directly via '''Support''' in the navigation bar.&lt;br /&gt;
 &lt;br /&gt;
The '''Auto Refresh''' feature reloads the ticket list automatically at frequencies ranging from every 1 minute to 15 minutes. This is configured via the '''Auto Refresh''' tab.&lt;br /&gt;
 &lt;br /&gt;
There are several bulk tools on this page.&lt;br /&gt;
* Click '''Close''' to close tickets.&lt;br /&gt;
* Click '''Delete''' to delete tickets.&lt;br /&gt;
* Click '''Merge''' to merge two tickets, with the older ticket merging into the newer ticket.&lt;br /&gt;
* Click '''Block Sender &amp;amp; Delete''' to delete tickets and add the sender's email to the '''Banned Emails''' list.&lt;br /&gt;
 &lt;br /&gt;
A ticket starts in the '''Open''' status. This indicates that the client has not yet received a reply from a member of staff. After a reply, the status automatically changes to '''Answered'''.&lt;br /&gt;
 &lt;br /&gt;
The status can also be changed manually from the view ticket screen, using the dropdown menu next to the ticket subject. A change in selection here is saved immediately using AJAX, without needing to reload the page. Custom statuses can also be created to help with management of tickets. See the [[Support Ticket Statuses]] section for more information.&lt;br /&gt;
 &lt;br /&gt;
==Merging Tickets==&lt;br /&gt;
When using '''Merge''':&lt;br /&gt;
 &lt;br /&gt;
* A ticket will always merge into the earliest-opened ticket. This is the one with the lowest ID in the database. This is the same whether you merge from inside of a ticket or from the ticket list.&lt;br /&gt;
* Unless it already appears in the subject, the subject of the ticket will have '''[MERGED]''' appended in the client's language.&lt;br /&gt;
* The ticket status will take the status from the ticket that has received the latest reply.&lt;br /&gt;
* A ticket that has been merged into another ticket will not appear in the ticket list, but accessing an old ticket URL will redirect to the appropriate ticket.&lt;br /&gt;
* Replying to an old ticket via email will also redirect the reply to the appropriate ticket after the merge.&lt;br /&gt;
* If you are merging tickets from multiple clients together, the client that had the oldest ticket would see the merged ticket in their client area.&lt;br /&gt;
&lt;br /&gt;
==Replying to a Ticket==&lt;br /&gt;
 &lt;br /&gt;
[[File:Ticket-reply.png|thumb|The support ticket reply page]]&lt;br /&gt;
 &lt;br /&gt;
To open, view, and reply to a ticket, click the subject in the ticket list. In the ticket, you can view user messages and staff replies as well as any private admin notes. You can change the order in which ticket messages display in the '''Support''' tab at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Support_Tab#Ticket_Reply_List_Order|General Settings]]'''.&lt;br /&gt;
 &lt;br /&gt;
When you reply to a ticket, if a '''Support Ticket Signature''' is in your admin profile, it will appear in the reply box. When replying, you can also use predefined replies and insert links to knowledgebase articles automatically.&lt;br /&gt;
 &lt;br /&gt;
===Merge Fields===&lt;br /&gt;
 &lt;br /&gt;
Support ticket replies support three automatic data merge fields:&lt;br /&gt;
 &lt;br /&gt;
* &amp;lt;tt&amp;gt;[FIRSTNAME]&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;[NAME]&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;[EMAIL]&amp;lt;/tt&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
You can use these in predefined replies or in the custom messages you write.&lt;br /&gt;
 &lt;br /&gt;
===Ticket Markdown===&lt;br /&gt;
 &lt;br /&gt;
WHMCS supports [[Markdown_Editor|markdown formatting]] in ticket replies and notes.&lt;br /&gt;
 &lt;br /&gt;
===Quoting a Reply===&lt;br /&gt;
 &lt;br /&gt;
To include a copy of a previous reply in your message, click the icon for the desired reply.&lt;br /&gt;
 &lt;br /&gt;
===File Attachments===&lt;br /&gt;
 &lt;br /&gt;
Sending attachments automatically attaches them to the notification email that the client receives as well as making them accessible through the Client Area.&lt;br /&gt;
 &lt;br /&gt;
To attach a file, click '''Browse''' and select the file. This uploads the file to the &amp;lt;tt&amp;gt;attachments&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
 &lt;br /&gt;
===Billing a Client===&lt;br /&gt;
 &lt;br /&gt;
It's also possible to create a [[Billable Items|billable item]] for a client when you reply to a ticket. You can generate invoices or log time spent on a ticket.&lt;br /&gt;
 &lt;br /&gt;
To do this, enter the description, amount, and invoice action in the '''Add Billing Entry''' section while replying to the ticket.&lt;br /&gt;
 &lt;br /&gt;
===Post Reply Action===&lt;br /&gt;
 &lt;br /&gt;
From '''Post Reply''', you can select an action to perform when you click '''Add Response'''. For example, you can change the ticket status and remain in the ticket view or you can return to the main ticket list.&lt;br /&gt;
 &lt;br /&gt;
===Editing/Deleting a Reply===&lt;br /&gt;
 &lt;br /&gt;
To edit client and staff ticket replies, click '''Edit'''.&lt;br /&gt;
 &lt;br /&gt;
To delete a message from a ticket, click the red delete icon in the top-right of the message. Deleting the first message will delete the entire ticket.&lt;br /&gt;
 &lt;br /&gt;
===Predefined Ticket Replies===&lt;br /&gt;
 &lt;br /&gt;
Use predefined ticket replies for frequent responses:&lt;br /&gt;
 &lt;br /&gt;
====Adding a Predefined Reply====&lt;br /&gt;
 &lt;br /&gt;
To set up a predefined reply, go to '''Support &amp;gt; Predefined Replies'''. Configure categories and predefined replies in the same way as [[Support_Center#Knowledgebase|knowledgebase articles]].&lt;br /&gt;
 &lt;br /&gt;
====Using a Predefined Reply====&lt;br /&gt;
 &lt;br /&gt;
To use a predefined ticket reply, click '''Insert Predefined Ticket Reply''' and select the desired reply. You can also search for replies by title.&lt;br /&gt;
 &lt;br /&gt;
When you select the predefined reply, it will appear in the reply box and you can edit and send it normally.&lt;br /&gt;
 &lt;br /&gt;
===Blocked Replies===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;i class=&amp;quot;fa fa-question-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
We added this functionality in WHMCS 8.3.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
You may see a '''Blocked Replies''' message above the ticket subject. This indicates that WHMCS received, but did not import, one or more email replies. You can view and import these replies by clicking on the ticket subject in the message or by accessing them in the '''Support Ticket Mail Import Log''' at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Logs'''.&lt;br /&gt;
 &lt;br /&gt;
For more information, see [[Blocked Support Email Replies]].&lt;br /&gt;
&lt;br /&gt;
==Splitting Replies==&lt;br /&gt;
[[File:Split-replies.JPG|thumb|Split Selected Ticket Replies]]&lt;br /&gt;
 &lt;br /&gt;
Sometimes it may be necessary to move specific replies out from one support ticket and into a new one. If the message contains an attachment, this will be carried across into the new ticket too.&lt;br /&gt;
 &lt;br /&gt;
To do this:&lt;br /&gt;
#Check the checkboxes in the top-right corner of the messages you wish to split into a new ticket.&lt;br /&gt;
#Scroll to the bottom of the page and click '''Split Selected Replies'''.&lt;br /&gt;
#In the prompt that appears, select a department, priority, and subject for the new ticket, and whether to send a new ticket notification.&lt;br /&gt;
#Click '''Submit'''.&lt;br /&gt;
 &lt;br /&gt;
To quickly return to the original ticket, click '''Other Tickets'''.&lt;br /&gt;
 &lt;br /&gt;
==Admin Notes==&lt;br /&gt;
 &lt;br /&gt;
The '''Add Note''' tab allows private staff-only messages to be recorded against a ticket. Clicking the tab provides a new text area to enter the note. When you submit it, will add the note and display it to all other admins viewing the ticket along with the staff member's name and date and time. Customers do not get any notification of notes being added and cannot see them.&lt;br /&gt;
 &lt;br /&gt;
===Staff Mentions===&lt;br /&gt;
Staff mentions allow you to &amp;quot;tag&amp;quot; other administrative users and trigger an email notification to them as a quick and easy way to alert them to the note you have just added. To use a staff tag in a ticket note, just type the &amp;lt;tt&amp;gt;@&amp;lt;/tt&amp;gt; followed by the staff member's name.&lt;br /&gt;
 &lt;br /&gt;
For more information, see [[Staff_Mentions|Staff Mentions]].&lt;br /&gt;
 &lt;br /&gt;
==Changing Associated Service==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This section describes features available in version 7.10 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
A client opening a ticket can select a related service, which will be highlighted when viewing the ticket via the admin area. Click '''Change Associated Service''' to change the service that a ticket is associated with. This is useful when a client doesn't choose a service when opening the ticket, or if a client chooses the wrong service. A change of associated service will be logged to the ticket log so all changes can be seen.&lt;br /&gt;
 &lt;br /&gt;
[[File:AdminTicketRelatedServiceManagement.png]]&lt;br /&gt;
 &lt;br /&gt;
When clicking '''Change Associated Service''', an AJAX call will fetch, if appropriate, the remaining services for a client if they aren't all displayed. If an admin user is already viewing all the services of a client on a ticket, an AJAX call will not take place.&lt;br /&gt;
 &lt;br /&gt;
[[File:AdminTicketRelatedServiceManagementEdit.png]]&lt;br /&gt;
 &lt;br /&gt;
==View Security Question==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;WHMCS 8.0&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
We added '''View Security Question''' in WHMCS 8.0.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
To access a user's security question information, click '''View Security Question''' in the top-right corner of their reply to the ticket. This allows you to view, but not change, the user's '''Security Question''' and '''Security Answer'''.&lt;br /&gt;
 &lt;br /&gt;
If the user has not configured a question and answer at '''Hello, Name! &amp;gt; Security Settings''' in the Client Area, '''View Security Question''' will not display in their replies. Users cannot configure security questions until you add one or more questions at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Security Questions]]'''.&lt;br /&gt;
 &lt;br /&gt;
==Custom Fields==&lt;br /&gt;
 &lt;br /&gt;
You can set up custom fields for support departments on a per department basis. Use this to suit a given department's specific needs. These fields display on the '''[[Custom Fields]]''' tab within the ticket.&lt;br /&gt;
 &lt;br /&gt;
==Options==&lt;br /&gt;
 &lt;br /&gt;
The '''Options''' tab allows the attributes of the ticket to be modified. The department, subject, status, and priority can all be changed.&lt;br /&gt;
 &lt;br /&gt;
Sometimes it may be useful for additional people to receive copies of the email messages in this ticket. To do this, enter their email addresses in the '''CC Recepients''' field. Multiple recipients can be entered in a comma separated list (for example, &amp;lt;tt&amp;gt;jeff@example.com,bob@example.com&amp;lt;/tt&amp;gt;).&lt;br /&gt;
 &lt;br /&gt;
To change the client a ticket is assigned to, adjust the '''Client ID'''. If the client's name, company, or email address is known, start typing this into the field. An AJAX list of the search results will appear. Click the appropriate client from the list to automatically fill in their '''Client ID'''.&lt;br /&gt;
 &lt;br /&gt;
When two tickets are merged, the messages from both tickets will be arranged chronologically. In '''Merge Ticket''', enter the '''Ticket ID''' of the ticket to be combined. The newer ticket is merged into the older ticket.&lt;br /&gt;
 &lt;br /&gt;
Flagging a ticket to another admin is useful if you want to bring the ticket to the attention of another staff member. Flagged tickets appear in a separate section at the top of the support ticket page to ensure they stand out from the main queue. The '''Support Ticket Flagged''' email will also be sent to the user. Flagging a ticket to oneself will not send the email.&lt;br /&gt;
 &lt;br /&gt;
==Ticket Tags/Tag Cloud==&lt;br /&gt;
 &lt;br /&gt;
The ''Ticket Tags'' section is displayed on the sidebar when viewing a support ticket. It is designed to link tickets that have a common item (for example, tickets that all report the same issue). You could use this to save a case ID from an external system (for example, if you wish to follow up with those tickets once it is marked as resolved).  To use, enter the desired tag text and press Return to save.&lt;br /&gt;
&lt;br /&gt;
Tags associated with tickets in the support ticket list are displayed in the ''Tag Cloud'' section of the sidebar of the '''Support &amp;gt; Support Tickets''' list.&lt;br /&gt;
To find all the tickets linked to the tag, use the same name for the tag and then search by tag from '''Search/Filter''' on the support ticket list page. The will display the list of tickets linked to the tag.&lt;br /&gt;
&lt;br /&gt;
==Log==&lt;br /&gt;
 &lt;br /&gt;
The ticket log displays an audit trail of all the actions applied to this ticket. This includes department changes, tickets flaggings, adding of notes, changes of ownership, and status changes.&lt;br /&gt;
 &lt;br /&gt;
==Opening a New Ticket==&lt;br /&gt;
[[File:Open-new-ticket.jpg|thumb|The open support ticket page]]&lt;br /&gt;
 &lt;br /&gt;
Staff can open support tickets from within the administration area by navigating to '''Support &amp;gt; Open New Ticket'''. There, enter the details of the recipient.&lt;br /&gt;
 &lt;br /&gt;
*If they are not a client, fill their name in the '''To''' field and the '''Email Address''' field.&lt;br /&gt;
*If they are a client, use the '''Client Search''' field to search by name, company, and email addresses. Clicking the client's name will automatically fill in the recipient's details.&lt;br /&gt;
 &lt;br /&gt;
If the client has contacts or sub-accounts configured, a '''Contacts''' menu will appear. If you wish the ticket message to be emailed to the contact, select their name from the menu. Select '''None''' to deliver it to the master account.&lt;br /&gt;
&lt;br /&gt;
==Automated Knowledgebase Article Suggestions==&lt;br /&gt;
[[File:Knowledgebase-suggestions.JPG|thumb|Suggesting Knowledgebase Articles]]&lt;br /&gt;
 &lt;br /&gt;
As a user enters a message for submission as a support ticket, WHMCS can lookup and display relevant articles that match keywords in the submission text. This can provide an answer to a user without them needing to ever submit the ticket. This is designed to help reduce common support questions. To enable or disable this, use '''Knowledgebase Suggestions''' in the '''Support''' tab at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings'''.&lt;br /&gt;
 &lt;br /&gt;
You will need at least 5 articles with 30 words in each before the suggestions start working. This uses MySQL full text searching for matches.&lt;br /&gt;
 &lt;br /&gt;
==Ticket Reply Ratings==&lt;br /&gt;
  &lt;br /&gt;
[[File:Ticket_reply_rating.png|200px|thumb|right]]&lt;br /&gt;
Ticket reply ratings allow your customers to rate responses they receive on tickets in the ticket system. They also allow you to monitor customers' reactions to the support they receive from your staff. To enable the ticket rating feature, go to the '''Support''' tab at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings'''. Then, check '''Support Ticket Ratings'''.&lt;br /&gt;
  &lt;br /&gt;
[[File:Ticket_reply_stars_admin.png|200px|thumb|right]]&lt;br /&gt;
When enabled, each reply in the client area will show a row of stars for the user to choose from in rating the response. They range from 1 being poor to 5 being excellent. Rating a reply is optional, so not every reply will get a rating. Ratings display when viewing the ticket in the admin area and there is also a report in the Reporting section that allows you to monitor these ratings:&lt;br /&gt;
  &lt;br /&gt;
'''Ticket Ratings Reviewer''' allows you to filter based on specific star ratings and within a given date range.&lt;br /&gt;
  &lt;br /&gt;
==Feedback Request==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
The location of this functionality was changed in WHMCS 7.0.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[File:Feedback_request.png|200px|thumb|right]]&lt;br /&gt;
In WHMCS 7.0 and later, you can enable emails requesting a user to provide feedback for their support ticket experience on a per-department basis. On upgrading to WHMCS 7.0, if you have enabled '''Ticket Feedback''', it will be enabled by default for all existing departments. If you do not have it enabled, it will not be enabled for any departments automatically.&lt;br /&gt;
  &lt;br /&gt;
'''[[Support_Tickets#Departments|Feedback Request]]''' determines whether an email request will be sent for a user to provide feedback for their support ticket experience. The results of the feedback emails can be reviewed via the '''[[Reports#Ticket_Feedback_Scores|Ticket Feedback Scores]]''' and '''[[Reports#Ticket_Feedback_Comments|Ticket Feedback Comments]]''' reports.&lt;br /&gt;
 &lt;br /&gt;
==Auto Closing==&lt;br /&gt;
&lt;br /&gt;
This feature allows you to have support tickets automatically closed after a certain time of inactivity has passed. By default this closes tickets set to '''Answered''' or '''Customer Reply'''. &lt;br /&gt;
&lt;br /&gt;
The ticket statuses that auto close can be adjusted via '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Ticket Statuses''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Support &amp;gt; Ticket Statuses'''. For further details, please see [[Support Ticket Statuses]].&lt;br /&gt;
&lt;br /&gt;
To set the length of time of inactivity before closure, go to '''Support Ticket Settings''' at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings'''. Then, enter the time in hours (for example, &amp;lt;tt&amp;gt;48&amp;lt;/tt&amp;gt; indicates two days) in '''Close Inactive Tickets'''.&lt;br /&gt;
&lt;br /&gt;
When closing the ticket, WHMCS sends a '''Support Ticket Auto Close Notification''' email to the user. You can customise that email at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Email Templates''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Email Templates'''.&lt;br /&gt;
&lt;br /&gt;
==Automated Escalations==&lt;br /&gt;
The status, department, and priority of a ticket can be changed automatically after a set time. For more information, see [[Support_Ticket_Escalations|Support Ticket Escalations]].&lt;br /&gt;
 &lt;br /&gt;
==Allowed File Attachments==&lt;br /&gt;
  &lt;br /&gt;
Support tickets allow admins and users to upload and send files.&lt;br /&gt;
  &lt;br /&gt;
* To configure the list of file types that users can upload, go to the '''[[Support_Tab Support]]''' tab at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings'''.&lt;br /&gt;
* Admins can upload all file types.&lt;br /&gt;
  &lt;br /&gt;
===Ticket Attachments===&lt;br /&gt;
 &lt;br /&gt;
Thumbnail previews of attachments display beneath the ticket message if you enable them in the '''[[Support_Tab Support]]''' tab at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings'''.&lt;br /&gt;
  &lt;br /&gt;
[[File:attachment-thumbnails.png]]&lt;br /&gt;
  &lt;br /&gt;
==== Attachment Forwarding ====&lt;br /&gt;
Ticket attachments will not be forwarded to staff members in notification emails. This is to prevent potentially sensitive attachments being re-transmitted via email and reduce email bandwidth consumption.&lt;br /&gt;
 &lt;br /&gt;
==== Unnamed Files and Missing Extensions ====&lt;br /&gt;
 &lt;br /&gt;
Prior to WHMCS 8.3, the system ignored attachments that did not have a filename or extension. WHMCS 8.3 and later handles these files according to this logic:&lt;br /&gt;
 &lt;br /&gt;
* The system converts filenames that contain special characters or are otherwise unsafe to a safe name.&lt;br /&gt;
* If there is not a filename, the filename will become &amp;lt;tt&amp;gt;attachment_*&amp;lt;/tt&amp;gt;, incrementing &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; for each attachment. For example, &amp;lt;tt&amp;gt;attachment_1&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;attachment_2&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* If there is no extension, the system will attempt to determine a file type.&lt;br /&gt;
** If this fails, the system assigns &amp;lt;tt&amp;gt;.unknown&amp;lt;/tt&amp;gt; as the extension.&lt;br /&gt;
** If the system-determined extension is not in this list of extensions, the system will ignore the file.&lt;br /&gt;
 &lt;br /&gt;
==Ticket Reply Badges==&lt;br /&gt;
  &lt;br /&gt;
Every ticket reply includes a badge based on the correspondent's email address, the associated account for the ticket, and the WHMCS system:&lt;br /&gt;
 &lt;br /&gt;
* '''Authorized User''' indicates a user who is associated with the account but is not the account owner.&lt;br /&gt;
* '''Registered User''' indicates a user who can log in to the WHMCS Client Area but who is not associated with the account and is not the account owner. (This was '''External User''' in WHMCS 8.1 and earlier.)&lt;br /&gt;
* '''Guest''' indicates an email address that is not associated with any account, user, or contact in WHMCS.&lt;br /&gt;
** If the submitter exists on multiple client accounts, the system cannot automatically determine the correct account and will assign a '''Guest''' badge to the ticket. The ticket can then be assigned to a client account from the Admin Area via the '''Options''' tab on the ticket.&lt;br /&gt;
* '''Owner''' indicates the user who is the account owner.&lt;br /&gt;
* '''Operator''' indicates a WHMCS admin user.&lt;br /&gt;
* '''Sub-account''' indicates an address in the account's list of contacts.&lt;br /&gt;
 &lt;br /&gt;
For more information about users, accounts, and account owners, see [[Users and Accounts]].&lt;br /&gt;
&lt;br /&gt;
==Ticket Watchers==&lt;br /&gt;
 &lt;br /&gt;
Any admin-level user with access to view a support ticket can watch the ticket. Watching a ticket subscribes the admin user to email notifications of any replies, notes, or changes to the ticket options.&lt;br /&gt;
 &lt;br /&gt;
To watch a ticket, click '''Watch Ticket''' in the admin area ticket sidebar.&lt;br /&gt;
 &lt;br /&gt;
An email notification be generated for any of the following actions:&lt;br /&gt;
 &lt;br /&gt;
*A client or user posting a reply.&lt;br /&gt;
*Another admin user posting a reply.&lt;br /&gt;
*Another admin user posting a ticket note.&lt;br /&gt;
*A change of ticket options by another admin user.&lt;br /&gt;
*A ticket being assigned to your admin user.&lt;br /&gt;
*A closure of the ticket by the client or user.&lt;br /&gt;
 &lt;br /&gt;
For a full overview of support ticket notifications, including ticket watcher notifications, see [[Ticket Notifications]].&lt;br /&gt;
 &lt;br /&gt;
An admin user can unsubscribe from receiving notifications for a ticket at any time by clicking '''Unwatch Ticket'''. This is only visible in tickets that the admin user is currently watching.&lt;br /&gt;
 &lt;br /&gt;
==Ticket Collision Detection==&lt;br /&gt;
 &lt;br /&gt;
Collision detection prevents you from replying to a ticket or making changes when the status of a ticket has changed since you originally opened it.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
You open the ticket at 10:45am. You begin to type a reply but, before you finish, you become distracted. You return to the ticket 15 minutes later. You submit your reply, not realising that, in the lapsed time, another member of staff has already replied to the ticket. The collision detection will alert you to this before sending the reply to the customer, avoiding the confusing extra reply.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
You will receive a warning message if any changes have been made to a ticket when performing any of the following actions:&lt;br /&gt;
 &lt;br /&gt;
* Change of department.&lt;br /&gt;
* Change of assignment or flagged user.&lt;br /&gt;
* Change of priority.&lt;br /&gt;
* Change of status.&lt;br /&gt;
* Submitting a reply.&lt;br /&gt;
* Making a change to the ticket options.&lt;br /&gt;
 &lt;br /&gt;
The alert you receive will provide details about what has changed and ask you to confirm whether you wish to continue.&lt;br /&gt;
 &lt;br /&gt;
[[File:TicketCollisionDetectionModal.png]]&lt;br /&gt;
 &lt;br /&gt;
The following attributes of a ticket will trigger a collision detection warning:&lt;br /&gt;
 &lt;br /&gt;
* Department&lt;br /&gt;
* Ticket Subject&lt;br /&gt;
* Ticket Priority&lt;br /&gt;
* Assigned Client&lt;br /&gt;
* Assigned Admin User&lt;br /&gt;
* CC Recipients&lt;br /&gt;
* Last Reply Time&lt;br /&gt;
* Ticket Status&lt;br /&gt;
&lt;br /&gt;
==Email Piping and Importing==&lt;br /&gt;
&lt;br /&gt;
You can automatically send user emails into the ticket system as tickets and ticket replies. To do this, you will need to either pipe or import the email into WHMCS (email piping and email importing). &lt;br /&gt;
&lt;br /&gt;
* For more information about email piping, see [[Email Piping]].	&lt;br /&gt;
* For more information about email importing, see [[Email Importing]].&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30619</id>
		<title>Licensing Addon</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30619"/>
				<updated>2021-09-07T13:24:02Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Integrating the Check Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WHMCS licensing addon module allows you to license your own web applications for selling to end users. Supporting both local license keys and periodic remote checking, it offers a robust and secure way of licensing your scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Licensing Addon&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The WHMCS Licensing Addon  is not associated with the [[WHMCS_cPanel_Licensing_Module|cPanel Licensing Automation module]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
By purchasing the licensing addon, this will unlock access to the licensing addon module files which are now bundled with the default WHMCS install package.  So after purchasing, there are no manual installation steps necessary any more - you just need to activate and configure the module in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Addon Modules''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Addon Modules'''. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* '''Public License Verification Tool''' - Enable this option to make available a verification page which visitors can use to check whether a domain is licensed to be using your software. The appearance can be customised by editing the /modles/addons/licensing/licenseverify.tpl template file. It's accessed at http://www.yoursite.com/whmcs/index.php?m=licensing&lt;br /&gt;
* '''Maximum Allowed Reissues''' - Should you wish to limit how many times a client can reissue a licence, specify the maximum number of reissues here.&lt;br /&gt;
* '''Auto Logs Prune''' - To prevent the licence access logs from becoming too large you can specify for how long they should be kept.&lt;br /&gt;
&lt;br /&gt;
==Setting up a licensing product==&lt;br /&gt;
&lt;br /&gt;
#Begin by creating a product under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services'''. More information on creating products is available at [[Products_and_Services#Products|Products and Services]]&lt;br /&gt;
#On the module settings tab, choose &amp;quot;License Software&amp;quot; in the Module dropdown&lt;br /&gt;
#The options for a licensing product will then appear. These are explained in detail below:&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonproductconfigrevised.png]]&lt;br /&gt;
&lt;br /&gt;
*Key Length - this defines how long the randomly generated key will be - enter the numerical value you want&lt;br /&gt;
*Key Prefix - this defines the start of the license key and is how you can validate an applicable key for the product you're performing the checking in has been entered - eg. Monthly-, Owned-, Mobile-, etc...&lt;br /&gt;
*Allow Reissue - determines whether a client can reissue the license from the client area&lt;br /&gt;
*Allow Domain Conflict - When unticked WHMCS will make sure the location at which the licence is being used matches the 'Valid Domain' value in the service record. Tick the option if you want to allow a user to run the product on multiple domains.&lt;br /&gt;
*Allow IP Conflict - as above but for the IP address&lt;br /&gt;
*Allow Directory Conflict - as above but for the directory&lt;br /&gt;
*Support/Updates Addon - explained in detail below&lt;br /&gt;
*Free Trial - This option can be ticked to prevent clients from using more than one licence of this product on the same domain. If a client tries to order a second copy of this product and use it on the same domain as a previous service, it will be automatically suspended with the reason &amp;quot;Duplicate Free Trial Use&amp;quot;. Useful for limiting free trials to one per domain.&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
&lt;br /&gt;
Downloads are how your client receives the software product after purchase.  These are configured using the existing digital download product release mechanism.  For more information on this, refer to [[Product Downloads Distribution]]&lt;br /&gt;
&lt;br /&gt;
==Addons==&lt;br /&gt;
&lt;br /&gt;
Each product can be assigned multiple addon products which can be added at the time of initial ordering or at a later date.  Uses for addons include extra value added services such as installation, configuration, upgrades, etc...  They allow you to charge additional fees for items which aren't required in order to utilise the actual product.&lt;br /&gt;
&lt;br /&gt;
==Support &amp;amp; Update Addons==&lt;br /&gt;
&lt;br /&gt;
If you enable these on your licensing product, then the client is required to have an active support &amp;amp; updates package in order to receive support &amp;amp; download the related product downloads.  This means you can charge your users for the continued support and updates using any of the recurring terms available to you in WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Setting up a Support &amp;amp; Updates Addon Package===&lt;br /&gt;
&lt;br /&gt;
The guide below explains how to create a support &amp;amp; updates package which is include free with the initial license purchase and then requires renewal once it expires.&lt;br /&gt;
&lt;br /&gt;
#Ensure your licensing product is created first&lt;br /&gt;
#Then, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Product Addons''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Product Addons'''.&lt;br /&gt;
#Click '''Add New'''.&lt;br /&gt;
#Enter the name, description, price and recurring cycle - leave the Show on Order setting unchecked&lt;br /&gt;
#Now tick the licensing product(s) in the applicable products section for the addon&lt;br /&gt;
#Now go back to the product configuration area and click the edit icon next to your licensing product&lt;br /&gt;
#On the Module Settings tab, choose the addon you just created in the &amp;quot;Support/Updates Addon&amp;quot; field and save&lt;br /&gt;
&lt;br /&gt;
And that's it! If you didn't want to include it free with the initial purchase, you would leave the setting on the Module Settings tab at None and tick the box for Show on Order in the addon configuration.&lt;br /&gt;
&lt;br /&gt;
==Module Commands==&lt;br /&gt;
&lt;br /&gt;
*Create - Used to generate the license key for the product with status Reissued&lt;br /&gt;
*Suspend - This will set the license status to Suspended&lt;br /&gt;
*Unsuspend - This will set the license status back to Active&lt;br /&gt;
*Terminate - This will set the license status to Expired&lt;br /&gt;
*Reissue - Sets the license status to Reissued so the domain, IP &amp;amp; directory is saved on the next check&lt;br /&gt;
*Revoke - This command will completely remove the license key and allow the number to be reused in future&lt;br /&gt;
*Manage - This button takes you to where you can view &amp;amp; edit the allowed domain, IP &amp;amp; directory for the license&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonrevised.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Managing Licenses==&lt;br /&gt;
&lt;br /&gt;
To manage licenses, go to Addons &amp;gt; Licenses Manager.  From here you can browse through all the license keys that have been issued, search for license keys and make changes to the allowed domains, ips and directory for a license.&lt;br /&gt;
&lt;br /&gt;
==Integrating the Check Code==&lt;br /&gt;
&lt;br /&gt;
The code used to integrate the license check is included with the addon in the '''/modules/servers/licensing/check_sample_code.php''' file.  The idea here is that you would have your user enter the '''license key''' they get issued during an install process or by simply pasting it into a file, and then you load that in your file before calling the '''check_license''' function to validate where the file is being run.  For each successful check, a local key is returned which you then also store in your DB or a file to verify against locally on subsequent page loads.&lt;br /&gt;
&lt;br /&gt;
The steps to integrate are described in more detail below, as well as in the '''check_sample_code.php''' file:&lt;br /&gt;
&lt;br /&gt;
#Copy &amp;amp; paste the code into the top of the file you want to protect&lt;br /&gt;
#Enter the URL to your WHMCS system root directory in the '''$whmcsurl''' variable&lt;br /&gt;
#Customise the '''$licensing_secret_key''' variable used to ensure your local keys are different from other licensing addon users&lt;br /&gt;
#Optionally change the '''$localkeydays''' &amp;amp; '''$allowcheckfaildays''' variables if you want to change how often a remote check is made&lt;br /&gt;
#Now retrieve the '''license key''' and '''local key''' from the database or file storage you have saved them in&lt;br /&gt;
#Then call the '''check_license''' function&lt;br /&gt;
#And then act on the result based on the sample code if statements&lt;br /&gt;
#You then store the '''local key''' that gets returned&lt;br /&gt;
&lt;br /&gt;
===Using Product Addons===&lt;br /&gt;
If the licensing product has any ordered addons, the results from the licensing addon will include a pipe separated string called &amp;quot;addons&amp;quot; with their details that can be processed and used for any number of purposes. For example: restricting access to certain features unless a particular addon has been ordered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [addons] =&amp;gt; name=Test Addon;nextduedate=2017-12-26;status=Active&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $addons from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;addons&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;;&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $tempresult) {&lt;br /&gt;
  $tempresults3 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
    $temparr[$tempresults3[0]] = $tempresults3[1];&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $addons[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Configurable Options===&lt;br /&gt;
If the licensing product has any ordered configurable options, the results from the licensing addon will include a pipe separated string called &amp;quot;configoptions&amp;quot; with their details that can be processed and used for any number of purposes. For example: limiting usage of software to a particular number of clients or admin users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[configoptions] =&amp;gt; Test=0|Test 002=&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $configoptions from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;configoptions&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $key =&amp;gt; $value) {&lt;br /&gt;
    $temparr[$key] = $value;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $configoptions[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the local key?===&lt;br /&gt;
&lt;br /&gt;
The local key is the thing that stops the license checking code having to call your server on every page load. It's basically just an encrypted version of the license check data, so that when it's present and valid, the licensing addon doesn't have to make a remote call which would slow down your application/code, thus improving performance.  The local key will always be empty on the first check your client makes, but then with every successful remote check, a local key value is returned (sample code provided) which you then just need to store and pass into any future license check calls.  We recommend storing into a database for ease of updating and retrieval, but flat files can work just as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Note:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The module create function of this module does not generate a username and password by design. Therefore the username/password fields will be blank under the client's Products/services tab.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
&lt;br /&gt;
===Invalid Key===&lt;br /&gt;
This generally indicates that the licensing checking code is not passing a license key back to the licensing addon. The code being used will need to be corrected to ensure that it is returning the full license key to WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Remote Check Failed===&lt;br /&gt;
This suggests a connection problem between the user's server and the end client's server.&lt;br /&gt;
&lt;br /&gt;
The first step will be to provide the user with a cURL test script that attempts to connect to your WHMCS installation and run it from their server, correcting any detected issues.&lt;br /&gt;
&lt;br /&gt;
If that all appears clear, it could be due to a SSL configuration issue on the user's server. As a workaround, you can potentially add the following into your licence checking code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===A new local key is being generated on every request===&lt;br /&gt;
This behaviour suggests that the local licence key returned by the license checking function after a successful check is not being stored. When no local licence key is stored and passed into the licensing checking function, a remote check has to be performed and a new local key is generated.&lt;br /&gt;
&lt;br /&gt;
Storing the local license key returned by the license checking function and passing it back into the checking function should resolve this. We recommend storing it in a way most appropriate for your particular software, for example in a flat file or in a database.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30618</id>
		<title>Licensing Addon</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30618"/>
				<updated>2021-09-07T13:22:45Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Integrating the Check Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WHMCS licensing addon module allows you to license your own web applications for selling to end users. Supporting both local license keys and periodic remote checking, it offers a robust and secure way of licensing your scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Licensing Addon&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The WHMCS Licensing Addon  is not associated with the [[WHMCS_cPanel_Licensing_Module|cPanel Licensing Automation module]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
By purchasing the licensing addon, this will unlock access to the licensing addon module files which are now bundled with the default WHMCS install package.  So after purchasing, there are no manual installation steps necessary any more - you just need to activate and configure the module in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Addon Modules''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Addon Modules'''. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* '''Public License Verification Tool''' - Enable this option to make available a verification page which visitors can use to check whether a domain is licensed to be using your software. The appearance can be customised by editing the /modles/addons/licensing/licenseverify.tpl template file. It's accessed at http://www.yoursite.com/whmcs/index.php?m=licensing&lt;br /&gt;
* '''Maximum Allowed Reissues''' - Should you wish to limit how many times a client can reissue a licence, specify the maximum number of reissues here.&lt;br /&gt;
* '''Auto Logs Prune''' - To prevent the licence access logs from becoming too large you can specify for how long they should be kept.&lt;br /&gt;
&lt;br /&gt;
==Setting up a licensing product==&lt;br /&gt;
&lt;br /&gt;
#Begin by creating a product under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services'''. More information on creating products is available at [[Products_and_Services#Products|Products and Services]]&lt;br /&gt;
#On the module settings tab, choose &amp;quot;License Software&amp;quot; in the Module dropdown&lt;br /&gt;
#The options for a licensing product will then appear. These are explained in detail below:&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonproductconfigrevised.png]]&lt;br /&gt;
&lt;br /&gt;
*Key Length - this defines how long the randomly generated key will be - enter the numerical value you want&lt;br /&gt;
*Key Prefix - this defines the start of the license key and is how you can validate an applicable key for the product you're performing the checking in has been entered - eg. Monthly-, Owned-, Mobile-, etc...&lt;br /&gt;
*Allow Reissue - determines whether a client can reissue the license from the client area&lt;br /&gt;
*Allow Domain Conflict - When unticked WHMCS will make sure the location at which the licence is being used matches the 'Valid Domain' value in the service record. Tick the option if you want to allow a user to run the product on multiple domains.&lt;br /&gt;
*Allow IP Conflict - as above but for the IP address&lt;br /&gt;
*Allow Directory Conflict - as above but for the directory&lt;br /&gt;
*Support/Updates Addon - explained in detail below&lt;br /&gt;
*Free Trial - This option can be ticked to prevent clients from using more than one licence of this product on the same domain. If a client tries to order a second copy of this product and use it on the same domain as a previous service, it will be automatically suspended with the reason &amp;quot;Duplicate Free Trial Use&amp;quot;. Useful for limiting free trials to one per domain.&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
&lt;br /&gt;
Downloads are how your client receives the software product after purchase.  These are configured using the existing digital download product release mechanism.  For more information on this, refer to [[Product Downloads Distribution]]&lt;br /&gt;
&lt;br /&gt;
==Addons==&lt;br /&gt;
&lt;br /&gt;
Each product can be assigned multiple addon products which can be added at the time of initial ordering or at a later date.  Uses for addons include extra value added services such as installation, configuration, upgrades, etc...  They allow you to charge additional fees for items which aren't required in order to utilise the actual product.&lt;br /&gt;
&lt;br /&gt;
==Support &amp;amp; Update Addons==&lt;br /&gt;
&lt;br /&gt;
If you enable these on your licensing product, then the client is required to have an active support &amp;amp; updates package in order to receive support &amp;amp; download the related product downloads.  This means you can charge your users for the continued support and updates using any of the recurring terms available to you in WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Setting up a Support &amp;amp; Updates Addon Package===&lt;br /&gt;
&lt;br /&gt;
The guide below explains how to create a support &amp;amp; updates package which is include free with the initial license purchase and then requires renewal once it expires.&lt;br /&gt;
&lt;br /&gt;
#Ensure your licensing product is created first&lt;br /&gt;
#Then, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Product Addons''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Product Addons'''.&lt;br /&gt;
#Click '''Add New'''.&lt;br /&gt;
#Enter the name, description, price and recurring cycle - leave the Show on Order setting unchecked&lt;br /&gt;
#Now tick the licensing product(s) in the applicable products section for the addon&lt;br /&gt;
#Now go back to the product configuration area and click the edit icon next to your licensing product&lt;br /&gt;
#On the Module Settings tab, choose the addon you just created in the &amp;quot;Support/Updates Addon&amp;quot; field and save&lt;br /&gt;
&lt;br /&gt;
And that's it! If you didn't want to include it free with the initial purchase, you would leave the setting on the Module Settings tab at None and tick the box for Show on Order in the addon configuration.&lt;br /&gt;
&lt;br /&gt;
==Module Commands==&lt;br /&gt;
&lt;br /&gt;
*Create - Used to generate the license key for the product with status Reissued&lt;br /&gt;
*Suspend - This will set the license status to Suspended&lt;br /&gt;
*Unsuspend - This will set the license status back to Active&lt;br /&gt;
*Terminate - This will set the license status to Expired&lt;br /&gt;
*Reissue - Sets the license status to Reissued so the domain, IP &amp;amp; directory is saved on the next check&lt;br /&gt;
*Revoke - This command will completely remove the license key and allow the number to be reused in future&lt;br /&gt;
*Manage - This button takes you to where you can view &amp;amp; edit the allowed domain, IP &amp;amp; directory for the license&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonrevised.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Managing Licenses==&lt;br /&gt;
&lt;br /&gt;
To manage licenses, go to Addons &amp;gt; Licenses Manager.  From here you can browse through all the license keys that have been issued, search for license keys and make changes to the allowed domains, ips and directory for a license.&lt;br /&gt;
&lt;br /&gt;
==Integrating the Check Code==&lt;br /&gt;
&lt;br /&gt;
The code used to integrate the license check is included with the addon in the '''/modules/servers/licensing/check_sample_code.php''' file.  The idea here is that you would have your user enter the '''license key''' they get issued during an install process or by simply pasting it into a file, and then you load that in your file before calling the '''check_license''' function to validate where the file is being run.  For each successful check, a local key is returned which you then also store in your DB or a file to verify against locally on subsequent page loads.&lt;br /&gt;
&lt;br /&gt;
The steps to integrate are described in more detail below:&lt;br /&gt;
&lt;br /&gt;
#Copy &amp;amp; paste the code into the top of the file you want to protect&lt;br /&gt;
#Enter the URL to your WHMCS system root directory in the '''$whmcsurl''' variable&lt;br /&gt;
#Customise the '''$licensing_secret_key''' variable used to ensure your local keys are different from other licensing addon users&lt;br /&gt;
#Optionally change the '''$localkeydays''' &amp;amp; '''$allowcheckfaildays''' variables if you want to change how often a remote check is made&lt;br /&gt;
#Now retrieve the '''license key''' and '''local key''' from the database or file storage you have saved them in&lt;br /&gt;
#Then call the '''check_license''' function&lt;br /&gt;
#And then act on the result based on the sample code if statements&lt;br /&gt;
#You then store the '''local key''' that gets returned&lt;br /&gt;
&lt;br /&gt;
===Using Product Addons===&lt;br /&gt;
If the licensing product has any ordered addons, the results from the licensing addon will include a pipe separated string called &amp;quot;addons&amp;quot; with their details that can be processed and used for any number of purposes. For example: restricting access to certain features unless a particular addon has been ordered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [addons] =&amp;gt; name=Test Addon;nextduedate=2017-12-26;status=Active&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $addons from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;addons&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;;&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $tempresult) {&lt;br /&gt;
  $tempresults3 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
    $temparr[$tempresults3[0]] = $tempresults3[1];&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $addons[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Configurable Options===&lt;br /&gt;
If the licensing product has any ordered configurable options, the results from the licensing addon will include a pipe separated string called &amp;quot;configoptions&amp;quot; with their details that can be processed and used for any number of purposes. For example: limiting usage of software to a particular number of clients or admin users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[configoptions] =&amp;gt; Test=0|Test 002=&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $configoptions from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;configoptions&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $key =&amp;gt; $value) {&lt;br /&gt;
    $temparr[$key] = $value;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $configoptions[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the local key?===&lt;br /&gt;
&lt;br /&gt;
The local key is the thing that stops the license checking code having to call your server on every page load. It's basically just an encrypted version of the license check data, so that when it's present and valid, the licensing addon doesn't have to make a remote call which would slow down your application/code, thus improving performance.  The local key will always be empty on the first check your client makes, but then with every successful remote check, a local key value is returned (sample code provided) which you then just need to store and pass into any future license check calls.  We recommend storing into a database for ease of updating and retrieval, but flat files can work just as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Note:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The module create function of this module does not generate a username and password by design. Therefore the username/password fields will be blank under the client's Products/services tab.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
&lt;br /&gt;
===Invalid Key===&lt;br /&gt;
This generally indicates that the licensing checking code is not passing a license key back to the licensing addon. The code being used will need to be corrected to ensure that it is returning the full license key to WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Remote Check Failed===&lt;br /&gt;
This suggests a connection problem between the user's server and the end client's server.&lt;br /&gt;
&lt;br /&gt;
The first step will be to provide the user with a cURL test script that attempts to connect to your WHMCS installation and run it from their server, correcting any detected issues.&lt;br /&gt;
&lt;br /&gt;
If that all appears clear, it could be due to a SSL configuration issue on the user's server. As a workaround, you can potentially add the following into your licence checking code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===A new local key is being generated on every request===&lt;br /&gt;
This behaviour suggests that the local licence key returned by the license checking function after a successful check is not being stored. When no local licence key is stored and passed into the licensing checking function, a remote check has to be performed and a new local key is generated.&lt;br /&gt;
&lt;br /&gt;
Storing the local license key returned by the license checking function and passing it back into the checking function should resolve this. We recommend storing it in a way most appropriate for your particular software, for example in a flat file or in a database.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30617</id>
		<title>Licensing Addon</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30617"/>
				<updated>2021-09-07T13:22:10Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Integrating the Check Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WHMCS licensing addon module allows you to license your own web applications for selling to end users. Supporting both local license keys and periodic remote checking, it offers a robust and secure way of licensing your scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Licensing Addon&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The WHMCS Licensing Addon  is not associated with the [[WHMCS_cPanel_Licensing_Module|cPanel Licensing Automation module]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
By purchasing the licensing addon, this will unlock access to the licensing addon module files which are now bundled with the default WHMCS install package.  So after purchasing, there are no manual installation steps necessary any more - you just need to activate and configure the module in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Addon Modules''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Addon Modules'''. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* '''Public License Verification Tool''' - Enable this option to make available a verification page which visitors can use to check whether a domain is licensed to be using your software. The appearance can be customised by editing the /modles/addons/licensing/licenseverify.tpl template file. It's accessed at http://www.yoursite.com/whmcs/index.php?m=licensing&lt;br /&gt;
* '''Maximum Allowed Reissues''' - Should you wish to limit how many times a client can reissue a licence, specify the maximum number of reissues here.&lt;br /&gt;
* '''Auto Logs Prune''' - To prevent the licence access logs from becoming too large you can specify for how long they should be kept.&lt;br /&gt;
&lt;br /&gt;
==Setting up a licensing product==&lt;br /&gt;
&lt;br /&gt;
#Begin by creating a product under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services'''. More information on creating products is available at [[Products_and_Services#Products|Products and Services]]&lt;br /&gt;
#On the module settings tab, choose &amp;quot;License Software&amp;quot; in the Module dropdown&lt;br /&gt;
#The options for a licensing product will then appear. These are explained in detail below:&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonproductconfigrevised.png]]&lt;br /&gt;
&lt;br /&gt;
*Key Length - this defines how long the randomly generated key will be - enter the numerical value you want&lt;br /&gt;
*Key Prefix - this defines the start of the license key and is how you can validate an applicable key for the product you're performing the checking in has been entered - eg. Monthly-, Owned-, Mobile-, etc...&lt;br /&gt;
*Allow Reissue - determines whether a client can reissue the license from the client area&lt;br /&gt;
*Allow Domain Conflict - When unticked WHMCS will make sure the location at which the licence is being used matches the 'Valid Domain' value in the service record. Tick the option if you want to allow a user to run the product on multiple domains.&lt;br /&gt;
*Allow IP Conflict - as above but for the IP address&lt;br /&gt;
*Allow Directory Conflict - as above but for the directory&lt;br /&gt;
*Support/Updates Addon - explained in detail below&lt;br /&gt;
*Free Trial - This option can be ticked to prevent clients from using more than one licence of this product on the same domain. If a client tries to order a second copy of this product and use it on the same domain as a previous service, it will be automatically suspended with the reason &amp;quot;Duplicate Free Trial Use&amp;quot;. Useful for limiting free trials to one per domain.&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
&lt;br /&gt;
Downloads are how your client receives the software product after purchase.  These are configured using the existing digital download product release mechanism.  For more information on this, refer to [[Product Downloads Distribution]]&lt;br /&gt;
&lt;br /&gt;
==Addons==&lt;br /&gt;
&lt;br /&gt;
Each product can be assigned multiple addon products which can be added at the time of initial ordering or at a later date.  Uses for addons include extra value added services such as installation, configuration, upgrades, etc...  They allow you to charge additional fees for items which aren't required in order to utilise the actual product.&lt;br /&gt;
&lt;br /&gt;
==Support &amp;amp; Update Addons==&lt;br /&gt;
&lt;br /&gt;
If you enable these on your licensing product, then the client is required to have an active support &amp;amp; updates package in order to receive support &amp;amp; download the related product downloads.  This means you can charge your users for the continued support and updates using any of the recurring terms available to you in WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Setting up a Support &amp;amp; Updates Addon Package===&lt;br /&gt;
&lt;br /&gt;
The guide below explains how to create a support &amp;amp; updates package which is include free with the initial license purchase and then requires renewal once it expires.&lt;br /&gt;
&lt;br /&gt;
#Ensure your licensing product is created first&lt;br /&gt;
#Then, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Product Addons''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Product Addons'''.&lt;br /&gt;
#Click '''Add New'''.&lt;br /&gt;
#Enter the name, description, price and recurring cycle - leave the Show on Order setting unchecked&lt;br /&gt;
#Now tick the licensing product(s) in the applicable products section for the addon&lt;br /&gt;
#Now go back to the product configuration area and click the edit icon next to your licensing product&lt;br /&gt;
#On the Module Settings tab, choose the addon you just created in the &amp;quot;Support/Updates Addon&amp;quot; field and save&lt;br /&gt;
&lt;br /&gt;
And that's it! If you didn't want to include it free with the initial purchase, you would leave the setting on the Module Settings tab at None and tick the box for Show on Order in the addon configuration.&lt;br /&gt;
&lt;br /&gt;
==Module Commands==&lt;br /&gt;
&lt;br /&gt;
*Create - Used to generate the license key for the product with status Reissued&lt;br /&gt;
*Suspend - This will set the license status to Suspended&lt;br /&gt;
*Unsuspend - This will set the license status back to Active&lt;br /&gt;
*Terminate - This will set the license status to Expired&lt;br /&gt;
*Reissue - Sets the license status to Reissued so the domain, IP &amp;amp; directory is saved on the next check&lt;br /&gt;
*Revoke - This command will completely remove the license key and allow the number to be reused in future&lt;br /&gt;
*Manage - This button takes you to where you can view &amp;amp; edit the allowed domain, IP &amp;amp; directory for the license&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonrevised.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Managing Licenses==&lt;br /&gt;
&lt;br /&gt;
To manage licenses, go to Addons &amp;gt; Licenses Manager.  From here you can browse through all the license keys that have been issued, search for license keys and make changes to the allowed domains, ips and directory for a license.&lt;br /&gt;
&lt;br /&gt;
==Integrating the Check Code==&lt;br /&gt;
&lt;br /&gt;
The code used to integrate the license check is included with the addon in the '''/modules/servers/licensing/check_sample_code.php''' file.  The idea here is that you would have your user enter the '''license key''' they get issued during an install process or by simply pasting it into a file, and then you load that in your file before calling the '''check_license function''' to validate where the file is being run.  For each successful check, a local key is returned which you then also store in your DB or a file to verify against locally on subsequent page loads.&lt;br /&gt;
&lt;br /&gt;
The steps to integrate are described in more detail below:&lt;br /&gt;
&lt;br /&gt;
#Copy &amp;amp; paste the code into the top of the file you want to protect&lt;br /&gt;
#Enter the URL to your WHMCS system root directory in the '''$whmcsurl''' variable&lt;br /&gt;
#Customise the '''$licensing_secret_key''' variable used to ensure your local keys are different from other licensing addon users&lt;br /&gt;
#Optionally change the '''$localkeydays''' &amp;amp; '''$allowcheckfaildays''' variables if you want to change how often a remote check is made&lt;br /&gt;
#Now retrieve the '''license key''' and '''local key''' from the database or file storage you have saved them in&lt;br /&gt;
#Then call the '''check_license''' function&lt;br /&gt;
#And then act on the result based on the sample code if statements&lt;br /&gt;
#You then store the '''local key''' that gets returned&lt;br /&gt;
&lt;br /&gt;
===Using Product Addons===&lt;br /&gt;
If the licensing product has any ordered addons, the results from the licensing addon will include a pipe separated string called &amp;quot;addons&amp;quot; with their details that can be processed and used for any number of purposes. For example: restricting access to certain features unless a particular addon has been ordered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [addons] =&amp;gt; name=Test Addon;nextduedate=2017-12-26;status=Active&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $addons from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;addons&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;;&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $tempresult) {&lt;br /&gt;
  $tempresults3 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
    $temparr[$tempresults3[0]] = $tempresults3[1];&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $addons[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Configurable Options===&lt;br /&gt;
If the licensing product has any ordered configurable options, the results from the licensing addon will include a pipe separated string called &amp;quot;configoptions&amp;quot; with their details that can be processed and used for any number of purposes. For example: limiting usage of software to a particular number of clients or admin users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[configoptions] =&amp;gt; Test=0|Test 002=&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $configoptions from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;configoptions&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $key =&amp;gt; $value) {&lt;br /&gt;
    $temparr[$key] = $value;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $configoptions[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the local key?===&lt;br /&gt;
&lt;br /&gt;
The local key is the thing that stops the license checking code having to call your server on every page load. It's basically just an encrypted version of the license check data, so that when it's present and valid, the licensing addon doesn't have to make a remote call which would slow down your application/code, thus improving performance.  The local key will always be empty on the first check your client makes, but then with every successful remote check, a local key value is returned (sample code provided) which you then just need to store and pass into any future license check calls.  We recommend storing into a database for ease of updating and retrieval, but flat files can work just as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Note:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The module create function of this module does not generate a username and password by design. Therefore the username/password fields will be blank under the client's Products/services tab.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
&lt;br /&gt;
===Invalid Key===&lt;br /&gt;
This generally indicates that the licensing checking code is not passing a license key back to the licensing addon. The code being used will need to be corrected to ensure that it is returning the full license key to WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Remote Check Failed===&lt;br /&gt;
This suggests a connection problem between the user's server and the end client's server.&lt;br /&gt;
&lt;br /&gt;
The first step will be to provide the user with a cURL test script that attempts to connect to your WHMCS installation and run it from their server, correcting any detected issues.&lt;br /&gt;
&lt;br /&gt;
If that all appears clear, it could be due to a SSL configuration issue on the user's server. As a workaround, you can potentially add the following into your licence checking code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===A new local key is being generated on every request===&lt;br /&gt;
This behaviour suggests that the local licence key returned by the license checking function after a successful check is not being stored. When no local licence key is stored and passed into the licensing checking function, a remote check has to be performed and a new local key is generated.&lt;br /&gt;
&lt;br /&gt;
Storing the local license key returned by the license checking function and passing it back into the checking function should resolve this. We recommend storing it in a way most appropriate for your particular software, for example in a flat file or in a database.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30616</id>
		<title>Licensing Addon</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30616"/>
				<updated>2021-09-07T13:18:59Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Integrating the Check Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WHMCS licensing addon module allows you to license your own web applications for selling to end users. Supporting both local license keys and periodic remote checking, it offers a robust and secure way of licensing your scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Licensing Addon&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The WHMCS Licensing Addon  is not associated with the [[WHMCS_cPanel_Licensing_Module|cPanel Licensing Automation module]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
By purchasing the licensing addon, this will unlock access to the licensing addon module files which are now bundled with the default WHMCS install package.  So after purchasing, there are no manual installation steps necessary any more - you just need to activate and configure the module in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Addon Modules''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Addon Modules'''. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* '''Public License Verification Tool''' - Enable this option to make available a verification page which visitors can use to check whether a domain is licensed to be using your software. The appearance can be customised by editing the /modles/addons/licensing/licenseverify.tpl template file. It's accessed at http://www.yoursite.com/whmcs/index.php?m=licensing&lt;br /&gt;
* '''Maximum Allowed Reissues''' - Should you wish to limit how many times a client can reissue a licence, specify the maximum number of reissues here.&lt;br /&gt;
* '''Auto Logs Prune''' - To prevent the licence access logs from becoming too large you can specify for how long they should be kept.&lt;br /&gt;
&lt;br /&gt;
==Setting up a licensing product==&lt;br /&gt;
&lt;br /&gt;
#Begin by creating a product under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services'''. More information on creating products is available at [[Products_and_Services#Products|Products and Services]]&lt;br /&gt;
#On the module settings tab, choose &amp;quot;License Software&amp;quot; in the Module dropdown&lt;br /&gt;
#The options for a licensing product will then appear. These are explained in detail below:&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonproductconfigrevised.png]]&lt;br /&gt;
&lt;br /&gt;
*Key Length - this defines how long the randomly generated key will be - enter the numerical value you want&lt;br /&gt;
*Key Prefix - this defines the start of the license key and is how you can validate an applicable key for the product you're performing the checking in has been entered - eg. Monthly-, Owned-, Mobile-, etc...&lt;br /&gt;
*Allow Reissue - determines whether a client can reissue the license from the client area&lt;br /&gt;
*Allow Domain Conflict - When unticked WHMCS will make sure the location at which the licence is being used matches the 'Valid Domain' value in the service record. Tick the option if you want to allow a user to run the product on multiple domains.&lt;br /&gt;
*Allow IP Conflict - as above but for the IP address&lt;br /&gt;
*Allow Directory Conflict - as above but for the directory&lt;br /&gt;
*Support/Updates Addon - explained in detail below&lt;br /&gt;
*Free Trial - This option can be ticked to prevent clients from using more than one licence of this product on the same domain. If a client tries to order a second copy of this product and use it on the same domain as a previous service, it will be automatically suspended with the reason &amp;quot;Duplicate Free Trial Use&amp;quot;. Useful for limiting free trials to one per domain.&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
&lt;br /&gt;
Downloads are how your client receives the software product after purchase.  These are configured using the existing digital download product release mechanism.  For more information on this, refer to [[Product Downloads Distribution]]&lt;br /&gt;
&lt;br /&gt;
==Addons==&lt;br /&gt;
&lt;br /&gt;
Each product can be assigned multiple addon products which can be added at the time of initial ordering or at a later date.  Uses for addons include extra value added services such as installation, configuration, upgrades, etc...  They allow you to charge additional fees for items which aren't required in order to utilise the actual product.&lt;br /&gt;
&lt;br /&gt;
==Support &amp;amp; Update Addons==&lt;br /&gt;
&lt;br /&gt;
If you enable these on your licensing product, then the client is required to have an active support &amp;amp; updates package in order to receive support &amp;amp; download the related product downloads.  This means you can charge your users for the continued support and updates using any of the recurring terms available to you in WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Setting up a Support &amp;amp; Updates Addon Package===&lt;br /&gt;
&lt;br /&gt;
The guide below explains how to create a support &amp;amp; updates package which is include free with the initial license purchase and then requires renewal once it expires.&lt;br /&gt;
&lt;br /&gt;
#Ensure your licensing product is created first&lt;br /&gt;
#Then, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Product Addons''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Product Addons'''.&lt;br /&gt;
#Click '''Add New'''.&lt;br /&gt;
#Enter the name, description, price and recurring cycle - leave the Show on Order setting unchecked&lt;br /&gt;
#Now tick the licensing product(s) in the applicable products section for the addon&lt;br /&gt;
#Now go back to the product configuration area and click the edit icon next to your licensing product&lt;br /&gt;
#On the Module Settings tab, choose the addon you just created in the &amp;quot;Support/Updates Addon&amp;quot; field and save&lt;br /&gt;
&lt;br /&gt;
And that's it! If you didn't want to include it free with the initial purchase, you would leave the setting on the Module Settings tab at None and tick the box for Show on Order in the addon configuration.&lt;br /&gt;
&lt;br /&gt;
==Module Commands==&lt;br /&gt;
&lt;br /&gt;
*Create - Used to generate the license key for the product with status Reissued&lt;br /&gt;
*Suspend - This will set the license status to Suspended&lt;br /&gt;
*Unsuspend - This will set the license status back to Active&lt;br /&gt;
*Terminate - This will set the license status to Expired&lt;br /&gt;
*Reissue - Sets the license status to Reissued so the domain, IP &amp;amp; directory is saved on the next check&lt;br /&gt;
*Revoke - This command will completely remove the license key and allow the number to be reused in future&lt;br /&gt;
*Manage - This button takes you to where you can view &amp;amp; edit the allowed domain, IP &amp;amp; directory for the license&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonrevised.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Managing Licenses==&lt;br /&gt;
&lt;br /&gt;
To manage licenses, go to Addons &amp;gt; Licenses Manager.  From here you can browse through all the license keys that have been issued, search for license keys and make changes to the allowed domains, ips and directory for a license.&lt;br /&gt;
&lt;br /&gt;
==Integrating the Check Code==&lt;br /&gt;
&lt;br /&gt;
The code used to integrate the license check is included with the addon in the '''/modules/servers/licensing/check_sample_code.php''' file.  The idea here is that you would have your user enter the license key they get issued during an install process or by simply pasting it into a file, and then you load that in your file before calling the '''check_license function''' to validate where the file is being run.  For each successful check, a local key is returned which you then also store in your DB or a file to verify against locally on subsequent page loads.&lt;br /&gt;
&lt;br /&gt;
The steps to integrate are described in more detail below:&lt;br /&gt;
&lt;br /&gt;
#Copy &amp;amp; paste the code into the top of the file you want to protect&lt;br /&gt;
#Enter the URL to your WHMCS system root directory in the $whmcsurl variable&lt;br /&gt;
#Customise the $licensing_secret_key variable used to ensure your local keys are different from other licensing addon users&lt;br /&gt;
#Optionally change the $localkeydays &amp;amp; $allowcheckfaildays variables if you want to change how often a remote check is made&lt;br /&gt;
#Now retrieve the license key and local key from the database or file storage you have saved them in&lt;br /&gt;
#Then call the check_license function&lt;br /&gt;
#And then act on the result based on the sample code if statements&lt;br /&gt;
#You then store the local key that gets returned&lt;br /&gt;
&lt;br /&gt;
===Using Product Addons===&lt;br /&gt;
If the licensing product has any ordered addons, the results from the licensing addon will include a pipe separated string called &amp;quot;addons&amp;quot; with their details that can be processed and used for any number of purposes. For example: restricting access to certain features unless a particular addon has been ordered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [addons] =&amp;gt; name=Test Addon;nextduedate=2017-12-26;status=Active&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $addons from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;addons&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;;&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $tempresult) {&lt;br /&gt;
  $tempresults3 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
    $temparr[$tempresults3[0]] = $tempresults3[1];&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $addons[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Configurable Options===&lt;br /&gt;
If the licensing product has any ordered configurable options, the results from the licensing addon will include a pipe separated string called &amp;quot;configoptions&amp;quot; with their details that can be processed and used for any number of purposes. For example: limiting usage of software to a particular number of clients or admin users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[configoptions] =&amp;gt; Test=0|Test 002=&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $configoptions from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;configoptions&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $key =&amp;gt; $value) {&lt;br /&gt;
    $temparr[$key] = $value;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $configoptions[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the local key?===&lt;br /&gt;
&lt;br /&gt;
The local key is the thing that stops the license checking code having to call your server on every page load. It's basically just an encrypted version of the license check data, so that when it's present and valid, the licensing addon doesn't have to make a remote call which would slow down your application/code, thus improving performance.  The local key will always be empty on the first check your client makes, but then with every successful remote check, a local key value is returned (sample code provided) which you then just need to store and pass into any future license check calls.  We recommend storing into a database for ease of updating and retrieval, but flat files can work just as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Note:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The module create function of this module does not generate a username and password by design. Therefore the username/password fields will be blank under the client's Products/services tab.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
&lt;br /&gt;
===Invalid Key===&lt;br /&gt;
This generally indicates that the licensing checking code is not passing a license key back to the licensing addon. The code being used will need to be corrected to ensure that it is returning the full license key to WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Remote Check Failed===&lt;br /&gt;
This suggests a connection problem between the user's server and the end client's server.&lt;br /&gt;
&lt;br /&gt;
The first step will be to provide the user with a cURL test script that attempts to connect to your WHMCS installation and run it from their server, correcting any detected issues.&lt;br /&gt;
&lt;br /&gt;
If that all appears clear, it could be due to a SSL configuration issue on the user's server. As a workaround, you can potentially add the following into your licence checking code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===A new local key is being generated on every request===&lt;br /&gt;
This behaviour suggests that the local licence key returned by the license checking function after a successful check is not being stored. When no local licence key is stored and passed into the licensing checking function, a remote check has to be performed and a new local key is generated.&lt;br /&gt;
&lt;br /&gt;
Storing the local license key returned by the license checking function and passing it back into the checking function should resolve this. We recommend storing it in a way most appropriate for your particular software, for example in a flat file or in a database.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30615</id>
		<title>Licensing Addon</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Licensing_Addon&amp;diff=30615"/>
				<updated>2021-09-07T13:18:30Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Integrating the Check Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WHMCS licensing addon module allows you to license your own web applications for selling to end users. Supporting both local license keys and periodic remote checking, it offers a robust and secure way of licensing your scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Licensing Addon&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The WHMCS Licensing Addon  is not associated with the [[WHMCS_cPanel_Licensing_Module|cPanel Licensing Automation module]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
By purchasing the licensing addon, this will unlock access to the licensing addon module files which are now bundled with the default WHMCS install package.  So after purchasing, there are no manual installation steps necessary any more - you just need to activate and configure the module in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Addon Modules''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Addon Modules'''. The following options are available:&lt;br /&gt;
&lt;br /&gt;
* '''Public License Verification Tool''' - Enable this option to make available a verification page which visitors can use to check whether a domain is licensed to be using your software. The appearance can be customised by editing the /modles/addons/licensing/licenseverify.tpl template file. It's accessed at http://www.yoursite.com/whmcs/index.php?m=licensing&lt;br /&gt;
* '''Maximum Allowed Reissues''' - Should you wish to limit how many times a client can reissue a licence, specify the maximum number of reissues here.&lt;br /&gt;
* '''Auto Logs Prune''' - To prevent the licence access logs from becoming too large you can specify for how long they should be kept.&lt;br /&gt;
&lt;br /&gt;
==Setting up a licensing product==&lt;br /&gt;
&lt;br /&gt;
#Begin by creating a product under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services'''. More information on creating products is available at [[Products_and_Services#Products|Products and Services]]&lt;br /&gt;
#On the module settings tab, choose &amp;quot;License Software&amp;quot; in the Module dropdown&lt;br /&gt;
#The options for a licensing product will then appear. These are explained in detail below:&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonproductconfigrevised.png]]&lt;br /&gt;
&lt;br /&gt;
*Key Length - this defines how long the randomly generated key will be - enter the numerical value you want&lt;br /&gt;
*Key Prefix - this defines the start of the license key and is how you can validate an applicable key for the product you're performing the checking in has been entered - eg. Monthly-, Owned-, Mobile-, etc...&lt;br /&gt;
*Allow Reissue - determines whether a client can reissue the license from the client area&lt;br /&gt;
*Allow Domain Conflict - When unticked WHMCS will make sure the location at which the licence is being used matches the 'Valid Domain' value in the service record. Tick the option if you want to allow a user to run the product on multiple domains.&lt;br /&gt;
*Allow IP Conflict - as above but for the IP address&lt;br /&gt;
*Allow Directory Conflict - as above but for the directory&lt;br /&gt;
*Support/Updates Addon - explained in detail below&lt;br /&gt;
*Free Trial - This option can be ticked to prevent clients from using more than one licence of this product on the same domain. If a client tries to order a second copy of this product and use it on the same domain as a previous service, it will be automatically suspended with the reason &amp;quot;Duplicate Free Trial Use&amp;quot;. Useful for limiting free trials to one per domain.&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
&lt;br /&gt;
Downloads are how your client receives the software product after purchase.  These are configured using the existing digital download product release mechanism.  For more information on this, refer to [[Product Downloads Distribution]]&lt;br /&gt;
&lt;br /&gt;
==Addons==&lt;br /&gt;
&lt;br /&gt;
Each product can be assigned multiple addon products which can be added at the time of initial ordering or at a later date.  Uses for addons include extra value added services such as installation, configuration, upgrades, etc...  They allow you to charge additional fees for items which aren't required in order to utilise the actual product.&lt;br /&gt;
&lt;br /&gt;
==Support &amp;amp; Update Addons==&lt;br /&gt;
&lt;br /&gt;
If you enable these on your licensing product, then the client is required to have an active support &amp;amp; updates package in order to receive support &amp;amp; download the related product downloads.  This means you can charge your users for the continued support and updates using any of the recurring terms available to you in WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Setting up a Support &amp;amp; Updates Addon Package===&lt;br /&gt;
&lt;br /&gt;
The guide below explains how to create a support &amp;amp; updates package which is include free with the initial license purchase and then requires renewal once it expires.&lt;br /&gt;
&lt;br /&gt;
#Ensure your licensing product is created first&lt;br /&gt;
#Then, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Product Addons''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Product Addons'''.&lt;br /&gt;
#Click '''Add New'''.&lt;br /&gt;
#Enter the name, description, price and recurring cycle - leave the Show on Order setting unchecked&lt;br /&gt;
#Now tick the licensing product(s) in the applicable products section for the addon&lt;br /&gt;
#Now go back to the product configuration area and click the edit icon next to your licensing product&lt;br /&gt;
#On the Module Settings tab, choose the addon you just created in the &amp;quot;Support/Updates Addon&amp;quot; field and save&lt;br /&gt;
&lt;br /&gt;
And that's it! If you didn't want to include it free with the initial purchase, you would leave the setting on the Module Settings tab at None and tick the box for Show on Order in the addon configuration.&lt;br /&gt;
&lt;br /&gt;
==Module Commands==&lt;br /&gt;
&lt;br /&gt;
*Create - Used to generate the license key for the product with status Reissued&lt;br /&gt;
*Suspend - This will set the license status to Suspended&lt;br /&gt;
*Unsuspend - This will set the license status back to Active&lt;br /&gt;
*Terminate - This will set the license status to Expired&lt;br /&gt;
*Reissue - Sets the license status to Reissued so the domain, IP &amp;amp; directory is saved on the next check&lt;br /&gt;
*Revoke - This command will completely remove the license key and allow the number to be reused in future&lt;br /&gt;
*Manage - This button takes you to where you can view &amp;amp; edit the allowed domain, IP &amp;amp; directory for the license&lt;br /&gt;
&lt;br /&gt;
[[File:Licensingaddonrevised.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Managing Licenses==&lt;br /&gt;
&lt;br /&gt;
To manage licenses, go to Addons &amp;gt; Licenses Manager.  From here you can browse through all the license keys that have been issued, search for license keys and make changes to the allowed domains, ips and directory for a license.&lt;br /&gt;
&lt;br /&gt;
==Integrating the Check Code==&lt;br /&gt;
&lt;br /&gt;
The code used to integrate the license check is included with the addon in the '''/modules/servers/licensing/check_sample_code.php''' file.  The idea here is that you would have your user enter the license key they get issued during an install process or by simply pasting it into a file, and then you load that in your file before calling the check_license function to validate where the file is being run.  For each successful check, a local key is returned which you then also store in your DB or a file to verify against locally on subsequent page loads.&lt;br /&gt;
&lt;br /&gt;
The steps to integrate are described in more detail below:&lt;br /&gt;
&lt;br /&gt;
#Copy &amp;amp; paste the code into the top of the file you want to protect&lt;br /&gt;
#Enter the URL to your WHMCS system root directory in the $whmcsurl variable&lt;br /&gt;
#Customise the $licensing_secret_key variable used to ensure your local keys are different from other licensing addon users&lt;br /&gt;
#Optionally change the $localkeydays &amp;amp; $allowcheckfaildays variables if you want to change how often a remote check is made&lt;br /&gt;
#Now retrieve the license key and local key from the database or file storage you have saved them in&lt;br /&gt;
#Then call the check_license function&lt;br /&gt;
#And then act on the result based on the sample code if statements&lt;br /&gt;
#You then store the local key that gets returned&lt;br /&gt;
&lt;br /&gt;
===Using Product Addons===&lt;br /&gt;
If the licensing product has any ordered addons, the results from the licensing addon will include a pipe separated string called &amp;quot;addons&amp;quot; with their details that can be processed and used for any number of purposes. For example: restricting access to certain features unless a particular addon has been ordered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 [addons] =&amp;gt; name=Test Addon;nextduedate=2017-12-26;status=Active&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $addons from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;addons&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;;&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $tempresult) {&lt;br /&gt;
  $tempresults3 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
    $temparr[$tempresults3[0]] = $tempresults3[1];&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $addons[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using Configurable Options===&lt;br /&gt;
If the licensing product has any ordered configurable options, the results from the licensing addon will include a pipe separated string called &amp;quot;configoptions&amp;quot; with their details that can be processed and used for any number of purposes. For example: limiting usage of software to a particular number of clients or admin users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[configoptions] =&amp;gt; Test=0|Test 002=&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This can be processed into a named array called $configoptions from the $results array returned by your check_license function. To do so, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;$tempresults = explode(&amp;quot;|&amp;quot;,$results[&amp;quot;configoptions&amp;quot;]);&lt;br /&gt;
foreach ($tempresults AS $tempresult) {&lt;br /&gt;
  $tempresults2 = explode(&amp;quot;=&amp;quot;,$tempresult);&lt;br /&gt;
  $temparr = array();&lt;br /&gt;
 &lt;br /&gt;
  foreach ($tempresults2 AS $key =&amp;gt; $value) {&lt;br /&gt;
    $temparr[$key] = $value;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  $configoptions[] = $temparr;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Frequently Asked Questions==&lt;br /&gt;
&lt;br /&gt;
===What is the local key?===&lt;br /&gt;
&lt;br /&gt;
The local key is the thing that stops the license checking code having to call your server on every page load. It's basically just an encrypted version of the license check data, so that when it's present and valid, the licensing addon doesn't have to make a remote call which would slow down your application/code, thus improving performance.  The local key will always be empty on the first check your client makes, but then with every successful remote check, a local key value is returned (sample code provided) which you then just need to store and pass into any future license check calls.  We recommend storing into a database for ease of updating and retrieval, but flat files can work just as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Note:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The module create function of this module does not generate a username and password by design. Therefore the username/password fields will be blank under the client's Products/services tab.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
&lt;br /&gt;
===Invalid Key===&lt;br /&gt;
This generally indicates that the licensing checking code is not passing a license key back to the licensing addon. The code being used will need to be corrected to ensure that it is returning the full license key to WHMCS.&lt;br /&gt;
&lt;br /&gt;
===Remote Check Failed===&lt;br /&gt;
This suggests a connection problem between the user's server and the end client's server.&lt;br /&gt;
&lt;br /&gt;
The first step will be to provide the user with a cURL test script that attempts to connect to your WHMCS installation and run it from their server, correcting any detected issues.&lt;br /&gt;
&lt;br /&gt;
If that all appears clear, it could be due to a SSL configuration issue on the user's server. As a workaround, you can potentially add the following into your licence checking code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&lt;br /&gt;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===A new local key is being generated on every request===&lt;br /&gt;
This behaviour suggests that the local licence key returned by the license checking function after a successful check is not being stored. When no local licence key is stored and passed into the licensing checking function, a remote check has to be performed and a new local key is generated.&lt;br /&gt;
&lt;br /&gt;
Storing the local license key returned by the license checking function and passing it back into the checking function should resolve this. We recommend storing it in a way most appropriate for your particular software, for example in a flat file or in a database.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Smarty_Security_Policy&amp;diff=30608</id>
		<title>Smarty Security Policy</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Smarty_Security_Policy&amp;diff=30608"/>
				<updated>2021-08-25T16:51:21Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-question-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;This page describes a feature available in version 7.0 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
WHMCS 7.0 and later use Smarty Security Policies, a security-hardening measure. WHMCS uses a system policy for system wide use and a mail policy specifically for stored and dynamic email-based templates.&lt;br /&gt;
  &lt;br /&gt;
By default, WHMCS does not define any PHP functionality restrictions for the system policy (except to honor the preexisting &amp;lt;tt&amp;gt;php&amp;lt;/tt&amp;gt; tag setting '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Security''', or '''Setup &amp;gt; General Settings &amp;gt; Security''' prior to WHMCS 8.0). All template files that use this policy are file-based (for example, system themes and order form templates) and require file-level access. Because of this, they are automatically implicitly trusted. Because custom system themes are much more likely to have additional PHP-oriented logic, any restrictions defined by WHMCS could result in website rendering issues. It is completely within your discretion to determine whether implicit trust at the file level is invalid. You may make any appropriate restrictions for this system policy.&lt;br /&gt;
  &lt;br /&gt;
The mail policy restricts what PHP functionality can be used in email-based templates. The default mail policy will limit the use of [http://www.smarty.net/docs/en/language.modifiers.tpl variable modifiers] to:&lt;br /&gt;
  &lt;br /&gt;
*&amp;lt;tt&amp;gt;escape&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;count&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;urlencode&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;ucfirst&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;date_format&amp;lt;/tt&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
The default mail policy restricts the use of native PHP functions to:&lt;br /&gt;
  &lt;br /&gt;
*&amp;lt;tt&amp;gt;isset&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;empty&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;count&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;sizeof&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;in_array&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;is_array&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;time&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&amp;lt;tt&amp;gt;nl2br&amp;lt;/tt&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Finally, the default mail policy blocks these Smarty tags:&lt;br /&gt;
  &lt;br /&gt;
* &amp;lt;tt&amp;gt;block&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;function&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;include&amp;lt;/tt&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
The default mail policy will not allow any calls to static classes, fetching any data from PHP streams, or accessing any super global variables.&lt;br /&gt;
  &lt;br /&gt;
If you want to redefine either the system or mail policy, you can do this by adding a &amp;lt;tt&amp;gt;$smarty_security_policy&amp;lt;/tt&amp;gt; setting to &amp;lt;tt&amp;gt;configuration.php&amp;lt;/tt&amp;gt;. This example limits email templates (by modifying the mail policy) to &amp;lt;tt&amp;gt;ucwords&amp;lt;/tt&amp;gt; as the only native PHP function allowed, while not changing the default restrictions on variable modifiers:&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;div class=&amp;quot;source-cli&amp;quot;&amp;gt;&lt;br /&gt;
// Smarty custom email based template policy:&lt;br /&gt;
&amp;lt;br/&amp;gt;$smarty_security_policy = [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'mail' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'php_functions' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'ucwords',&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;];&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
The example below would restrict the use of variable modifiers so that &amp;lt;tt&amp;gt;strpos&amp;lt;/tt&amp;gt; was the only variable modifier permitted in an email template without changing the default restrictions on PHP functions:&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;div class=&amp;quot;source-cli&amp;quot;&amp;gt;&lt;br /&gt;
// Smarty custom email based template policy:&lt;br /&gt;
&amp;lt;br/&amp;gt;$smarty_security_policy = [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'mail' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'php_modifiers' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'strpos',&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;];&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
===Using {include_php} Syntax===&lt;br /&gt;
  &lt;br /&gt;
Smarty has deprecated the &amp;lt;tt&amp;gt;{include_php}&amp;lt;/tt&amp;gt; syntax, but WHMCS currently supports this behavior via Policies. If your template file invokes and includes a PHP script by using the Smarty &amp;lt;tt&amp;gt;{include_php}&amp;lt;/tt&amp;gt; syntax, the full path to the directory containing that script will need to be whitelisted in the &amp;lt;tt&amp;gt;trusted_dir&amp;lt;/tt&amp;gt; setting of your Policy.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;div class=&amp;quot;source-cli&amp;quot;&amp;gt;&lt;br /&gt;
// Smarty custom email based template policy:&lt;br /&gt;
&amp;lt;br/&amp;gt;$smarty_security_policy = [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'system' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'trusted_dir' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'/path/to/folder',&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;];&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
See the [http://www.smarty.net/docs/en/advanced.features.tpl#advanced.features.security/ Smarty documentation] for all possible settings and what behavior to expect when assigning array and Boolean values.&lt;br /&gt;
  &lt;br /&gt;
=== Supported Policy Settings and Values ===&lt;br /&gt;
  &lt;br /&gt;
The settings that a WHMCS Smarty Security Policy enforces are the same as those defined by the Smarty library itself. You can learn more about about these settings from [http://www.smarty.net/docs/en/advanced.features.tpl the Smarty documentation].&lt;br /&gt;
  &lt;br /&gt;
In WHMCS version 8.0 and later, WHMCS doesn't honour Smarty's &amp;lt;tt&amp;gt;disabled_special_smarty_vars&amp;lt;/tt&amp;gt; parameter. Instead, policies should use &amp;lt;tt&amp;gt;enabled_special_smarty_vars&amp;lt;/tt&amp;gt;. This change in behaviour is an &amp;quot;only allow&amp;quot; paradigm to the most sensitive parts of the Smarty engine implementation. It establishes a stronger security posture at present and for any future engine implementations.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;source-cli&amp;quot;&amp;gt;&lt;br /&gt;
// Smarty enable special variables policy:&lt;br /&gt;
&amp;lt;br/&amp;gt;$smarty_security_policy = [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'system' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'enabled_special_smarty_vars' =&amp;gt; [&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;'cookies',&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;],&lt;br /&gt;
&amp;lt;br/&amp;gt;]; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;enabled_special_smarty_vars&amp;lt;/tt&amp;gt;'s value should be an array using [https://www.smarty.net/docs/en/language.variables.smarty.tpl these options].&lt;br /&gt;
The follow are enabled in the WHMCS system policy for compatibility with older templates and may not be required for your current or future WHMCS templates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;source-cli&amp;quot;&amp;gt;&lt;br /&gt;
'foreach',&lt;br /&gt;
&amp;lt;br/&amp;gt;'section',&lt;br /&gt;
&amp;lt;br/&amp;gt;'block',&lt;br /&gt;
&amp;lt;br/&amp;gt;'capture',&lt;br /&gt;
&amp;lt;br/&amp;gt;'now',&lt;br /&gt;
&amp;lt;br/&amp;gt;'get',&lt;br /&gt;
&amp;lt;br/&amp;gt;'post',&lt;br /&gt;
&amp;lt;br/&amp;gt;'server',&lt;br /&gt;
&amp;lt;br/&amp;gt;'request',&lt;br /&gt;
&amp;lt;br/&amp;gt;'template',&lt;br /&gt;
&amp;lt;br/&amp;gt;'const',&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;Defining your own Smarty Security Policy requires you to include all variables used by client and admin templates, including the ones that WHMCS otherwise enables by default (as above).&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=MaxMind&amp;diff=30606</id>
		<title>MaxMind</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=MaxMind&amp;diff=30606"/>
				<updated>2021-08-24T12:29:53Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Upgrading from MaxMind V1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MaxMind is a leading provider of IP intelligence and online fraud prevention tools.&lt;br /&gt;
&lt;br /&gt;
==Setup and Configuration==&lt;br /&gt;
 &lt;br /&gt;
To enable MaxMind integration in WHMCS 8.2 and later, follow the steps below:&lt;br /&gt;
 &lt;br /&gt;
* Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Fraud Protection'''.&lt;br /&gt;
* Click '''Activate''' for MaxMind.&lt;br /&gt;
* Check the checkbox to enable MaxMind.&lt;br /&gt;
* Enter your '''MaxMind User ID''' and the '''Licence Key'''. You can find these within the '''My License Key''' page inside the MaxMind online portal.&lt;br /&gt;
* Click '''Save'''.&lt;br /&gt;
 &lt;br /&gt;
To enable MaxMind integration in WHMCS 8.1 and earlier, follow the steps below:&lt;br /&gt;
 &lt;br /&gt;
* Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Fraud Protection''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Fraud Protection'''.&lt;br /&gt;
* Choose '''MaxMind''' from the menu.&lt;br /&gt;
* Check the '''Enable''' checkbox.&lt;br /&gt;
* Enter your '''MaxMind User ID''' and the '''Licence Key'''. You can find these within the '''My License Key''' page inside the MaxMind online portal.&lt;br /&gt;
* Click '''Save'''.&lt;br /&gt;
&lt;br /&gt;
==Configuration Options==&lt;br /&gt;
&lt;br /&gt;
===Choosing a Service Type===&lt;br /&gt;
&lt;br /&gt;
MaxMind offers three different levels of check at the time of writing:&lt;br /&gt;
&lt;br /&gt;
* '''Score''' - minFraud score provides only a risk score in WHMCS. No other data is available when using this check type. MaxMind recommend this check type to build your own risk modelling.&lt;br /&gt;
* '''Insights''' - minFraud Insights provide a wide range of data to check the potential risk of an order. Information regarding the IP location, the country data and email address is provided with this check type. minFraud Insights is the most comparable offering to the older V1 API.&lt;br /&gt;
* '''Factors''' - minFraud Factors builds on the same data as Insights, and then provides additional scoring based on the order input. Check the comparison page for the subscores that can be provided.'''&lt;br /&gt;
&lt;br /&gt;
Essentially, the higher the level, the more analytics and metrics feedback you will receive. The different service types each have differing costs associated with them. Please refer to the MaxMind website for more details.&lt;br /&gt;
&lt;br /&gt;
===MaxMind Fraud Risk Score===&lt;br /&gt;
&lt;br /&gt;
Orders that receive a risk score higher than the value entered here will be marked as fraudulent and prevented from completing checkout.&lt;br /&gt;
&lt;br /&gt;
The default value is 20. A value between 0.01 and 99.9 can be entered. This threshold can then be adjusted up or down depending upon results. For more information refer to [https://support.maxmind.com/what-is-the-riskscore/ What is the riskScore?]&lt;br /&gt;
&lt;br /&gt;
Entering 0 in the Risk Score field will disable checking this option and is not recommended.&lt;br /&gt;
&lt;br /&gt;
===Reject Free Email Service===&lt;br /&gt;
&lt;br /&gt;
Ticking this option checks if the e-mail domain used by the customer is from a free e-mail provider and if so will flag the order as fraud. Examples of free e-mail providers include the following: Yahoo.com, Gmail.com, and MSN.com. The MaxMind system currently has categorised 31,000 free e-mail domain providers around the world.&lt;br /&gt;
&lt;br /&gt;
===Reject Country Mismatch===&lt;br /&gt;
&lt;br /&gt;
Select this option to mark an order as fraudulent if the billing address provided by a client is significantly different from the location of the IP Address used to place the order.&lt;br /&gt;
&lt;br /&gt;
===Reject Anonymous Networks===&lt;br /&gt;
&lt;br /&gt;
Select this option to mark an order as fraudulent if the order is placed via an anonymous network such as a proxy or VPN.&lt;br /&gt;
&lt;br /&gt;
===Reject High Risk Country===&lt;br /&gt;
&lt;br /&gt;
Select this option to mark an order as fraudulent if the transaction's billing address or IP address is located in a country that MaxMind has flagged as high risk.&lt;br /&gt;
&lt;br /&gt;
===Custom Rules===&lt;br /&gt;
&lt;br /&gt;
Custom Rules can be used to reject an orders based on a combination of rules you setup. Custom Rules can be created and managed from within your MaxMind account, more information is available in the [https://support.maxmind.com/custom-rules-guide/ Custom Rules documentation].&amp;lt;br/&amp;gt;&lt;br /&gt;
Accept Custom Rules have no effect on the order status.&lt;br /&gt;
&lt;br /&gt;
==Upgrading from MaxMind V1.x to V2==&lt;br /&gt;
&lt;br /&gt;
Your configuration will be automatically updated when upgrading a WHMCS installation from WHMCS 7.5 or earlier to WHMCS 7.6 or later.  However, one additional configuration is required to allow fraud checking to continue. The new '''User ID''' configuration parameter must be set for API Authentication to succeed. Your MaxMind User ID can be found on the My License Key page in a MaxMind account.&lt;br /&gt;
&lt;br /&gt;
==Legacy MaxMind Module==&lt;br /&gt;
&lt;br /&gt;
If you are looking for documentation for the MaxMind module in WHMCS 7.5 or earlier, please see [[MaxMind_Legacy_Module]]&lt;br /&gt;
&lt;br /&gt;
==Common Errors==&lt;br /&gt;
===MAX_REQUESTS_REACHED===&lt;br /&gt;
This means you have run out of MinFraud queries on your MaxMind account, you will need to purchase more queries via the MaxMind website.&lt;br /&gt;
&lt;br /&gt;
===INVALID_LICENSE_KEY===&lt;br /&gt;
This error indicates that the license key you provided in your settings is incorrect. It can also indicate that your license key is not valid for the service you are attempting to access. You should first verify your license key has been properly entered at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Fraud Protection''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Fraud Protection'''. If the license key is correct, you should contact MaxMind to inquire why your license key is returning as invalid.&lt;br /&gt;
&lt;br /&gt;
===LICENSE_REQUIRED===&lt;br /&gt;
This error will be returned if no license key has been provided. Please check your license key setting at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Fraud Protection''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Fraud Protection'''.&lt;br /&gt;
&lt;br /&gt;
===USER_ID_REQUIRED===&lt;br /&gt;
This error will be returned if no User ID has been provided. Please check your license key setting at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Fraud Protection''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Fraud Protection'''.&lt;br /&gt;
&lt;br /&gt;
===PERMISSION_REQUIRED===&lt;br /&gt;
This is returned if you do not have permission to use the service. Please contact MaxMind for more information.&lt;br /&gt;
&lt;br /&gt;
===IP_NOT_FOUND===&lt;br /&gt;
This error will be returned if the IP address is not valid, if it is not public, or if it is not in our GeoIP database.&lt;br /&gt;
&lt;br /&gt;
===CITY_NOT_FOUND===&lt;br /&gt;
MaxMind maintain a list of valid cities, this city in the client's Profile at the time of ordering must match one of the cities on MaxMind's list, otherwise the order will be rejected with this error.&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Product-list-page-promo.png&amp;diff=30599</id>
		<title>File:Product-list-page-promo.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Product-list-page-promo.png&amp;diff=30599"/>
				<updated>2021-08-19T20:13:16Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: Joshua uploaded a new version of File:Product-list-page-promo.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Product-list-page-promo.png&amp;diff=30598</id>
		<title>File:Product-list-page-promo.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Product-list-page-promo.png&amp;diff=30598"/>
				<updated>2021-08-19T20:10:27Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: Joshua uploaded a new version of File:Product-list-page-promo.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=MarketConnect_Promotions_and_Upsells&amp;diff=30597</id>
		<title>MarketConnect Promotions and Upsells</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=MarketConnect_Promotions_and_Upsells&amp;diff=30597"/>
				<updated>2021-08-19T20:02:46Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Product List Page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WHMCS MarketConnect comes with ready made landing pages and promotions/upsells built into the client area and shopping cart user experience.&lt;br /&gt;
&lt;br /&gt;
You can control these and turn them on and off via the MarketConnect management page within the admin area.&lt;br /&gt;
&lt;br /&gt;
==Promotions==&lt;br /&gt;
&lt;br /&gt;
When enabled, MarketConnect can show promotional messages to customers promoting products and services which they do not have. These are supported in the Client Area homepage, the services list, specific product details and in the cart process. &lt;br /&gt;
&lt;br /&gt;
===Homepage===&lt;br /&gt;
&lt;br /&gt;
When the homepage banners are activated, they will show for logged in clients that don't have the service being offered. In this example a client has a hosting package but has not ordered a Weebly Site Builder service. We show them a banner highlighting the pricing we have configured in the Admin interface:&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot 2017-05-16 11.37.28.png|750px]]&lt;br /&gt;
&lt;br /&gt;
The learn more link takes you to our product specific landing page. The highlighted button takes you into a store page where you can setup the details of your order and progress to checking out. &lt;br /&gt;
&lt;br /&gt;
===Product Detail Page===&lt;br /&gt;
&lt;br /&gt;
When the product details options are activated, they will show on products that have not already ordered that service. In this example the client does not have spam filtering or weebly, so they are shown a sidebar promo for Weebly and a main panel promo relating to SpamExperts Email Security.&lt;br /&gt;
&lt;br /&gt;
[[File:Client-product-details-upsell.png|750px]]&lt;br /&gt;
 &lt;br /&gt;
The learn more link takes you to the product specific landing page. The highlighted button takes you into a store page where you can setup the details of your order and progress to checking out.&lt;br /&gt;
&lt;br /&gt;
===Product List Page===&lt;br /&gt;
&lt;br /&gt;
When the product list page is enabled, we add a banner to the sidebar that allows you to promote additional services to your customers. In this example the customer has a hosting account but no site builder, so we show an advertisement.&lt;br /&gt;
&lt;br /&gt;
[[File:Product-list-page-promo.png|750px]]&lt;br /&gt;
&lt;br /&gt;
The banner takes you to our product specific landing page.&lt;br /&gt;
&lt;br /&gt;
===View Cart Page===&lt;br /&gt;
&lt;br /&gt;
When the view cart promotion is enabled, we add a banner underneath the existing items in the cart if there is a product in the cart but not this type of product. In this example the customer is shown a promotion for adding a SSL certificate to their hosting order.&lt;br /&gt;
&lt;br /&gt;
[[File:Cart-ssl-upsell.png|750px]]&lt;br /&gt;
&lt;br /&gt;
Clicking the button will add the product to the cart with the price and taxes in the summary section.&lt;br /&gt;
&lt;br /&gt;
===Checkout Page===&lt;br /&gt;
&lt;br /&gt;
When the checkout page promotion is enabled, if a customer proceeds to checkout without adding an additional service we offer them the chance to add it before completing the order. In this example you can see a promotion for all 3 MarketConnect services.&lt;br /&gt;
&lt;br /&gt;
[[File:Cart-checkout-all-upsells.png|500px]]&lt;br /&gt;
&lt;br /&gt;
==Upsells==&lt;br /&gt;
&lt;br /&gt;
WHMCS can show users recommended products that they may upgrade to after making an initial choice. This provides a simple and convenient way for customers to see alternative options that are available and might be better suited to them.  We refer to these as upsells. Upsells are shown when a customer adds MarketConnect service to the cart. Version 7.2.0 includes two upsell opportunities: in the store landing page and in the product configuration page. &lt;br /&gt;
&lt;br /&gt;
===Store Landing Page===&lt;br /&gt;
&lt;br /&gt;
The SpamExperts landing page allows you to select which type of service and shows discounts if you bundle multiple different services.&lt;br /&gt;
&lt;br /&gt;
===Product Configuration Page===&lt;br /&gt;
&lt;br /&gt;
Each of the MarketConnect products are configured in a custom product configuration page. This page will also display an upsell opportunity if the customer does not have a top of the line product selected. In this example, the customer has selected a RapidSSL certificate, they are offered the chance to upgrade to a wildcard SSL certificate. &lt;br /&gt;
&lt;br /&gt;
[[File:Ssl-upsell-store-order.png|750px]]&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Product-list-page-promo.png&amp;diff=30596</id>
		<title>File:Product-list-page-promo.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Product-list-page-promo.png&amp;diff=30596"/>
				<updated>2021-08-19T20:00:36Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Data_Retention_Policy_Automation&amp;diff=30578</id>
		<title>Data Retention Policy Automation</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Data_Retention_Policy_Automation&amp;diff=30578"/>
				<updated>2021-08-10T13:03:36Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Automatically Delete Inactive Clients */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-question-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This page describes a feature available in version 7.5 and above&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
The length of time you must keep data for is often governed by the laws and regulations of your local jurisdiction.  One thing most jurisdictions share in common however is that you should only keep personal data for as long as is necessary.&lt;br /&gt;
&lt;br /&gt;
The Data Retention Policy Automation introduced in WHMCS 7.5 allows you to have WHMCS automatically enforce your data retention policy in relation to the length of time you keep your client records for.&lt;br /&gt;
&lt;br /&gt;
==Data Retention Settings==&lt;br /&gt;
 &lt;br /&gt;
The data retention settings are in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' ('''Setup &amp;gt; Automation Settings''' in WHMCS 7.10 and earlier).&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
===Automatically Delete Inactive Clients===&lt;br /&gt;
 &lt;br /&gt;
This setting deletes client records after a given number of months without invoice or transaction history. This setting defaults to ''Never''.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Paid Invoices and Transactions&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
The presence of paid invoices or transactions within the given timeframe defines client records that are kept. Enabling this feature with clients in ''Inactive'' or ''Closed'' that have no invoice or transaction history will result in those clients being deleted immediately.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
To enable this, select '''After no invoice or transaction activity has occurred for the following number of months:''' and specify a number of months that is greater than &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
When you enable it, the system performs the '''Data Retention Pruning''' task daily and will remove clients that meet the following conditions:&lt;br /&gt;
 &lt;br /&gt;
* A status of [[Automation_Settings#Client_Status_Update|'''Inactive''' or '''Closed''']].&lt;br /&gt;
* No invoices that have been marked paid within the number of months you specify.&lt;br /&gt;
* No transactions that have been entered or applied within the number of months you specify.&lt;br /&gt;
* An affiliate with a balance of 0 or that has '''not''' made a referral within the specified retention period.&lt;br /&gt;
 &lt;br /&gt;
If you set '''Delete associated users if the user(s) are not associated with any other client account.''' to '''YES''', the '''Data Retention Pruning''' task will also delete users that are only associated with this client.&lt;br /&gt;
 &lt;br /&gt;
The system can automatically change the client status. Use the '''[[Automation_Settings#Client_Status_Update|Client Status Update]]''' setting to control this.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Billing_Logic&amp;diff=30577</id>
		<title>Billing Logic</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Billing_Logic&amp;diff=30577"/>
				<updated>2021-08-10T13:01:10Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Billing Cycles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Having an understanding of WHMCS's billing and invoicing logic, core elements of the software, will enable years of smooth and trouble-free operation.&lt;br /&gt;
&lt;br /&gt;
==Ordering==&lt;br /&gt;
When a new visitor places an order, the system creates several new records, which contain the various pieces of information on the order form:&lt;br /&gt;
* A client record, which stores the customer's contact details and payment preferences.&lt;br /&gt;
* The service and domain record(s), which contain the details of the service the client selected on the order form.&lt;br /&gt;
* An invoice record, which records the amount to pay, when it is due, and how to make payment.&lt;br /&gt;
* An order record, which ties all of the above together and records the fraud report details (if you enable them). The order is a static record which reflects the prices and items at the time of ordering. The order won't reflect subsequent changes.&lt;br /&gt;
&lt;br /&gt;
==Invoicing==&lt;br /&gt;
===Initial Invoice===&lt;br /&gt;
When an initial order creates an invoice, the default behavior is that the invoice is due on the day of ordering. The exception to this is when you use the [[Ordering_Tab#Order_Days_Grace|Order Grace Days setting]], in which case the system will set the invoice due date &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt; days into the future.&lt;br /&gt;
&lt;br /&gt;
Upon payment of the initial invoice, the system checks the associated products to determine whether to take action automatically, based upon the [[Module_Settings_.28aka_Provisioning.29|Module Settings]]. This could be one of the following actions:&lt;br /&gt;
* Automatically set up the product as soon as a client places an order.&lt;br /&gt;
* Automatically set up the product as soon as you receive the first payment.&lt;br /&gt;
* Automatically set up the product when you manually accept a pending order.&lt;br /&gt;
* Do not automatically set up this product.&lt;br /&gt;
The system then increments the service's Next Due Date value forward one billing cycle (for example, 1 month, 3 months, 6 months, 1 year, 2 years, or 3 years).&lt;br /&gt;
&lt;br /&gt;
===Renewal Invoices===&lt;br /&gt;
The Next Due Date of the service depends on the date at which the next payment is due. When the cron job executes the daily automation tasks, the system:&lt;br /&gt;
&lt;br /&gt;
* Analyzes the Next Due Date of all Active, Pending and Suspended services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future, based on the Invoice Generation setting.&lt;br /&gt;
* Ensures no invoice item exists for the service on the next due date.&lt;br /&gt;
* Generates a new invoice if the system evaluates the above points as true.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreation InvoiceCreation] Action Hook point.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreationpreemail InvoiceCreationPreEmail] Action Hook point.&lt;br /&gt;
* Sends the Invoice Created email to the client.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreated InvoiceCreated] Action Hook point.&lt;br /&gt;
* Increments the Next Invoice Date of the service by one billing cycle.&lt;br /&gt;
&lt;br /&gt;
In this way, WHMCS will never generate two invoices for a given product, service, or domain with the same due date, even if you have cancelled or deleted the original invoice.&lt;br /&gt;
&lt;br /&gt;
As the Next Due Date is incremented forward based upon the previous value, this means paying an invoice after the due date will not change the client's renewal date to reflect the date of payment. A service always invoices for a contiguous period without gaps. This prevents a situation in which a customer might hope to avoid paying for a service by intentionally paying late.&lt;br /&gt;
&lt;br /&gt;
===Continuous Invoice Generation===&lt;br /&gt;
When you enable the [[Invoicing_Setup#Continuous_Invoice_Generation|Continuous Invoice Generation]] option in the general settings, it alters the invoice generation logic so that the system creates renewal invoices even if the previous one is unpaid.&lt;br /&gt;
&lt;br /&gt;
Checking a hidden field in the service record, Next Invoice Date, enables this. The Next Invoice Date field maintains a separate record of the due date for next invoice to generate. The Next Due Date value determines the next invoice to be paid.&lt;br /&gt;
&lt;br /&gt;
In this mode, when the cron job executes the daily automation tasks, it:&lt;br /&gt;
* Analyzes the Next Invoice Date of all Active, Pending and Suspended services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future, based on the Invoice Generation setting.&lt;br /&gt;
* Ensures no invoice item exists for the service on the next invoice date.&lt;br /&gt;
* Generates a new invoice if the system evaluates the above points as true.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreation InvoiceCreation] Action Hook point.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreationpreemail InvoiceCreationPreEmail] Action Hook point.&lt;br /&gt;
* Sends the Invoice Created email to the client.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreated InvoiceCreated] Action Hook point.&lt;br /&gt;
* Increments the Next Invoice Date of the service by one billing cycle.&lt;br /&gt;
&lt;br /&gt;
In this way, WHMCS maintains a separate record of which invoice to generate and which payment is due.&lt;br /&gt;
&lt;br /&gt;
==Payments==&lt;br /&gt;
A transaction that fully pays the balance on an invoice, reducing it to &amp;lt;tt&amp;gt;0.00&amp;lt;/tt&amp;gt; and marking it paid, triggers automation on payment. This means that editing an invoice and changing the status to Paid will ''not'' trigger automation. Upon adding payment to an invoice for a product, service, or domain, the system:&lt;br /&gt;
* Enters a transaction into the database.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#addtransaction AddTransaction] Action Hook point.&lt;br /&gt;
* Subtracts the transaction amount from the invoice balance.&lt;br /&gt;
* Marks the invoice as paid if the invoice balance is now 0.&lt;br /&gt;
* Changes the invoice status to Paid.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicepaidpreemail InvoicePaidPreEmail] Action Hook point.&lt;br /&gt;
* Sends a payment confirmation email to the client.&lt;br /&gt;
* Increments the Next Due Date of the associated service or domain by one billing cycle.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicepaid InvoicePaid] Action Hook point.&lt;br /&gt;
&lt;br /&gt;
===Overpayments===&lt;br /&gt;
If a transaction includes an amount greater than the balance of the invoice, the system:&lt;br /&gt;
* Records the entire transaction against the invoice, making the balance negative.&lt;br /&gt;
* Marks the invoice as paid.&lt;br /&gt;
* Credits the difference between the balance and the transaction amount to the client's account.&lt;br /&gt;
* Changes the credit description format to ''Invoice # Overpayment''.&lt;br /&gt;
&lt;br /&gt;
Sometimes, fixed payments services (such as PayPal Subscriptions and 2Checkout Recurring Payments) can send a payment when no payment is due. In these situations, the system:&lt;br /&gt;
&lt;br /&gt;
* Records the entire transaction against the invoice that originally created the billing agreement, making the balance negative.&lt;br /&gt;
* Credits the full transaction amount to the client's account.&lt;br /&gt;
* Changes the credit description format to ''Invoice # Overpayment''.&lt;br /&gt;
&lt;br /&gt;
===Refunds===&lt;br /&gt;
You can issue refunds on transactions for invoices via the Refunds tab. When a you initiate a refund, the system:&lt;br /&gt;
* Performs the selected refund action, which could be either of the following actions:&lt;br /&gt;
** It sends a refund command to the payment gateway (if it supports it).&lt;br /&gt;
** It adds a credit to the client's account with the description ''Credit from Refund of Invoice ID #''.&lt;br /&gt;
* Records a negative transaction against the invoice.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#addtransaction AddTransaction Action Hook] point.&lt;br /&gt;
* Increases the invoice's balance by the refunded amount.&lt;br /&gt;
* Changes the invoice's status to Refunded if system refunded the full balance.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicerefunded InvoiceRefunded] Action Hook point.&lt;br /&gt;
* Sends the Invoice Refund Confirmation email to the client.&lt;br /&gt;
&lt;br /&gt;
If the refunded transaction resulted in a credit to the client's account, you must choose how to handle the credit:&lt;br /&gt;
* Remove the refunded amount from the credit balance.&lt;br /&gt;
* Do not change the credit.&lt;br /&gt;
&lt;br /&gt;
===Payment Reversals===&lt;br /&gt;
When issuing a [[#Refunds|refund]], there is also the option to reverse the payment. This is useful when you want to reverse the automated actions that the payment triggered, typically in the event of a payment dispute or chargeback.&lt;br /&gt;
&lt;br /&gt;
The actions that the system takes when reversing a payment are context sensitive and depend upon your payment reversal settings. For an in-depth discussion of this feature, refer to the [[Payment Reversals]] page.&lt;br /&gt;
&lt;br /&gt;
===Billing Cycles===&lt;br /&gt;
A billing cycle is a calendar period, so &amp;quot;1 month&amp;quot; is not a consistent period of days. When you agree to bill by the month, you are charging the same amount of money for different amounts of service. WHMCS uses the PHP date function's computation to determine the next due date. It adds a month and returns the date, which becomes the Next Due Date.&lt;br /&gt;
&lt;br /&gt;
The following billing cycles are available for products or services and product addons:&lt;br /&gt;
&lt;br /&gt;
* One Time&lt;br /&gt;
* Monthly&lt;br /&gt;
* Quarterly&lt;br /&gt;
* Semi-Annually&lt;br /&gt;
* Anually&lt;br /&gt;
* Biennially&lt;br /&gt;
* Triennially&lt;br /&gt;
&lt;br /&gt;
====February====&lt;br /&gt;
The shorter length of February can cause some unique behaviour that does not happen for the other 11 months of a year:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;table table-striped&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Order Date'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Renewal Date'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Number of Days'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;January 29&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;31 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;January 30 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;31 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;January 31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;31 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;February 1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;28 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;February 2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;28 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;February 3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;28 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Suspension==&lt;br /&gt;
The Next Due Date for the service controls the date of service suspension. When the cron job executes the daily automation tasks, the system:&lt;br /&gt;
* Analyzes he Next Due Date of all Active and Pending services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future in the Suspension Days setting.&lt;br /&gt;
* Determines whether Automated Suspension is enabled in [[Automation Settings]].&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#premodulesuspend PreModuleSuspend] Action Hook point if the above items evaluate to true.&lt;br /&gt;
* Suspends the services.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermodulesuspend AfterModuleSuspend] Action Hook point if the module returns a success response.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermodulesuspendfailed AfterModuleSuspendFailed] Action Hook point If the module returns a failed response.&lt;br /&gt;
&lt;br /&gt;
==Unsuspension==&lt;br /&gt;
When payment is made against an invoice for a service with the Suspended status, the system can automatically unsuspend the service. In addition to the actions in the [[#Payments|Payments]] section, the system:&lt;br /&gt;
&lt;br /&gt;
* Associates the invoice with a service in Suspended status.&lt;br /&gt;
* Enables the Enable Unsuspension option in [[Automation Settings]].&lt;br /&gt;
* Applies a suspension reason of &amp;quot;Overdue on Payment&amp;quot; to the service.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#premoduleunsuspend PreModuleUnsuspend] Action Hook point if the points above evaluate to true.&lt;br /&gt;
* Unsuspends the service.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleunsuspend  AfterModuleUnsuspend] Action Hook point if the module returns a success response.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleunsuspendfailed AfterModuleUnsuspendFailed] Action Hook point if the module returns a failed response.&lt;br /&gt;
&lt;br /&gt;
===Continuous Invoice Generation===&lt;br /&gt;
When you use it in conjunction with [[Invoicing_Setup#Continuous_Invoice_Generation|continuous invoice generation]], paying a recent invoice while leaving an older invoice unpaid will keep the service suspended. The exception is if the payment were to increment the Next Due Date forward to a date at which the service was no longer within the Suspension date range. In that case, the service would be unsuspended.&lt;br /&gt;
&lt;br /&gt;
==Termination==&lt;br /&gt;
The Next Due Date of the service controls the date when the system terminates services. When the cron job executes the daily automation tasks, the system:&lt;br /&gt;
* Analyzes the Next Due Date of all Active, Suspended and Pending services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future for the Termination Days setting.&lt;br /&gt;
* Determines whether you enabled Automated Termination in [[Automation Settings]].&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#premoduleterminate PreModuleTerminate] Action Hook point if the above points evaluate to true.&lt;br /&gt;
* Terminates the services.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleterminate AfterModuleTerminate] Action Hook point if the module returns a success response.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleterminatefailed AfterModuleTerminateFailed] Action Hook point if the module returns a failure response.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Billing_Logic&amp;diff=30576</id>
		<title>Billing Logic</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Billing_Logic&amp;diff=30576"/>
				<updated>2021-08-10T12:59:49Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Billing Cycles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Having an understanding of WHMCS's billing and invoicing logic, core elements of the software, will enable years of smooth and trouble-free operation.&lt;br /&gt;
&lt;br /&gt;
==Ordering==&lt;br /&gt;
When a new visitor places an order, the system creates several new records, which contain the various pieces of information on the order form:&lt;br /&gt;
* A client record, which stores the customer's contact details and payment preferences.&lt;br /&gt;
* The service and domain record(s), which contain the details of the service the client selected on the order form.&lt;br /&gt;
* An invoice record, which records the amount to pay, when it is due, and how to make payment.&lt;br /&gt;
* An order record, which ties all of the above together and records the fraud report details (if you enable them). The order is a static record which reflects the prices and items at the time of ordering. The order won't reflect subsequent changes.&lt;br /&gt;
&lt;br /&gt;
==Invoicing==&lt;br /&gt;
===Initial Invoice===&lt;br /&gt;
When an initial order creates an invoice, the default behavior is that the invoice is due on the day of ordering. The exception to this is when you use the [[Ordering_Tab#Order_Days_Grace|Order Grace Days setting]], in which case the system will set the invoice due date &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt; days into the future.&lt;br /&gt;
&lt;br /&gt;
Upon payment of the initial invoice, the system checks the associated products to determine whether to take action automatically, based upon the [[Module_Settings_.28aka_Provisioning.29|Module Settings]]. This could be one of the following actions:&lt;br /&gt;
* Automatically set up the product as soon as a client places an order.&lt;br /&gt;
* Automatically set up the product as soon as you receive the first payment.&lt;br /&gt;
* Automatically set up the product when you manually accept a pending order.&lt;br /&gt;
* Do not automatically set up this product.&lt;br /&gt;
The system then increments the service's Next Due Date value forward one billing cycle (for example, 1 month, 3 months, 6 months, 1 year, 2 years, or 3 years).&lt;br /&gt;
&lt;br /&gt;
===Renewal Invoices===&lt;br /&gt;
The Next Due Date of the service depends on the date at which the next payment is due. When the cron job executes the daily automation tasks, the system:&lt;br /&gt;
&lt;br /&gt;
* Analyzes the Next Due Date of all Active, Pending and Suspended services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future, based on the Invoice Generation setting.&lt;br /&gt;
* Ensures no invoice item exists for the service on the next due date.&lt;br /&gt;
* Generates a new invoice if the system evaluates the above points as true.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreation InvoiceCreation] Action Hook point.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreationpreemail InvoiceCreationPreEmail] Action Hook point.&lt;br /&gt;
* Sends the Invoice Created email to the client.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreated InvoiceCreated] Action Hook point.&lt;br /&gt;
* Increments the Next Invoice Date of the service by one billing cycle.&lt;br /&gt;
&lt;br /&gt;
In this way, WHMCS will never generate two invoices for a given product, service, or domain with the same due date, even if you have cancelled or deleted the original invoice.&lt;br /&gt;
&lt;br /&gt;
As the Next Due Date is incremented forward based upon the previous value, this means paying an invoice after the due date will not change the client's renewal date to reflect the date of payment. A service always invoices for a contiguous period without gaps. This prevents a situation in which a customer might hope to avoid paying for a service by intentionally paying late.&lt;br /&gt;
&lt;br /&gt;
===Continuous Invoice Generation===&lt;br /&gt;
When you enable the [[Invoicing_Setup#Continuous_Invoice_Generation|Continuous Invoice Generation]] option in the general settings, it alters the invoice generation logic so that the system creates renewal invoices even if the previous one is unpaid.&lt;br /&gt;
&lt;br /&gt;
Checking a hidden field in the service record, Next Invoice Date, enables this. The Next Invoice Date field maintains a separate record of the due date for next invoice to generate. The Next Due Date value determines the next invoice to be paid.&lt;br /&gt;
&lt;br /&gt;
In this mode, when the cron job executes the daily automation tasks, it:&lt;br /&gt;
* Analyzes the Next Invoice Date of all Active, Pending and Suspended services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future, based on the Invoice Generation setting.&lt;br /&gt;
* Ensures no invoice item exists for the service on the next invoice date.&lt;br /&gt;
* Generates a new invoice if the system evaluates the above points as true.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreation InvoiceCreation] Action Hook point.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreationpreemail InvoiceCreationPreEmail] Action Hook point.&lt;br /&gt;
* Sends the Invoice Created email to the client.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicecreated InvoiceCreated] Action Hook point.&lt;br /&gt;
* Increments the Next Invoice Date of the service by one billing cycle.&lt;br /&gt;
&lt;br /&gt;
In this way, WHMCS maintains a separate record of which invoice to generate and which payment is due.&lt;br /&gt;
&lt;br /&gt;
==Payments==&lt;br /&gt;
A transaction that fully pays the balance on an invoice, reducing it to &amp;lt;tt&amp;gt;0.00&amp;lt;/tt&amp;gt; and marking it paid, triggers automation on payment. This means that editing an invoice and changing the status to Paid will ''not'' trigger automation. Upon adding payment to an invoice for a product, service, or domain, the system:&lt;br /&gt;
* Enters a transaction into the database.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#addtransaction AddTransaction] Action Hook point.&lt;br /&gt;
* Subtracts the transaction amount from the invoice balance.&lt;br /&gt;
* Marks the invoice as paid if the invoice balance is now 0.&lt;br /&gt;
* Changes the invoice status to Paid.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicepaidpreemail InvoicePaidPreEmail] Action Hook point.&lt;br /&gt;
* Sends a payment confirmation email to the client.&lt;br /&gt;
* Increments the Next Due Date of the associated service or domain by one billing cycle.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicepaid InvoicePaid] Action Hook point.&lt;br /&gt;
&lt;br /&gt;
===Overpayments===&lt;br /&gt;
If a transaction includes an amount greater than the balance of the invoice, the system:&lt;br /&gt;
* Records the entire transaction against the invoice, making the balance negative.&lt;br /&gt;
* Marks the invoice as paid.&lt;br /&gt;
* Credits the difference between the balance and the transaction amount to the client's account.&lt;br /&gt;
* Changes the credit description format to ''Invoice # Overpayment''.&lt;br /&gt;
&lt;br /&gt;
Sometimes, fixed payments services (such as PayPal Subscriptions and 2Checkout Recurring Payments) can send a payment when no payment is due. In these situations, the system:&lt;br /&gt;
&lt;br /&gt;
* Records the entire transaction against the invoice that originally created the billing agreement, making the balance negative.&lt;br /&gt;
* Credits the full transaction amount to the client's account.&lt;br /&gt;
* Changes the credit description format to ''Invoice # Overpayment''.&lt;br /&gt;
&lt;br /&gt;
===Refunds===&lt;br /&gt;
You can issue refunds on transactions for invoices via the Refunds tab. When a you initiate a refund, the system:&lt;br /&gt;
* Performs the selected refund action, which could be either of the following actions:&lt;br /&gt;
** It sends a refund command to the payment gateway (if it supports it).&lt;br /&gt;
** It adds a credit to the client's account with the description ''Credit from Refund of Invoice ID #''.&lt;br /&gt;
* Records a negative transaction against the invoice.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#addtransaction AddTransaction Action Hook] point.&lt;br /&gt;
* Increases the invoice's balance by the refunded amount.&lt;br /&gt;
* Changes the invoice's status to Refunded if system refunded the full balance.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/invoices-and-quotes/#invoicerefunded InvoiceRefunded] Action Hook point.&lt;br /&gt;
* Sends the Invoice Refund Confirmation email to the client.&lt;br /&gt;
&lt;br /&gt;
If the refunded transaction resulted in a credit to the client's account, you must choose how to handle the credit:&lt;br /&gt;
* Remove the refunded amount from the credit balance.&lt;br /&gt;
* Do not change the credit.&lt;br /&gt;
&lt;br /&gt;
===Payment Reversals===&lt;br /&gt;
When issuing a [[#Refunds|refund]], there is also the option to reverse the payment. This is useful when you want to reverse the automated actions that the payment triggered, typically in the event of a payment dispute or chargeback.&lt;br /&gt;
&lt;br /&gt;
The actions that the system takes when reversing a payment are context sensitive and depend upon your payment reversal settings. For an in-depth discussion of this feature, refer to the [[Payment Reversals]] page.&lt;br /&gt;
&lt;br /&gt;
===Billing Cycles===&lt;br /&gt;
A billing cycle is a calendar period, so &amp;quot;1 month&amp;quot; is not a consistent period of days. When you agree to bill by the month, you are charging the same amount of money for different amounts of service. WHMCS uses the PHP date function's computation to determine the next due date. It adds a month and returns the date, which becomes the Next Due Date.&lt;br /&gt;
&lt;br /&gt;
The following billing cycles are available for Products or Services and Product Addons:&lt;br /&gt;
&lt;br /&gt;
* One Time&lt;br /&gt;
* Monthly&lt;br /&gt;
* Quarterly&lt;br /&gt;
* Semi-Annually&lt;br /&gt;
* Anually&lt;br /&gt;
* Biennially&lt;br /&gt;
* Triennially&lt;br /&gt;
&lt;br /&gt;
====February====&lt;br /&gt;
The shorter length of February can cause some unique behaviour that does not happen for the other 11 months of a year:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;table table-striped&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Order Date'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Renewal Date'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Number of Days'''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;January 29&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;31 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;January 30 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;31 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;January 31&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;31 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;February 1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;28 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;February 2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;28 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;February 3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;March 3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;28 days&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Suspension==&lt;br /&gt;
The Next Due Date for the service controls the date of service suspension. When the cron job executes the daily automation tasks, the system:&lt;br /&gt;
* Analyzes he Next Due Date of all Active and Pending services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future in the Suspension Days setting.&lt;br /&gt;
* Determines whether Automated Suspension is enabled in [[Automation Settings]].&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#premodulesuspend PreModuleSuspend] Action Hook point if the above items evaluate to true.&lt;br /&gt;
* Suspends the services.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermodulesuspend AfterModuleSuspend] Action Hook point if the module returns a success response.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermodulesuspendfailed AfterModuleSuspendFailed] Action Hook point If the module returns a failed response.&lt;br /&gt;
&lt;br /&gt;
==Unsuspension==&lt;br /&gt;
When payment is made against an invoice for a service with the Suspended status, the system can automatically unsuspend the service. In addition to the actions in the [[#Payments|Payments]] section, the system:&lt;br /&gt;
&lt;br /&gt;
* Associates the invoice with a service in Suspended status.&lt;br /&gt;
* Enables the Enable Unsuspension option in [[Automation Settings]].&lt;br /&gt;
* Applies a suspension reason of &amp;quot;Overdue on Payment&amp;quot; to the service.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#premoduleunsuspend PreModuleUnsuspend] Action Hook point if the points above evaluate to true.&lt;br /&gt;
* Unsuspends the service.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleunsuspend  AfterModuleUnsuspend] Action Hook point if the module returns a success response.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleunsuspendfailed AfterModuleUnsuspendFailed] Action Hook point if the module returns a failed response.&lt;br /&gt;
&lt;br /&gt;
===Continuous Invoice Generation===&lt;br /&gt;
When you use it in conjunction with [[Invoicing_Setup#Continuous_Invoice_Generation|continuous invoice generation]], paying a recent invoice while leaving an older invoice unpaid will keep the service suspended. The exception is if the payment were to increment the Next Due Date forward to a date at which the service was no longer within the Suspension date range. In that case, the service would be unsuspended.&lt;br /&gt;
&lt;br /&gt;
==Termination==&lt;br /&gt;
The Next Due Date of the service controls the date when the system terminates services. When the cron job executes the daily automation tasks, the system:&lt;br /&gt;
* Analyzes the Next Due Date of all Active, Suspended and Pending services.&lt;br /&gt;
* Determines whether the date is equal to or less than the number of days in the future for the Termination Days setting.&lt;br /&gt;
* Determines whether you enabled Automated Termination in [[Automation Settings]].&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#premoduleterminate PreModuleTerminate] Action Hook point if the above points evaluate to true.&lt;br /&gt;
* Terminates the services.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleterminate AfterModuleTerminate] Action Hook point if the module returns a success response.&lt;br /&gt;
* Triggers the [https://developers.whmcs.com/hooks-reference/module/#aftermoduleterminatefailed AfterModuleTerminateFailed] Action Hook point if the module returns a failure response.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Invoicing_Setup&amp;diff=30559</id>
		<title>Invoicing Setup</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Invoicing_Setup&amp;diff=30559"/>
				<updated>2021-07-25T19:23:48Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Setting the Starting Number==&lt;br /&gt;
&lt;br /&gt;
WHMCS allows you to set the next invoice number that it will generate. This is useful for if you want to start invoicing at a number other than 1 or start invoices for a new year from a new number. You do this as follows:&lt;br /&gt;
&lt;br /&gt;
*Go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoices'''.&lt;br /&gt;
*Enter the next number to assign in '''Invoice Starting #'''.&lt;br /&gt;
*Click Save.&lt;br /&gt;
&lt;br /&gt;
The value will then disappear from the field but the system will assign that number to the next invoice.&lt;br /&gt;
&lt;br /&gt;
==Automatic Invoice Generation==&lt;br /&gt;
&lt;br /&gt;
WHMCS automatically generates invoices for recurring products and services in advance of the due date.&lt;br /&gt;
&lt;br /&gt;
You can configure exactly how far in advance to generate invoices in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings &amp;gt; Billing Settings'''. By default, this is 14 days.&lt;br /&gt;
&lt;br /&gt;
You can also use '''Advanced Settings''' to configure the number of days in advance to generate invoices on a per billing cycle basis.&lt;br /&gt;
&lt;br /&gt;
The cron job performs the generation each day, so it's important to configure [[Cron Tasks]].&lt;br /&gt;
&lt;br /&gt;
==Invoice Reminders &amp;amp; Notices==&lt;br /&gt;
&lt;br /&gt;
WHMCS allows you to send:&lt;br /&gt;
&lt;br /&gt;
* A maxmimum of one reminder prior to the invoice reaching the due date.&lt;br /&gt;
* Up to three overdue reminders once the invoice has passed the due date.&lt;br /&gt;
&lt;br /&gt;
You can configure when you would like these notices go out in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings &amp;gt; Billing Settings'''.&lt;br /&gt;
&lt;br /&gt;
==Group Similar Line Items==&lt;br /&gt;
By enabling this option in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoices''', the system will automatically combine any identical line items into one summarized quantity format. For example:&lt;br /&gt;
&lt;br /&gt;
 Monthly Lease $15.95&lt;br /&gt;
 Monthly Lease $15.95&lt;br /&gt;
 Monthly Lease $15.95&lt;br /&gt;
&lt;br /&gt;
becomes&lt;br /&gt;
&lt;br /&gt;
 3 x Monthly Lease @ $15.95 $47.85&lt;br /&gt;
&lt;br /&gt;
Only the client (printable) invoice uses this format. The admin area invoice will still display each item on an individual line.&lt;br /&gt;
&lt;br /&gt;
==Automatic Grouping of Items==&lt;br /&gt;
&lt;br /&gt;
WHMCS automatically groups products, services, addons and domains into a single invoice if they are due on the same date with the same payment method and the same person.&lt;br /&gt;
&lt;br /&gt;
By doing this, it means the customer only receives a single invoice and only needs to make a single payment. This, then, reduces your transaction fees.&lt;br /&gt;
&lt;br /&gt;
If you have a client for whom you do not wish this grouping to occur, you can disable it with '''Separate Invoices''' either in a clients profile or in client groups.&lt;br /&gt;
&lt;br /&gt;
==Continuous Invoice Generation==&lt;br /&gt;
&lt;br /&gt;
'''Continuous Invoice Generation''' refers to whether the system creates invoices for unpaid items. For example:&lt;br /&gt;
&lt;br /&gt;
Consider a hosting account for which the customer pays monthly. The user places their order in January. They receive an invoice and they pay their invoice. In the following month, the user gets their next invoice and they pay that. Then, in March, the user receives their invoice but they don't pay it because they no longer wish to use the account or simply because they miss the emails about it. If you have disabled continuous invoice generation, the user would not receive any further invoices until they paid the March invoice. However, if you enable continuous invoicing, the user would receive invoices every month until termination, regardless of whether they paid for the item.&lt;br /&gt;
&lt;br /&gt;
When you enable '''Continuous Invoice Generation''', any product that is ''Active'' or ''Suspended'' will continue to generate invoices regardless of the status of its previous invoice(s). ''Pending'', ''Completed'', ''Cancelled'', or ''Terminated'' services will '''not''' generate invoices.&lt;br /&gt;
&lt;br /&gt;
===Enabling Continuous Invoicing===&lt;br /&gt;
&lt;br /&gt;
To enable this feature, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoicing''' and check the checkbox next to this setting. After enabling this option, if there are users who are due invoices for months that you haven't yet invoiced, the system will generate one invoice on each cron run for the user for the following days after enabling this.&lt;br /&gt;
&lt;br /&gt;
==Proforma Invoicing/Sequential Invoice Numbering==&lt;br /&gt;
&lt;br /&gt;
This feature is primarily for EU-based companies where, for accounting reasons, it is sometimes necessary to ensure paid invoice numbers are sequential. Of course, anyone can use this feature in WHMCS regardless of location.&lt;br /&gt;
&lt;br /&gt;
===Enabling Sequential Invoice Numbering===&lt;br /&gt;
[[File:Sequential_paid_invoice_numbering_1.png|thumb|Configuring Sequential Invoice Numbering]]&lt;br /&gt;
&lt;br /&gt;
To enable this feature:&lt;br /&gt;
&lt;br /&gt;
#Go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payments &amp;gt; Tax Configuration'''.&lt;br /&gt;
#On '''General Settings''', enable '''Tax Support'''.&lt;br /&gt;
#Click '''VAT Settings'''.&lt;br /&gt;
#Enable '''Proforma Invoicing/Sequential Paid Invoice Numbering'''.&lt;br /&gt;
#In '''Sequential Invoice Number Format''', below, specify the format you want to use for the numbering. You can also include letters (for example, include your company's initials and the year to differentiate invoices for each year to create &amp;lt;tt&amp;gt;WHMCS2007-{NUMBER}&amp;lt;/tt&amp;gt;). WHMCS replaces &amp;lt;tt&amp;gt;{NUMBER}&amp;lt;/tt&amp;gt; placeholder with that invoice's number.&lt;br /&gt;
#If desired, update the value for '''Next Paid Invoice Number'''. This allows you to set the next number to assign to an invoice. Each time a customer pays an invoice, the number increases by 1. You may want to alter the number here if, for example, you remove an invoice or at the beginning of a new year, to start at 1 again.&lt;br /&gt;
#If desired, update the value for '''Auto Reset Numbering'''. This determines when WHMCS will automatically reset the '''Next Paid Invoice Number''' to use for newly-paid invoices. You can set this to ''Never'', ''Monthly'', or ''Annually''.&lt;br /&gt;
#If desired, enable '''Set Invoice Date on Payment''' to have WHMCS change the due date of an invoice to the payment date.&lt;br /&gt;
&lt;br /&gt;
Sequential invoice numbering is now enabled. Each time a customer pays an invoice, the system will apply the next number in the sequence.&lt;br /&gt;
&lt;br /&gt;
===Proforma Invoicing===&lt;br /&gt;
&lt;br /&gt;
Generally, you will use the sequential numbering in conjunction with proforma invoicing. Invoices will display ''Proforma invoice'' while in unpaid status and ''Invoice'' once a customer pays. You can enable this under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoices &amp;gt; Enable Proforma Invoicing'''.&lt;br /&gt;
&lt;br /&gt;
==Custom Invoice Numbering Format==&lt;br /&gt;
&lt;br /&gt;
Invoices in WHMCS are automatically assigned a numerical identifier known as the '''Invoice Number''' when they are created. &lt;br /&gt;
&lt;br /&gt;
The invoice number can be customised in a variety of different ways using text or numerical sequences to meet your accounting requirements. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;ABC-123&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;01-01-2020~456&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;IND/789&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;ANYTEXT-2020-123&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For detailed instructions on how to configure these custom invoice number formats, see the help article on [https://help.whmcs.com/m/payments/l/1197977-configuring-a-custom-invoice-number-format Configuring a Custom Invoice Number Format].&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Invoicing_Setup&amp;diff=30558</id>
		<title>Invoicing Setup</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Invoicing_Setup&amp;diff=30558"/>
				<updated>2021-07-25T19:23:15Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Setting the Starting Number==&lt;br /&gt;
&lt;br /&gt;
WHMCS allows you to set the next invoice number that it will generate. This is useful for if you want to start invoicing at a number other than 1 or start invoices for a new year from a new number. You do this as follows:&lt;br /&gt;
&lt;br /&gt;
*Go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoices'''.&lt;br /&gt;
*Enter the next number to assign in '''Invoice Starting #'''.&lt;br /&gt;
*Click Save.&lt;br /&gt;
&lt;br /&gt;
The value will then disappear from the field but the system will assign that number to the next invoice.&lt;br /&gt;
&lt;br /&gt;
==Automatic Invoice Generation==&lt;br /&gt;
&lt;br /&gt;
WHMCS automatically generates invoices for recurring products and services in advance of the due date.&lt;br /&gt;
&lt;br /&gt;
You can configure exactly how far in advance to generate invoices in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings &amp;gt; Billing Settings'''. By default, this is 14 days.&lt;br /&gt;
&lt;br /&gt;
You can also use '''Advanced Settings''' to configure the number of days in advance to generate invoices on a per billing cycle basis.&lt;br /&gt;
&lt;br /&gt;
The cron job performs the generation each day, so it's important to configure [[Cron Tasks]].&lt;br /&gt;
&lt;br /&gt;
==Invoice Reminders &amp;amp; Notices==&lt;br /&gt;
&lt;br /&gt;
WHMCS allows you to send:&lt;br /&gt;
&lt;br /&gt;
* A maxmimum of one reminder prior to the invoice reaching the due date.&lt;br /&gt;
* Up to three overdue reminders once the invoice has passed the due date.&lt;br /&gt;
&lt;br /&gt;
You can configure when you would like these notices go out in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings &amp;gt; Billing Settings'''.&lt;br /&gt;
&lt;br /&gt;
==Group Similar Line Items==&lt;br /&gt;
By enabling this option in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoices''', the system will automatically combine any identical line items into one summarized quantity format. For example:&lt;br /&gt;
&lt;br /&gt;
 Monthly Lease $15.95&lt;br /&gt;
 Monthly Lease $15.95&lt;br /&gt;
 Monthly Lease $15.95&lt;br /&gt;
&lt;br /&gt;
becomes&lt;br /&gt;
&lt;br /&gt;
 3 x Monthly Lease @ $15.95 $47.85&lt;br /&gt;
&lt;br /&gt;
Only the client (printable) invoice uses this format. The admin area invoice will still display each item on an individual line.&lt;br /&gt;
&lt;br /&gt;
==Automatic Grouping of Items==&lt;br /&gt;
&lt;br /&gt;
WHMCS automatically groups products, services, addons and domains into a single invoice if they are due on the same date with the same payment method and the same person.&lt;br /&gt;
&lt;br /&gt;
By doing this, it means the customer only receives a single invoice and only needs to make a single payment. This, then, reduces your transaction fees.&lt;br /&gt;
&lt;br /&gt;
If you have a client for whom you do not wish this grouping to occur, you can disable it with '''Separate Invoices''' either in a clients profile or in client groups.&lt;br /&gt;
&lt;br /&gt;
==Continuous Invoice Generation==&lt;br /&gt;
&lt;br /&gt;
'''Continuous Invoice Generation''' refers to whether the system creates invoices for unpaid items. For example:&lt;br /&gt;
&lt;br /&gt;
Consider a hosting account for which the customer pays monthly. The user places their order in January. They receive an invoice and they pay their invoice. In the following month, the user gets their next invoice and they pay that. Then, in March, the user receives their invoice but they don't pay it because they no longer wish to use the account or simply because they miss the emails about it. If you have disabled continuous invoice generation, the user would not receive any further invoices until they paid the March invoice. However, if you enable continuous invoicing, the user would receive invoices every month until termination, regardless of whether they paid for the item.&lt;br /&gt;
&lt;br /&gt;
When you enable '''Continuous Invoice Generation''', any product that is ''Active'' or ''Suspended'' will continue to generate invoices regardless of the status of its previous invoice(s). ''Pending'', ''Completed'', ''Cancelled'', or ''Terminated'' services will '''not''' generate invoices.&lt;br /&gt;
&lt;br /&gt;
===Enabling Continuous Invoicing===&lt;br /&gt;
&lt;br /&gt;
To enable this feature, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoicing''' and check the checkbox next to this setting. After enabling this option, if there are users who are due invoices for months that you haven't yet invoiced, the system will generate one invoice on each cron run for the user for the following days after enabling this.&lt;br /&gt;
&lt;br /&gt;
==Proforma Invoicing/Sequential Invoice Numbering==&lt;br /&gt;
&lt;br /&gt;
This feature is primarily for EU-based companies where, for accounting reasons, it is sometimes necessary to ensure paid invoice numbers are sequential. Of course, anyone can use this feature in WHMCS regardless of location.&lt;br /&gt;
&lt;br /&gt;
===Enabling Sequential Invoice Numbering===&lt;br /&gt;
[[File:Sequential_paid_invoice_numbering_1.png|thumb|Configuring Sequential Invoice Numbering]]&lt;br /&gt;
&lt;br /&gt;
To enable this feature:&lt;br /&gt;
&lt;br /&gt;
#Go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payments &amp;gt; Tax Configuration'''.&lt;br /&gt;
#On '''General Settings''', enable '''Tax Support'''.&lt;br /&gt;
#Click '''VAT Settings'''.&lt;br /&gt;
#Enable '''Proforma Invoicing/Sequential Paid Invoice Numbering'''.&lt;br /&gt;
#In '''Sequential Invoice Number Format''', below, specify the format you want to use for the numbering. You can also include letters (for example, include your company's initials and the year to differentiate invoices for each year to create &amp;lt;tt&amp;gt;WHMCS2007-{NUMBER}&amp;lt;/tt&amp;gt;). WHMCS replaces &amp;lt;tt&amp;gt;{NUMBER}&amp;lt;/tt&amp;gt; placeholder with that invoice's number.&lt;br /&gt;
#If desired, update the value for '''Next Paid Invoice Number'''. This allows you to set the next number to assign to an invoice. Each time a customer pays an invoice, the number increases by 1. You may want to alter the number here if, for example, you remove an invoice or at the beginning of a new year, to start at 1 again.&lt;br /&gt;
#If desired, update the value for '''Auto Reset Numbering'''. This determines when WHMCS will automatically reset the '''Next Paid Invoice Number''' to use for newly-paid invoices. You can set this to ''Never'', ''Monthly'', or ''Annually''.&lt;br /&gt;
#If desired, enable '''Set Invoice Date on Payment''' to have WHMCS change the due date of an invoice to the payment date.&lt;br /&gt;
&lt;br /&gt;
Sequential invoice numbering is now enabled. Each time a customer pays an invoice, the system will apply the next number in the sequence.&lt;br /&gt;
&lt;br /&gt;
===Proforma Invoicing===&lt;br /&gt;
&lt;br /&gt;
Generally, you will use the sequential numbering in conjunction with proforma invoicing. Invoices will display ''Proforma invoice'' while in unpaid status and ''Invoice'' once a customer pays. You can enable this under '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Invoices &amp;gt; Enable Proforma Invoicing'''.&lt;br /&gt;
&lt;br /&gt;
===Custom Invoice Numbering Format===&lt;br /&gt;
&lt;br /&gt;
Invoices in WHMCS are automatically assigned a numerical identifier known as the '''Invoice Number''' when they are created. &lt;br /&gt;
&lt;br /&gt;
The invoice number can be customised in a variety of different ways using text or numerical sequences to meet your accounting requirements. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;ABC-123&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;01-01-2020~456&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;IND/789&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;ANYTEXT-2020-123&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For detailed instructions on how to configure these custom invoice number formats, see the help article on [https://help.whmcs.com/m/payments/l/1197977-configuring-a-custom-invoice-number-format Configuring a Custom Invoice Number Format].&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Addons_and_Configurable_Options&amp;diff=30494</id>
		<title>Addons and Configurable Options</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Addons_and_Configurable_Options&amp;diff=30494"/>
				<updated>2021-07-12T04:13:09Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Slider */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===What are Addons and Configurable Options?===&lt;br /&gt;
Configurable Options on products allow you to give your clients variables which alter the price of that product. [[Product Addons]] let you offer additional items which the client has a yes/no choice over and are billed separately from the product. In this article, we will look at when you would use them and how.&lt;br /&gt;
&lt;br /&gt;
*Configurable options are defined in groups&lt;br /&gt;
*Groups of options can then be applied to one or more products&lt;br /&gt;
&lt;br /&gt;
===When should I use configurable options instead of addons?===&lt;br /&gt;
&lt;br /&gt;
*If you want to offer a choice of options for a single thing - for example Disk Space, Operating System, Locations, etc...&lt;br /&gt;
*If you want the total amount to be billed as a single item and not separately&lt;br /&gt;
*When the billing cycle of the addon must match the billing cycle of the product&lt;br /&gt;
&lt;br /&gt;
===When should I use addons instead of configurable options?===&lt;br /&gt;
&lt;br /&gt;
*If the item is a one-off service&lt;br /&gt;
*If it can be selected independently of other items&lt;br /&gt;
*If it should be billed on its own cycle - eg. an SSL certificate might be billed annually regardless of the package cycle&lt;br /&gt;
&lt;br /&gt;
*Not subject to prorata at a product level or client-wide signup anniversary prorata.&lt;br /&gt;
&lt;br /&gt;
===Product Addons billing cycle workflow===&lt;br /&gt;
&lt;br /&gt;
If the Product Addon has a billing cycle configured in the pricing matrix which matches the parent product in the cart, then matching billing cycle will be used automatically. If a product addon is ordered at a later date via the client area ('''Services &amp;gt; View Available Addons''') it can have a different billing cycle (determined automatically by the shortest configured billing cycle) and next due date from the parent product.&lt;br /&gt;
&lt;br /&gt;
For some addons such as SSL certificates, you may wish to ensure this is billed annually regardless of the parent product billing cycle, to do this you should only specify annual pricing for addon in the addon pricing matrix.&lt;br /&gt;
&lt;br /&gt;
To set annual pricing on the addon:&lt;br /&gt;
&lt;br /&gt;
#Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services &amp;gt; Product Addons'''.&lt;br /&gt;
#Click '''Edit''' next to the addon.&lt;br /&gt;
#Click '''Pricing'''.&lt;br /&gt;
#Enable the annual pricing and set the desired selling price.&lt;br /&gt;
This will ensure the addon is always billed annually even if the parent product billing cycle is different.&lt;br /&gt;
&lt;br /&gt;
==Configurable Options==&lt;br /&gt;
===Setting up a New Group===&lt;br /&gt;
&lt;br /&gt;
#Go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services &amp;gt; Configurable Options &amp;gt; Create a New Group'''.&lt;br /&gt;
#Enter a name and description (for admin reference only) and choose the products it applies to (you can also do this later).&lt;br /&gt;
#Click '''Save Changes'''. The page will reload showing the group details and allowing you to move on to managing options.&lt;br /&gt;
&lt;br /&gt;
===Managing Options===&lt;br /&gt;
&lt;br /&gt;
To manage options:&lt;br /&gt;
&lt;br /&gt;
#Go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Products/Services &amp;gt; Configurable Options''' and click the edit icon next to the option group you want to modify. At the top of the page, you can edit the name, description, and assigned products.&lt;br /&gt;
#To add a new configurable option, click '''Add New Configurable Option'''.&lt;br /&gt;
#In the new window, enter an option name and choose a type. You can select from the following types:&lt;br /&gt;
#*'''Dropdown''' — Show a menu of options on the order form.&lt;br /&gt;
#*'''Radio''' — Show a selection of radio button options on the order form.&lt;br /&gt;
#*'''Yes/No''' — Show a checkbox on the order form that allows the client to turn the option on or off.&lt;br /&gt;
#*'''Quantity''' — Show an input field on the order form that allows the user to enter an item quantity.&lt;br /&gt;
#Enter the first sub-option value you want to offer for this option (you can set the price after saving).&lt;br /&gt;
#Click '''Save Changes'''. The page will refresh with the sub-option showing pricing fields.&lt;br /&gt;
#Enter pricing for all the cycles that the product has enabled. &lt;br /&gt;
#*If you selected '''Yes/No''' or '''Quantity''' for the type, then only one sub-option is necessary.&lt;br /&gt;
#*If you selected '''Dropdown''' or '''Radio''' for the type, use '''Add Option''' at the bottom of the page to add multiple sub-options.&lt;br /&gt;
#After every addition, click '''Save Changes''' to reload the page and set the new sub-options pricing.&lt;br /&gt;
#After you finish configuring your options, click '''Close Window'''. This will refresh the underlying page to show the new option.&lt;br /&gt;
#Repeat this process for each option you want to add.&lt;br /&gt;
#After you set up multiple options in the group, use '''Sort Order''' to define the display order for the options.&lt;br /&gt;
#Click '''Back to Groups List''' to complete the process.&lt;br /&gt;
&lt;br /&gt;
====Option Types====&lt;br /&gt;
WHMCS offers a variety of different configurable option types, allowing for choice of the most appropriate input format:&lt;br /&gt;
&lt;br /&gt;
=====Dropdown=====&lt;br /&gt;
[[File:Co dropdown.png|right]]&lt;br /&gt;
'''Dropdown''' displays a standard combo box. This is useful when there are a large number of items to choose from that should require minimal space on the order form. &lt;br /&gt;
&lt;br /&gt;
=====Yes/No=====&lt;br /&gt;
[[File:Co yesno.png|right]]&lt;br /&gt;
'''Yes/No''' displays a checkbox for the client to select or deselect. This is useful for simple opt-in-or-opt-out questions. Both yes or no are valid values, so the form validation will accept the unchecked state even if this is a required option.&lt;br /&gt;
&lt;br /&gt;
=====Radio=====&lt;br /&gt;
[[File:Co radio.png|right]]&lt;br /&gt;
'''Radio''' displays a list of the available options alongside a radio box for the client to choose from. If there are too many options, this can look messy. In that case, we recommend using '''Dropdown''' instead.&lt;br /&gt;
&lt;br /&gt;
=====Quantity=====&lt;br /&gt;
[[File:Co quantity.png|right]]&lt;br /&gt;
'''Quantity''' displays a field that allows the client to enter a number. Specify the unit price in '''One Time/Monthly'''. The system will multiply it by the quantity that the client selected.&lt;br /&gt;
&lt;br /&gt;
When creating or editing '''Quantity''', you can set maximum and minimum vales. You may also allow clients to enter any quantity by leaving both '''Minimum''' and '''Maximum''' blank. However, you can't specify just a minimum or just a maximum value.&lt;br /&gt;
&lt;br /&gt;
=====Slider=====&lt;br /&gt;
&lt;br /&gt;
[[File:OrderFormConfigOptionsSliderNew1.png]]&lt;br /&gt;
&lt;br /&gt;
The slider provides a graphical method for clients to specify a '''Quantity'''. Note that '''Slider''' is not an option type itself. In order to use the slider, you must select the '''Quantity''' option type and supply '''both''' a minimum and maximum value. Once you have set both values, the slider will automatically appear in all order form templates (except boxes).&lt;br /&gt;
&lt;br /&gt;
===Hiding Options===&lt;br /&gt;
&lt;br /&gt;
Hiding is useful for when you want to remove an option that you no longer offer to new signups from the order forms, but don't want to lose the selections for existing customers.&lt;br /&gt;
&lt;br /&gt;
You can hide entire configurable options or just individual sub-options. Do this in the managing options screen by checking the Hidden/Hide box for an option you want to disable.&lt;br /&gt;
&lt;br /&gt;
'''Important Note:''' Once you hide an option or sub-option, admin users continue to see it for existing customers.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' As of version v5.3 and above, the &amp;quot;Starting From&amp;quot; price on cart.php in the Modern order form template doesn't include hidden configurable options. Prior to this, the price included hidden configurable options.&lt;br /&gt;
&lt;br /&gt;
===Friendly Display Names===&lt;br /&gt;
Sometimes, a module may require you to format a configurable option valu in a certain way, but this might be difficult for visitors to understand. WHMCS can display a friendly name to visitors on the order form, emails, and invoices, but still send the required machine code to the module.&lt;br /&gt;
[[File:Config option friendly.png|thumb|Config Option Friendly Names]]&lt;br /&gt;
To achieve this, use the format &amp;quot;required value|display value&amp;quot;. For example:&lt;br /&gt;
&lt;br /&gt;
*Disk Space|Your Web Quota&lt;br /&gt;
*10000MB|10 Gigabytes&lt;br /&gt;
*rbx01ssd|French Server - Solid State Drive&lt;br /&gt;
&lt;br /&gt;
===Product Addons===&lt;br /&gt;
For information about product addons, see [[Product Addons]].&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Cron_Configuration&amp;diff=30347</id>
		<title>Cron Configuration</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Cron_Configuration&amp;diff=30347"/>
				<updated>2021-06-03T04:10:21Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cron tasks must be created to automate tasks within WHMCS.&lt;br /&gt;
&lt;br /&gt;
Cron is the name given to a system daemon used to execute tasks (in the background) at designated times. WHMCS has a number of files that are required to be run on a periodic basis in this way. All these files are located in the crons directory.&lt;br /&gt;
&lt;br /&gt;
A single cron named the '''System Cron''' automates all core functions of the system including invoicing, reminders, suspensions and other daily automation tasks.&lt;br /&gt;
&lt;br /&gt;
In WHMCS 6.3.x and earlier, the system cron should be configured to run no more than '''once per day'''.&lt;br /&gt;
&lt;br /&gt;
In WHMCS 7.0 and later, the system cron should be configured to run as often as every 5 minutes or as frequently as your web hosting provider will allow (for example, every 15 minutes). The shortest time interval at which WHMCS will process cron tasks is every 5 minutes.&lt;br /&gt;
&lt;br /&gt;
==Setting Up Cron Jobs==&lt;br /&gt;
The tutorials &amp;amp; screenshots below demonstrate how to configure the WHMCS cron on the most common hosting control panels.&lt;br /&gt;
&lt;br /&gt;
The system will attempt to determine the PHP path to use for your cron command. Prior to WHMCS 8.0, this can be seen at '''Setup &amp;gt; Automation Settings'''. For WHMCS 8.0 and above, please visit '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' and click on the first badge.&lt;br /&gt;
&lt;br /&gt;
[[File:Cron-configuration-badge.png|border]]&lt;br /&gt;
&lt;br /&gt;
===cPanel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;https://www.youtube.com/watch?v=caZWco1R2kk&amp;amp;hd=1&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click on the '''Cron Job''' icon in cPanel, select the ''Once Per Five Minutes'' option from the Common Settings dropdown menu. Then paste the cron command into the Command field.&lt;br /&gt;
&lt;br /&gt;
[[File:cPCron.png|border]]&lt;br /&gt;
&lt;br /&gt;
Alternatively click the Advanced (Unix Style) button and use the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+cPanel  Cron&lt;br /&gt;
! Option&lt;br /&gt;
!   &lt;br /&gt;
! Minute&lt;br /&gt;
! Hour&lt;br /&gt;
! Day&lt;br /&gt;
! Month&lt;br /&gt;
! Weekday&lt;br /&gt;
!&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| a)&lt;br /&gt;
| &lt;br /&gt;
| */5&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| &lt;br /&gt;
| php -q /path/to/home/public_html/whmcspath/crons/cron.php&lt;br /&gt;
|-&lt;br /&gt;
| b)&lt;br /&gt;
| &lt;br /&gt;
| */5&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| &lt;br /&gt;
| wget -O &amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/crons/cron.php&amp;lt;/nowiki&amp;gt; &amp;gt;/dev/null&lt;br /&gt;
|-&lt;br /&gt;
| c)&lt;br /&gt;
| &lt;br /&gt;
| */5&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| &lt;br /&gt;
| GET &amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/crons/cron.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Direct Admin===&lt;br /&gt;
&lt;br /&gt;
The command for Direct Admin is generally the same as cPanel, however, you need to reference the full path to the php binary.&lt;br /&gt;
&lt;br /&gt;
This can be /usr/bin/php, /usr/bin/home/php or /usr/local/bin/php but this is dependent on the server setup and you should check with your Server Administrator for the full path to the php binary.&lt;br /&gt;
&lt;br /&gt;
An example command to run is:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
|-&lt;br /&gt;
| /usr/bin/php -q /home/demo_user/domains/testdomain.com/public_html/whmcspath/crons/cron.php&lt;br /&gt;
|-&lt;br /&gt;
| /usr/local/bin/php -q /home/demo_user/domains/testdomain.com/public_html/whmcspath/crons/cron.php&lt;br /&gt;
|-&lt;br /&gt;
| wget -O /dev/null &amp;lt;nowiki&amp;gt;http://domain.tld/path/to/cron.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| GET &amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/crons/cron.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:DACron.png|border]]&lt;br /&gt;
&lt;br /&gt;
===DotNetPanel===&lt;br /&gt;
&lt;br /&gt;
Navigate to the hosting space in which WHMCS is installed and click '''Scheduled Tasks''' from the Hosting Space Menu, then click ''Add Scheduled Task''.&lt;br /&gt;
&lt;br /&gt;
From the Task Type dropdown menu select the ''Check Web Site Availability'' option and enter the URL of the cron.php file into the ''URL'' field.&lt;br /&gt;
Use the ''Schedule'' options to run this task Daily and finally ensure it's active and running.&lt;br /&gt;
&lt;br /&gt;
[[Image:Wsp_cron_config.png]]&lt;br /&gt;
&lt;br /&gt;
===Windows Server===&lt;br /&gt;
&lt;br /&gt;
Depending on your server setup, you can run the cron directly from the php executable. If this is not possible, you would need to use the server browser to run the cron&lt;br /&gt;
&lt;br /&gt;
An example command to run is:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
|-&lt;br /&gt;
|C:\php\php.exe -q &amp;quot;C:\inetpub\wwwroot\whmcs7\admin\cron.php&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;c:\program files\internet explorer\iexplore.php&amp;quot; &amp;quot;&amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/cron.php&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You should then set the task to run at a certain time every day. The time is up to you.&lt;br /&gt;
&lt;br /&gt;
[[Image:windows_cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Plesk===&lt;br /&gt;
&lt;br /&gt;
Navigate to the Domain where WHMCS is hosted, and click on the Schedule Tasks option in the top-right menu.&lt;br /&gt;
&lt;br /&gt;
From the Schedule Tasks page, perform the following actions:&lt;br /&gt;
&lt;br /&gt;
# Click on the Add Task button&lt;br /&gt;
# Set &amp;quot;Task type&amp;quot; to the &amp;quot;Run PHP script&amp;quot; option&lt;br /&gt;
# Input the path to your cron.php script into the &amp;quot;Script path&amp;quot; field&lt;br /&gt;
# Select PHP 5.6 or later for the &amp;quot;Use PHP version&amp;quot; option&lt;br /&gt;
# Select the &amp;quot;Cron style&amp;quot; option from the &amp;quot;Run&amp;quot; drop-down menu&lt;br /&gt;
# Input &amp;quot;*/5 * * * *&amp;quot; into the &amp;quot;Cron style&amp;quot; field&lt;br /&gt;
# Click on the &amp;quot;OK&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Example &amp;quot;Script path&amp;quot; for Linux&lt;br /&gt;
|-&lt;br /&gt;
| /path/to/whmcs/crons/cron.php&lt;br /&gt;
|}&lt;br /&gt;
[[File:PleskLinCron.png|border]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Example &amp;quot;Script path&amp;quot; for Windows&lt;br /&gt;
|-&lt;br /&gt;
| /path/to/whmcs/crons/cron.php&lt;br /&gt;
|}&lt;br /&gt;
[[File:PleskWinCron.png|border]]&lt;br /&gt;
&lt;br /&gt;
===Helm===&lt;br /&gt;
&lt;br /&gt;
[[Image:helm3cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
===InterWorx===&lt;br /&gt;
&lt;br /&gt;
[[Image:interworx.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Linux with no control panel===&lt;br /&gt;
&lt;br /&gt;
Use the command to open the crontab editor: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$ crontab -e &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On a new line enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;*/5 * * * * php -q /path/to/home/public_html/whmcspath/crons/cron.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type &amp;lt;tt&amp;gt;:wq&amp;lt;/tt&amp;gt; and press the Enter key to save the changes to the crontab and close the editor.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Cron_Configuration&amp;diff=30346</id>
		<title>Cron Configuration</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Cron_Configuration&amp;diff=30346"/>
				<updated>2021-06-03T04:09:54Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cron tasks must be created to automate tasks within WHMCS.&lt;br /&gt;
&lt;br /&gt;
Cron is the name given to a system daemon used to execute tasks (in the background) at designated times. WHMCS has a number of files that are required to be run on a periodic basis in this way. All these files are located in the crons directory.&lt;br /&gt;
&lt;br /&gt;
A single cron named the '''System Cron''' automates all core functions of the system including invoicing, reminders, suspensions and other daily automation tasks.&lt;br /&gt;
&lt;br /&gt;
In WHMCS 6.3.x and earlier, the system cron should be configured to run no more than '''once per day'''.  In WHMCS 7.0 and later, the system cron should be configured to run as often as every 5 minutes or as frequently as your web hosting provider will allow (for example, every 15 minutes). The shortest time interval at which WHMCS will process cron tasks is every 5 minutes.&lt;br /&gt;
&lt;br /&gt;
==Setting Up Cron Jobs==&lt;br /&gt;
The tutorials &amp;amp; screenshots below demonstrate how to configure the WHMCS cron on the most common hosting control panels.&lt;br /&gt;
&lt;br /&gt;
The system will attempt to determine the PHP path to use for your cron command. Prior to WHMCS 8.0, this can be seen at '''Setup &amp;gt; Automation Settings'''. For WHMCS 8.0 and above, please visit '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' and click on the first badge.&lt;br /&gt;
&lt;br /&gt;
[[File:Cron-configuration-badge.png|border]]&lt;br /&gt;
&lt;br /&gt;
===cPanel===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;https://www.youtube.com/watch?v=caZWco1R2kk&amp;amp;hd=1&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click on the '''Cron Job''' icon in cPanel, select the ''Once Per Five Minutes'' option from the Common Settings dropdown menu. Then paste the cron command into the Command field.&lt;br /&gt;
&lt;br /&gt;
[[File:cPCron.png|border]]&lt;br /&gt;
&lt;br /&gt;
Alternatively click the Advanced (Unix Style) button and use the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+cPanel  Cron&lt;br /&gt;
! Option&lt;br /&gt;
!   &lt;br /&gt;
! Minute&lt;br /&gt;
! Hour&lt;br /&gt;
! Day&lt;br /&gt;
! Month&lt;br /&gt;
! Weekday&lt;br /&gt;
!&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| a)&lt;br /&gt;
| &lt;br /&gt;
| */5&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| &lt;br /&gt;
| php -q /path/to/home/public_html/whmcspath/crons/cron.php&lt;br /&gt;
|-&lt;br /&gt;
| b)&lt;br /&gt;
| &lt;br /&gt;
| */5&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| &lt;br /&gt;
| wget -O &amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/crons/cron.php&amp;lt;/nowiki&amp;gt; &amp;gt;/dev/null&lt;br /&gt;
|-&lt;br /&gt;
| c)&lt;br /&gt;
| &lt;br /&gt;
| */5&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| *&lt;br /&gt;
| &lt;br /&gt;
| GET &amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/crons/cron.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Direct Admin===&lt;br /&gt;
&lt;br /&gt;
The command for Direct Admin is generally the same as cPanel, however, you need to reference the full path to the php binary.&lt;br /&gt;
&lt;br /&gt;
This can be /usr/bin/php, /usr/bin/home/php or /usr/local/bin/php but this is dependent on the server setup and you should check with your Server Administrator for the full path to the php binary.&lt;br /&gt;
&lt;br /&gt;
An example command to run is:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
|-&lt;br /&gt;
| /usr/bin/php -q /home/demo_user/domains/testdomain.com/public_html/whmcspath/crons/cron.php&lt;br /&gt;
|-&lt;br /&gt;
| /usr/local/bin/php -q /home/demo_user/domains/testdomain.com/public_html/whmcspath/crons/cron.php&lt;br /&gt;
|-&lt;br /&gt;
| wget -O /dev/null &amp;lt;nowiki&amp;gt;http://domain.tld/path/to/cron.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| GET &amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/crons/cron.php&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:DACron.png|border]]&lt;br /&gt;
&lt;br /&gt;
===DotNetPanel===&lt;br /&gt;
&lt;br /&gt;
Navigate to the hosting space in which WHMCS is installed and click '''Scheduled Tasks''' from the Hosting Space Menu, then click ''Add Scheduled Task''.&lt;br /&gt;
&lt;br /&gt;
From the Task Type dropdown menu select the ''Check Web Site Availability'' option and enter the URL of the cron.php file into the ''URL'' field.&lt;br /&gt;
Use the ''Schedule'' options to run this task Daily and finally ensure it's active and running.&lt;br /&gt;
&lt;br /&gt;
[[Image:Wsp_cron_config.png]]&lt;br /&gt;
&lt;br /&gt;
===Windows Server===&lt;br /&gt;
&lt;br /&gt;
Depending on your server setup, you can run the cron directly from the php executable. If this is not possible, you would need to use the server browser to run the cron&lt;br /&gt;
&lt;br /&gt;
An example command to run is:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Command&lt;br /&gt;
|-&lt;br /&gt;
|C:\php\php.exe -q &amp;quot;C:\inetpub\wwwroot\whmcs7\admin\cron.php&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;c:\program files\internet explorer\iexplore.php&amp;quot; &amp;quot;&amp;lt;nowiki&amp;gt;http://www.yourdomain.com/whmcspath/cron.php&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You should then set the task to run at a certain time every day. The time is up to you.&lt;br /&gt;
&lt;br /&gt;
[[Image:windows_cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Plesk===&lt;br /&gt;
&lt;br /&gt;
Navigate to the Domain where WHMCS is hosted, and click on the Schedule Tasks option in the top-right menu.&lt;br /&gt;
&lt;br /&gt;
From the Schedule Tasks page, perform the following actions:&lt;br /&gt;
&lt;br /&gt;
# Click on the Add Task button&lt;br /&gt;
# Set &amp;quot;Task type&amp;quot; to the &amp;quot;Run PHP script&amp;quot; option&lt;br /&gt;
# Input the path to your cron.php script into the &amp;quot;Script path&amp;quot; field&lt;br /&gt;
# Select PHP 5.6 or later for the &amp;quot;Use PHP version&amp;quot; option&lt;br /&gt;
# Select the &amp;quot;Cron style&amp;quot; option from the &amp;quot;Run&amp;quot; drop-down menu&lt;br /&gt;
# Input &amp;quot;*/5 * * * *&amp;quot; into the &amp;quot;Cron style&amp;quot; field&lt;br /&gt;
# Click on the &amp;quot;OK&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Example &amp;quot;Script path&amp;quot; for Linux&lt;br /&gt;
|-&lt;br /&gt;
| /path/to/whmcs/crons/cron.php&lt;br /&gt;
|}&lt;br /&gt;
[[File:PleskLinCron.png|border]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
!Example &amp;quot;Script path&amp;quot; for Windows&lt;br /&gt;
|-&lt;br /&gt;
| /path/to/whmcs/crons/cron.php&lt;br /&gt;
|}&lt;br /&gt;
[[File:PleskWinCron.png|border]]&lt;br /&gt;
&lt;br /&gt;
===Helm===&lt;br /&gt;
&lt;br /&gt;
[[Image:helm3cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
===InterWorx===&lt;br /&gt;
&lt;br /&gt;
[[Image:interworx.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Linux with no control panel===&lt;br /&gt;
&lt;br /&gt;
Use the command to open the crontab editor: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$ crontab -e &amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On a new line enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;*/5 * * * * php -q /path/to/home/public_html/whmcspath/crons/cron.php&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type &amp;lt;tt&amp;gt;:wq&amp;lt;/tt&amp;gt; and press the Enter key to save the changes to the crontab and close the editor.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Products_Management&amp;diff=30330</id>
		<title>Products Management</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Products_Management&amp;diff=30330"/>
				<updated>2021-05-24T00:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Clients Self Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Adding Products/Services==&lt;br /&gt;
&lt;br /&gt;
[[File:Admin-order-form.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can place a new order in the admin area via the '''Orders &amp;gt; Add New Order''' section or the Add New Order link on any Client Summary page.&lt;br /&gt;
&lt;br /&gt;
Once on the Add New Order page, you can input the order details as follows:&lt;br /&gt;
&lt;br /&gt;
# Type in the client details to select the client, if the system didn't already preselect them.&lt;br /&gt;
# Choose the payment method to use for the order and any resulting invoice.&lt;br /&gt;
# Select a promotion code to apply to the order items (if applicable).&lt;br /&gt;
# Choose the order status. Unless this is for adding an existing service that needs no provisioning, leave it as pending so that you can review the order after payment and ensure any provisioning was successful.&lt;br /&gt;
# There will be three selected options:&lt;br /&gt;
&lt;br /&gt;
*Order Confirmation — Keep this selected if you wish to send the Order Confirmation email to the client.&lt;br /&gt;
*Generate Invoice — Keep this selected if you wish to generate an invoice for the items on the order. This is useful if you are placing an order for a new service on the client's behalf or you will to manually enter an existing service but still want to invoice them right away.&lt;br /&gt;
*Send Email — Keep this selected if you wish to send the Invoice Created email whenever the system creates an invoice.&lt;br /&gt;
&lt;br /&gt;
===Product/Service===&lt;br /&gt;
You can use this section to enter the details for each product you want to add to the order, with the &amp;quot;Add New Product&amp;quot; button at the bottom, allowing you to enter multiple products on the same order. You can select the product, enter the domain name (if there is one), choose the billing cycle, select the quantity, and enter any pricing overrides (for example, if you want to give the client a hardcoded price different than what the product normally goes for without using a promotion code).&lt;br /&gt;
&lt;br /&gt;
If the billing cycle and price override fields have not changed, the system will use the pricing from the shortest configured billing cycle.&lt;br /&gt;
&lt;br /&gt;
Use the Quantity option if you want to order multiples of a single product that doesn't require any specific configuration on the initial order (such as a domain name and configurable options). For example, if you are selling a software license using our Licensing Addon and the customer wishes to receive 10 licenses, you could use 10 for the Quantity and the system will create 10 services on their account after order submission. For products that each require a domain and specific configuration, add them one by one using the &amp;quot;Add New Product&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
===Domain Registration===&lt;br /&gt;
The &amp;quot;Domain Registration&amp;quot; section can be used to include a domain name on the order. Use the radio options to select whether this is a new registration or transfer, and enter the domain in this format: yourdomain.com&lt;br /&gt;
&lt;br /&gt;
Leave the radio option at None if this order doesn't require a domain,&lt;br /&gt;
&lt;br /&gt;
For registration, the system will prompt you for the domain name, the number of years to register it for, any applicable addons, and finally any pricing overrides for the registration and future renewal amounts. If there isn't a price override, the system uses the regular price for that TLD.&lt;br /&gt;
&lt;br /&gt;
For transfers, the system will prompt you for the same details, along with the EPP Code (also commonly called the Transfer Authorization code) from the existing registrar for the domain. During the client area ordering process, the client supplies this, and you may need to obtain it from them first if it is applicable to the domain you are trying to transfer.&lt;br /&gt;
&lt;br /&gt;
For Product Only orders, fill in the Product/Service section and leave the Domain Registration section at &amp;quot;None&amp;quot; for the only entry. For Domain Only orders, you would not enter anything into the fields in the Product/Service section (Product/Service, Domain, Billing Cycle, Quantity and Price Override) and fill in the Domain Registration section.&lt;br /&gt;
&lt;br /&gt;
==Managing a Clients Products/Services==&lt;br /&gt;
&lt;br /&gt;
You can locate products/services to manage in a number of ways:&lt;br /&gt;
&lt;br /&gt;
#Search for the Client in '''Clients &amp;gt; View/Search Clients''', and then from the '''Client Summary''' page click the ID of the product you want to manage from the list&lt;br /&gt;
#Search for the Product in '''Clients &amp;gt; List All Products/Services &amp;gt; Search/Filter''', then click the product ID or domain to be taken to the product details&lt;br /&gt;
#Using the [[Admin_Area#Search|Intelligent Search]]&lt;br /&gt;
&lt;br /&gt;
The Products/Services details page inside a clients profile allows you to view and modify all of a products settings. After making any changes, you need to click the '''Save Changes''' button to save your edits.&lt;br /&gt;
&lt;br /&gt;
===Running Module Commands===&lt;br /&gt;
&lt;br /&gt;
[[File:Module-commands.png|800px]]&lt;br /&gt;
&lt;br /&gt;
If the product/service is linked to a module, you will have a Module Commands row towards the bottom of the page. This allows you to execute any of the commands available in that module.  Modules can have custom functions but the most common ones are:&lt;br /&gt;
&lt;br /&gt;
*'''Create''' - runs the creation routine and sets the product status to active&lt;br /&gt;
*'''Suspend''' - runs the suspension routine and sets the product status to suspended. You will be prompted to enter a suspension reason, leave it blank if the client has an unpaid invoice and you want the account automatically unsuspended when paid.&lt;br /&gt;
*'''Unsuspend''' - runs the unsuspension routine and sets the product status back to active&lt;br /&gt;
*'''Terminate''' - runs the termination routine and sets the product status to terminated&lt;br /&gt;
*'''Change Package''' - runs the upgrade/downgrade routine for the selected product&lt;br /&gt;
*'''Change Password''' - runs the password modification routine for the last saved password value&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
&lt;br /&gt;
*Product addons allow you to bill for additional items related to the main product but on independent billing cycles from the product (unlike Configurable Options, which have to bill on the same cycle).&lt;br /&gt;
*Addons can be preconfigured in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Product Addons]]''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Product Addons''', but you can also create custom addons for specific clients which aren't predefined for flexibility.&lt;br /&gt;
*Preconfigured addons can be ordered by clients from the client area product details page.&lt;br /&gt;
&lt;br /&gt;
====Managing Addons====&lt;br /&gt;
&lt;br /&gt;
[[File:Managing-addon.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can manage addons for individual purchased products in the client profile.&lt;br /&gt;
* To view the list of addons for a product, select the parent product from the menu.&lt;br /&gt;
* To edit an addon, click the edit icon for that addon in the '''Addons''' list.&lt;br /&gt;
&lt;br /&gt;
====Adding Addons to Users====&lt;br /&gt;
&lt;br /&gt;
[[File:New-addon-button.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*To add a new addon, click '''Products/Services''' in Clients Profile.&lt;br /&gt;
*Next click on the link '''Click here to Manage''' beside the Addons label, and then click '''Add New Addon''' button.&lt;br /&gt;
*If using a predefined addon, simply choose it from the dropdown and leave the name, price and billing cycle fields empty as they will all be automatically set.&lt;br /&gt;
*Alternatively, if adding a custom addon specific to this client, leave the Predefined Addon set to None and enter a custom name, price and cycle.&lt;br /&gt;
*If you would like to invoice for the new addon immediately then you don't need to do anything as that will happen by default, or alternatively if you don't want to invoice yet you can just untick the generate invoice checkbox.&lt;br /&gt;
*Once happy with the selections, click '''Save Changes''' to complete the process.&lt;br /&gt;
&lt;br /&gt;
===Promotion Codes===&lt;br /&gt;
* Promotion Codes applied to an existing service via the drop-down menu&lt;br /&gt;
* Information on how to manually adjust Promotion Codes for an existing service can be found at the  [[Promotions#Manually_Applying_a_Promotion|Manually Applying a Promotion]] section. &lt;br /&gt;
&lt;br /&gt;
===Auto Recalculate Recurring Price on Save===&lt;br /&gt;
&lt;br /&gt;
*This checkbox option located to the bottom right of the product details screen updates the recurring amount field when checked&lt;br /&gt;
*It can be used after changing the product, configurable options, billing cycle or promo code to auto calculate the new recurring price&lt;br /&gt;
*It is off by default so that any discounted rates or custom pricing are not overwritten as these aren't taken into account by it&lt;br /&gt;
&lt;br /&gt;
===Overide Auto Suspension===&lt;br /&gt;
&lt;br /&gt;
*This option can be used to allow extra time for payment to be made for specific individuals&lt;br /&gt;
*It allows you to set a date to hold the suspension until and then it will only suspend if it's still unpaid when that date is reached&lt;br /&gt;
*The checkbox to enable it is at the bottom of the '''Products/Services''' details tab under a '''Clients Profile'''&lt;br /&gt;
*Tick that box and then in the date field that appears, choose the date you want to overide the auto suspension until&lt;br /&gt;
* Entering the date 00/00/0000 will permanently prevent the product from being suspended and terminated.&lt;br /&gt;
&lt;br /&gt;
==Invoicing Early==&lt;br /&gt;
&lt;br /&gt;
[[File:Invoicing-early.png|800px]]&lt;br /&gt;
&lt;br /&gt;
There may be times where a client asks for you to invoice them for the next renewal date early.  To do this in WHMCS,&lt;br /&gt;
&lt;br /&gt;
#Begin by navigating to the '''Clients Summary''' page for the client you want to invoice&lt;br /&gt;
#Now tick the boxes of the '''Products/Services/Addons''' and/or '''Domains''' you want to generate an invoice for&lt;br /&gt;
#To complete, click the '''Invoice Selected Items''' button to create the invoice(s) for them&lt;br /&gt;
#Multiple invoices may be created if the due dates and payment methods differ as invoicing rules are obeyed as normal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' You won't be able to generate another invoice if an invoice has already been made for the next due date.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' If the Separate Invoices option is enabled in the client's Profile or Client Group, when selecting multiple items here with the same Next Due Date, a single invoice will be generated.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' The status of the service, domain or addon must be Pending, Active or Suspended to generate an invoice&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Upgrades/Downgrades==&lt;br /&gt;
&lt;br /&gt;
===Admin Area===&lt;br /&gt;
&lt;br /&gt;
[[File:Upgrade button.png|thumb|Upgrade/Downgrade Button]]&lt;br /&gt;
If you would like to change the product/service a client is assigned to and automatically charge or credit the difference for that change then you need to use the Upgrade/Downgrade process. You'll find the option for this next to the Products/Services dropdown menu on the Products/Services Details page within the clients profile.  To use it, simply navigate to the product you want to change, click the Upgrade/Downgrade link, and in the popup that appears make the new product &amp;amp; billing cycle selections as required and it will give you a preview of what the charge will be for the remainder of the current cycle and allow you to create an order/invoice for that change if happy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=wXEulukuHdo&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will no immediate changes to the product after creating an upgrade order, the actual product or config option changes won't take effect until the invoice is paid. But as soon as the invoice is paid the product will be updated, the new recurring amount will be set, and with most supported control panels the upgrade is fully automated with the new package details/changes being passed over to the server module being used.  Finally the upgrade email specified in the product configuration is sent to the user advising them of the new products details.&lt;br /&gt;
&lt;br /&gt;
The same process can also be used for configurable options changes and billing the difference for those if the product contains them.&lt;br /&gt;
&lt;br /&gt;
===Client Side===&lt;br /&gt;
&lt;br /&gt;
Clients can also place orders for upgrades &amp;amp; downgrades themselves if you have permitted it in the product configuration.  This allows clients to order upgrades/downgrades and complete them automatically without the need for any staff involvement.&lt;br /&gt;
&lt;br /&gt;
For more information, including how to allow clients upgrades and how the upgrade charges are calculated, please refer to the [[Automated Upgrades and Downgrades]] section&lt;br /&gt;
&lt;br /&gt;
===Manual Upgrades===&lt;br /&gt;
There may be occasion when you wish to make an upgrade without placing an upgrade order (such as a free upgrade) or processing the upgrade before the client has paid for it. To achieve this:&lt;br /&gt;
&lt;br /&gt;
#Navigate to the client's Products/Services tab,&lt;br /&gt;
#Change the product from the dropdown menu,&lt;br /&gt;
#Tick &amp;quot;Auto Recalculate on Save&amp;quot; checkbox,&lt;br /&gt;
#Click Save Changes,&lt;br /&gt;
#Finally click the &amp;quot;Change Package &amp;quot; Module Command button to make the change on the server.&lt;br /&gt;
&lt;br /&gt;
==Bulk Actions==&lt;br /&gt;
&lt;br /&gt;
[[File:Bulk-actions.png|thumb|Bulk Actions Tool]]&lt;br /&gt;
The bulk actions option in WHMCS allows you to perform changes to two or more products inside a client's profile at the same time. The changes can consist of adjustments to the status, payment method, override auto-suspend date, first payment amount, recurring amount, next due date, and billing cycle. For example, you can use this option if you want to reduce a client's price on a number of separate products to the same level, execute module commands in bulk, or if you would like to bring multiple services in line to a matching due date.&lt;br /&gt;
&lt;br /&gt;
To use this feature, from the Clients Summary page, tick the checkboxes next to the '''Products/Services''', '''Addons''' and/or '''Domains''' you want to update. The bulk actions will display under the item lists. Additional actions can be viewed by clicking '''Show Advanced Options'''. Enter any changes you wish to make (leaving blank any fields you don't want to change) and click '''Apply''' to complete the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=WLLsQML6rEU&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create Prorata Invoice===&lt;br /&gt;
This useful feature means that when changing the Next Due Date of a product/service/addon/domain a pro-rated invoice is created covering the period between the current next due date and the new one. It even works when the various products have different next due dates to start with and will pro-rate each accordingly as separate line items on the invoice. &lt;br /&gt;
&lt;br /&gt;
To use simply specify the new Next Due Date and tick the '''Create Prorata Invoice''' checkbox before clicking '''Apply'''.&lt;br /&gt;
&lt;br /&gt;
For example take two products that the client now wishes to pay on the 10th of the month going forward:&lt;br /&gt;
&lt;br /&gt;
 Product A - Next Due Date 01/01/2012 @ $30/month&lt;br /&gt;
 Product B - Next Due Date 05/01/2012 @ $60/month&lt;br /&gt;
&lt;br /&gt;
Set the Next Due Date to 10/01/2012 and tick the checkbox, an invoice with the following line items will be generated:&lt;br /&gt;
&lt;br /&gt;
 Product A (01/01/2012 - 09/01/2012) $8.00&lt;br /&gt;
 Product B (05/01/2012 - 09/01/2012) $10.00&lt;br /&gt;
 Total Due Today $18.00&lt;br /&gt;
&lt;br /&gt;
Only once paid will the Next Due Dates for both products be updated and in future both products would be invoiced on the 10th January.&lt;br /&gt;
&lt;br /&gt;
==Cancelling a Product/Service==&lt;br /&gt;
&lt;br /&gt;
===Auto Terminate/Fixed Term===&lt;br /&gt;
You can setup products to automatically terminate after a set number of days from the date of signup. For more information refer to [[Products_and_Services#Pricing_Tab|Configuring Products/Services]].&lt;br /&gt;
&lt;br /&gt;
===Clients Self Service===&lt;br /&gt;
&lt;br /&gt;
[[File:Request-cancellation-highlighted.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Request-cancellation-form.png|800px]]&lt;br /&gt;
&lt;br /&gt;
WHMCS can completely automate the process of product cancellation or wait for manual confirmation. To do this navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Other''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Other''', and enable the '''Show Cancellation Link''' option.&lt;br /&gt;
&lt;br /&gt;
Clients can then request cancellation of any of their products &amp;amp; services directly from the client area.&lt;br /&gt;
&lt;br /&gt;
To fully automate cancellation and have the module terminate command run (for example to remove the hosting account from the server) check '''Cancellation Requests''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' option.&lt;br /&gt;
&lt;br /&gt;
Now when the cron runs any services with a cancellation request due today will be removed from the server and the status changed in WHMCS to Cancelled. The process runs as follows:&lt;br /&gt;
&lt;br /&gt;
*Client clicks ''Request Cancellation'' button on the product details page in client area&lt;br /&gt;
*They're prompted to provide a cancellation reason and provided 2 choices for the cancellation - either '''Instant''' (on next cron run) or at the '''End of the Current Billing Cycle'''.&lt;br /&gt;
*If a matching domain exists under the client's account in active status with ''Auto Renew'' enabled, the customer is given the option to disable auto renew too - thereby leaving the domain to expire.&lt;br /&gt;
*Any unpaid invoices for the product will be cancelled ([[Invoice_Tab#Cancellation_Request_Handling|if enabled]])&lt;br /&gt;
*A notification email is sent to administrators and you will be able to review the reason provided in '''Clients &amp;gt; Cancellation Requests'''.&lt;br /&gt;
&lt;br /&gt;
====Manual Cancellation====&lt;br /&gt;
If the Cancellation Request setting is '''not''' enabled then at this point you must navigate to the cancellation requests page, click through to the service page and click the '''Terminate''' module command button to remove the account from the server. The cancellation request is then moved from the ''Open Requests'' page to ''Completed Requests''.&lt;br /&gt;
&lt;br /&gt;
====Automated Cancellation====&lt;br /&gt;
If the Cancellation Request setting '''is''' enabled the cancellation request will be actioned when the daily automation cron runs on the appropriate day. For example if the ''Immediate'' option was selected it will be terminated on the next cron run, if ''End of Billing Period'' was selected it will be terminated when the cron runs on the service's Next Due Date.&lt;br /&gt;
&lt;br /&gt;
====Voiding Cancellation Requests====&lt;br /&gt;
If a Cancellation Request has been submitted by your client and they later change their mind, it is quick and easy to void their cancellation request. Simply navigate to '''Clients &amp;gt; Cancellation Requests''', locate the cancellation you wish to remove, and then click the red X next to the request to remove it. This will stop the cancellation from processing automatically. You'll need to make sure to mark any invoices that were cancelled as &amp;quot;Unpaid&amp;quot; to prevent billing errors.&lt;br /&gt;
&lt;br /&gt;
===Admin Scheduled Cancellations===&lt;br /&gt;
&lt;br /&gt;
As an admin user, you can schedule the termination of a product at the end of the currently active period by going to the Products/Services tab, ticking the '''Auto-Terminate End of Cycle''' option and optionally entering a reason/note for it. Any unpaid invoices for the product will be cancelled and will suppress any further renewal invoices from generating for this product and terminate it when the next due date is reached.&lt;br /&gt;
The &amp;quot;Cancellation Requests&amp;quot; setting in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' must also be enabled.&lt;br /&gt;
&lt;br /&gt;
===Admin Immediate Cancellation===&lt;br /&gt;
&lt;br /&gt;
Finally, if you want to cancel or terminate a product or service immediately then you simply need to locate the item you wish to cancel, and from the Products/Services page, click the '''Terminate''' button if the product is linked to a module or if not, manually change the dropdown status from Active to '''Cancelled'''.  Once you've done this, no further invoices will generate for the item.&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
When a product or service is terminated automatically by the WHMCS System, including through the above Admin Scheduled Cancellation routine, any child addon(s) attached to the product/service will also be cancelled at the same time.  Addons do not support independent scheduled cancellations of their own however.&lt;br /&gt;
&lt;br /&gt;
====Termination Date====&lt;br /&gt;
When an addon is Cancelled or Terminated, either manually via the admin interface or automatically as part of a product termination, the Termination Date will be assigned the current date automatically.&lt;br /&gt;
The termination date can be edited manually at any time via the Product Addon management screens within the admin area.&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;A termination date can only be set/edited when the addon is in one of either Terminated or Cancelled status.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Moving a Product/Service to another Client==&lt;br /&gt;
[[File:Transfer product.png|thumb|Transfer Product Popup]]&lt;br /&gt;
#From the Products/Services details page of the product you want to move, click '''Move Product/Service to Another Client''' located at the top-right of the page&lt;br /&gt;
#A popup box will appear (you will need popup blockers disabled to use this)&lt;br /&gt;
#In the popup enter the ID of the new owner. If you don't know the client's ID the Search field can be used to search by name, company or email address. Click the client's name and the ID will be filled in.&lt;br /&gt;
#After selecting the desired click, click the '''Transfer''' button&lt;br /&gt;
#The item will then be transferred, the window will close, and the original window will refresh to show the product under its new owner.&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Moving a products/service between clients within WHMCS will not have any affect on the account on the server.&lt;br /&gt;
&lt;br /&gt;
===Invoices===&lt;br /&gt;
Invoices cannot be moved between clients, therefore when moving a product/service any invoices will remain under the old owner. Therefore it would be advisable to check the old owner's Invoices tab for any unpaid invoices for this service and cancel them. If you wish to invoice the new owner for the service, move the Next Due Date forward/back by one day and a new invoice will be generated when the cron next runs.&lt;br /&gt;
&lt;br /&gt;
==Deleting a Product/Service from a Client==&lt;br /&gt;
&lt;br /&gt;
#From the Products/Services details page of the product you want to delete, scroll to the bottom and click the red '''Delete''' link&lt;br /&gt;
#After clicking this link, you will be asked to confirm if you are sure you want to delete the item&lt;br /&gt;
#If you click No you will be returned to the page, if you click Yes, the item will be deleted and you will be taken to the next product/service under that client&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Deleting a product from WHMCS will not terminate it on the server.  If you wanted to remove it from the server aswell, you need to run the Terminate Module Command as explained above before deleting the record from WHMCS.&lt;br /&gt;
&lt;br /&gt;
==Resending Product Welcome Email==&lt;br /&gt;
To re-send a product welcome email simply navigate to the client's Products/Services tab and click the &amp;quot;Resend Product Welcome Email&amp;quot; button at the bottom of the page.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Products_Management&amp;diff=30329</id>
		<title>Products Management</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Products_Management&amp;diff=30329"/>
				<updated>2021-05-24T00:27:59Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Invoicing Early */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Adding Products/Services==&lt;br /&gt;
&lt;br /&gt;
[[File:Admin-order-form.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can place a new order in the admin area via the '''Orders &amp;gt; Add New Order''' section or the Add New Order link on any Client Summary page.&lt;br /&gt;
&lt;br /&gt;
Once on the Add New Order page, you can input the order details as follows:&lt;br /&gt;
&lt;br /&gt;
# Type in the client details to select the client, if the system didn't already preselect them.&lt;br /&gt;
# Choose the payment method to use for the order and any resulting invoice.&lt;br /&gt;
# Select a promotion code to apply to the order items (if applicable).&lt;br /&gt;
# Choose the order status. Unless this is for adding an existing service that needs no provisioning, leave it as pending so that you can review the order after payment and ensure any provisioning was successful.&lt;br /&gt;
# There will be three selected options:&lt;br /&gt;
&lt;br /&gt;
*Order Confirmation — Keep this selected if you wish to send the Order Confirmation email to the client.&lt;br /&gt;
*Generate Invoice — Keep this selected if you wish to generate an invoice for the items on the order. This is useful if you are placing an order for a new service on the client's behalf or you will to manually enter an existing service but still want to invoice them right away.&lt;br /&gt;
*Send Email — Keep this selected if you wish to send the Invoice Created email whenever the system creates an invoice.&lt;br /&gt;
&lt;br /&gt;
===Product/Service===&lt;br /&gt;
You can use this section to enter the details for each product you want to add to the order, with the &amp;quot;Add New Product&amp;quot; button at the bottom, allowing you to enter multiple products on the same order. You can select the product, enter the domain name (if there is one), choose the billing cycle, select the quantity, and enter any pricing overrides (for example, if you want to give the client a hardcoded price different than what the product normally goes for without using a promotion code).&lt;br /&gt;
&lt;br /&gt;
If the billing cycle and price override fields have not changed, the system will use the pricing from the shortest configured billing cycle.&lt;br /&gt;
&lt;br /&gt;
Use the Quantity option if you want to order multiples of a single product that doesn't require any specific configuration on the initial order (such as a domain name and configurable options). For example, if you are selling a software license using our Licensing Addon and the customer wishes to receive 10 licenses, you could use 10 for the Quantity and the system will create 10 services on their account after order submission. For products that each require a domain and specific configuration, add them one by one using the &amp;quot;Add New Product&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
===Domain Registration===&lt;br /&gt;
The &amp;quot;Domain Registration&amp;quot; section can be used to include a domain name on the order. Use the radio options to select whether this is a new registration or transfer, and enter the domain in this format: yourdomain.com&lt;br /&gt;
&lt;br /&gt;
Leave the radio option at None if this order doesn't require a domain,&lt;br /&gt;
&lt;br /&gt;
For registration, the system will prompt you for the domain name, the number of years to register it for, any applicable addons, and finally any pricing overrides for the registration and future renewal amounts. If there isn't a price override, the system uses the regular price for that TLD.&lt;br /&gt;
&lt;br /&gt;
For transfers, the system will prompt you for the same details, along with the EPP Code (also commonly called the Transfer Authorization code) from the existing registrar for the domain. During the client area ordering process, the client supplies this, and you may need to obtain it from them first if it is applicable to the domain you are trying to transfer.&lt;br /&gt;
&lt;br /&gt;
For Product Only orders, fill in the Product/Service section and leave the Domain Registration section at &amp;quot;None&amp;quot; for the only entry. For Domain Only orders, you would not enter anything into the fields in the Product/Service section (Product/Service, Domain, Billing Cycle, Quantity and Price Override) and fill in the Domain Registration section.&lt;br /&gt;
&lt;br /&gt;
==Managing a Clients Products/Services==&lt;br /&gt;
&lt;br /&gt;
You can locate products/services to manage in a number of ways:&lt;br /&gt;
&lt;br /&gt;
#Search for the Client in '''Clients &amp;gt; View/Search Clients''', and then from the '''Client Summary''' page click the ID of the product you want to manage from the list&lt;br /&gt;
#Search for the Product in '''Clients &amp;gt; List All Products/Services &amp;gt; Search/Filter''', then click the product ID or domain to be taken to the product details&lt;br /&gt;
#Using the [[Admin_Area#Search|Intelligent Search]]&lt;br /&gt;
&lt;br /&gt;
The Products/Services details page inside a clients profile allows you to view and modify all of a products settings. After making any changes, you need to click the '''Save Changes''' button to save your edits.&lt;br /&gt;
&lt;br /&gt;
===Running Module Commands===&lt;br /&gt;
&lt;br /&gt;
[[File:Module-commands.png|800px]]&lt;br /&gt;
&lt;br /&gt;
If the product/service is linked to a module, you will have a Module Commands row towards the bottom of the page. This allows you to execute any of the commands available in that module.  Modules can have custom functions but the most common ones are:&lt;br /&gt;
&lt;br /&gt;
*'''Create''' - runs the creation routine and sets the product status to active&lt;br /&gt;
*'''Suspend''' - runs the suspension routine and sets the product status to suspended. You will be prompted to enter a suspension reason, leave it blank if the client has an unpaid invoice and you want the account automatically unsuspended when paid.&lt;br /&gt;
*'''Unsuspend''' - runs the unsuspension routine and sets the product status back to active&lt;br /&gt;
*'''Terminate''' - runs the termination routine and sets the product status to terminated&lt;br /&gt;
*'''Change Package''' - runs the upgrade/downgrade routine for the selected product&lt;br /&gt;
*'''Change Password''' - runs the password modification routine for the last saved password value&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
&lt;br /&gt;
*Product addons allow you to bill for additional items related to the main product but on independent billing cycles from the product (unlike Configurable Options, which have to bill on the same cycle).&lt;br /&gt;
*Addons can be preconfigured in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Product Addons]]''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Product Addons''', but you can also create custom addons for specific clients which aren't predefined for flexibility.&lt;br /&gt;
*Preconfigured addons can be ordered by clients from the client area product details page.&lt;br /&gt;
&lt;br /&gt;
====Managing Addons====&lt;br /&gt;
&lt;br /&gt;
[[File:Managing-addon.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can manage addons for individual purchased products in the client profile.&lt;br /&gt;
* To view the list of addons for a product, select the parent product from the menu.&lt;br /&gt;
* To edit an addon, click the edit icon for that addon in the '''Addons''' list.&lt;br /&gt;
&lt;br /&gt;
====Adding Addons to Users====&lt;br /&gt;
&lt;br /&gt;
[[File:New-addon-button.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*To add a new addon, click '''Products/Services''' in Clients Profile.&lt;br /&gt;
*Next click on the link '''Click here to Manage''' beside the Addons label, and then click '''Add New Addon''' button.&lt;br /&gt;
*If using a predefined addon, simply choose it from the dropdown and leave the name, price and billing cycle fields empty as they will all be automatically set.&lt;br /&gt;
*Alternatively, if adding a custom addon specific to this client, leave the Predefined Addon set to None and enter a custom name, price and cycle.&lt;br /&gt;
*If you would like to invoice for the new addon immediately then you don't need to do anything as that will happen by default, or alternatively if you don't want to invoice yet you can just untick the generate invoice checkbox.&lt;br /&gt;
*Once happy with the selections, click '''Save Changes''' to complete the process.&lt;br /&gt;
&lt;br /&gt;
===Promotion Codes===&lt;br /&gt;
* Promotion Codes applied to an existing service via the drop-down menu&lt;br /&gt;
* Information on how to manually adjust Promotion Codes for an existing service can be found at the  [[Promotions#Manually_Applying_a_Promotion|Manually Applying a Promotion]] section. &lt;br /&gt;
&lt;br /&gt;
===Auto Recalculate Recurring Price on Save===&lt;br /&gt;
&lt;br /&gt;
*This checkbox option located to the bottom right of the product details screen updates the recurring amount field when checked&lt;br /&gt;
*It can be used after changing the product, configurable options, billing cycle or promo code to auto calculate the new recurring price&lt;br /&gt;
*It is off by default so that any discounted rates or custom pricing are not overwritten as these aren't taken into account by it&lt;br /&gt;
&lt;br /&gt;
===Overide Auto Suspension===&lt;br /&gt;
&lt;br /&gt;
*This option can be used to allow extra time for payment to be made for specific individuals&lt;br /&gt;
*It allows you to set a date to hold the suspension until and then it will only suspend if it's still unpaid when that date is reached&lt;br /&gt;
*The checkbox to enable it is at the bottom of the '''Products/Services''' details tab under a '''Clients Profile'''&lt;br /&gt;
*Tick that box and then in the date field that appears, choose the date you want to overide the auto suspension until&lt;br /&gt;
* Entering the date 00/00/0000 will permanently prevent the product from being suspended and terminated.&lt;br /&gt;
&lt;br /&gt;
==Invoicing Early==&lt;br /&gt;
&lt;br /&gt;
[[File:Invoicing-early.png|800px]]&lt;br /&gt;
&lt;br /&gt;
There may be times where a client asks for you to invoice them for the next renewal date early.  To do this in WHMCS,&lt;br /&gt;
&lt;br /&gt;
#Begin by navigating to the '''Clients Summary''' page for the client you want to invoice&lt;br /&gt;
#Now tick the boxes of the '''Products/Services/Addons''' and/or '''Domains''' you want to generate an invoice for&lt;br /&gt;
#To complete, click the '''Invoice Selected Items''' button to create the invoice(s) for them&lt;br /&gt;
#Multiple invoices may be created if the due dates and payment methods differ as invoicing rules are obeyed as normal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' You won't be able to generate another invoice if an invoice has already been made for the next due date.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' If the Separate Invoices option is enabled in the client's Profile or Client Group, when selecting multiple items here with the same Next Due Date, a single invoice will be generated.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' The status of the service, domain or addon must be Pending, Active or Suspended to generate an invoice&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Upgrades/Downgrades==&lt;br /&gt;
&lt;br /&gt;
===Admin Area===&lt;br /&gt;
&lt;br /&gt;
[[File:Upgrade button.png|thumb|Upgrade/Downgrade Button]]&lt;br /&gt;
If you would like to change the product/service a client is assigned to and automatically charge or credit the difference for that change then you need to use the Upgrade/Downgrade process. You'll find the option for this next to the Products/Services dropdown menu on the Products/Services Details page within the clients profile.  To use it, simply navigate to the product you want to change, click the Upgrade/Downgrade link, and in the popup that appears make the new product &amp;amp; billing cycle selections as required and it will give you a preview of what the charge will be for the remainder of the current cycle and allow you to create an order/invoice for that change if happy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=wXEulukuHdo&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will no immediate changes to the product after creating an upgrade order, the actual product or config option changes won't take effect until the invoice is paid. But as soon as the invoice is paid the product will be updated, the new recurring amount will be set, and with most supported control panels the upgrade is fully automated with the new package details/changes being passed over to the server module being used.  Finally the upgrade email specified in the product configuration is sent to the user advising them of the new products details.&lt;br /&gt;
&lt;br /&gt;
The same process can also be used for configurable options changes and billing the difference for those if the product contains them.&lt;br /&gt;
&lt;br /&gt;
===Client Side===&lt;br /&gt;
&lt;br /&gt;
Clients can also place orders for upgrades &amp;amp; downgrades themselves if you have permitted it in the product configuration.  This allows clients to order upgrades/downgrades and complete them automatically without the need for any staff involvement.&lt;br /&gt;
&lt;br /&gt;
For more information, including how to allow clients upgrades and how the upgrade charges are calculated, please refer to the [[Automated Upgrades and Downgrades]] section&lt;br /&gt;
&lt;br /&gt;
===Manual Upgrades===&lt;br /&gt;
There may be occasion when you wish to make an upgrade without placing an upgrade order (such as a free upgrade) or processing the upgrade before the client has paid for it. To achieve this:&lt;br /&gt;
&lt;br /&gt;
#Navigate to the client's Products/Services tab,&lt;br /&gt;
#Change the product from the dropdown menu,&lt;br /&gt;
#Tick &amp;quot;Auto Recalculate on Save&amp;quot; checkbox,&lt;br /&gt;
#Click Save Changes,&lt;br /&gt;
#Finally click the &amp;quot;Change Package &amp;quot; Module Command button to make the change on the server.&lt;br /&gt;
&lt;br /&gt;
==Bulk Actions==&lt;br /&gt;
&lt;br /&gt;
[[File:Bulk-actions.png|thumb|Bulk Actions Tool]]&lt;br /&gt;
The bulk actions option in WHMCS allows you to perform changes to two or more products inside a client's profile at the same time. The changes can consist of adjustments to the status, payment method, override auto-suspend date, first payment amount, recurring amount, next due date, and billing cycle. For example, you can use this option if you want to reduce a client's price on a number of separate products to the same level, execute module commands in bulk, or if you would like to bring multiple services in line to a matching due date.&lt;br /&gt;
&lt;br /&gt;
To use this feature, from the Clients Summary page, tick the checkboxes next to the '''Products/Services''', '''Addons''' and/or '''Domains''' you want to update. The bulk actions will display under the item lists. Additional actions can be viewed by clicking '''Show Advanced Options'''. Enter any changes you wish to make (leaving blank any fields you don't want to change) and click '''Apply''' to complete the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=WLLsQML6rEU&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create Prorata Invoice===&lt;br /&gt;
This useful feature means that when changing the Next Due Date of a product/service/addon/domain a pro-rated invoice is created covering the period between the current next due date and the new one. It even works when the various products have different next due dates to start with and will pro-rate each accordingly as separate line items on the invoice. &lt;br /&gt;
&lt;br /&gt;
To use simply specify the new Next Due Date and tick the '''Create Prorata Invoice''' checkbox before clicking '''Apply'''.&lt;br /&gt;
&lt;br /&gt;
For example take two products that the client now wishes to pay on the 10th of the month going forward:&lt;br /&gt;
&lt;br /&gt;
 Product A - Next Due Date 01/01/2012 @ $30/month&lt;br /&gt;
 Product B - Next Due Date 05/01/2012 @ $60/month&lt;br /&gt;
&lt;br /&gt;
Set the Next Due Date to 10/01/2012 and tick the checkbox, an invoice with the following line items will be generated:&lt;br /&gt;
&lt;br /&gt;
 Product A (01/01/2012 - 09/01/2012) $8.00&lt;br /&gt;
 Product B (05/01/2012 - 09/01/2012) $10.00&lt;br /&gt;
 Total Due Today $18.00&lt;br /&gt;
&lt;br /&gt;
Only once paid will the Next Due Dates for both products be updated and in future both products would be invoiced on the 10th January.&lt;br /&gt;
&lt;br /&gt;
==Cancelling a Product/Service==&lt;br /&gt;
&lt;br /&gt;
===Auto Terminate/Fixed Term===&lt;br /&gt;
You can setup products to automatically terminate after a set number of days from the date of signup. For more information refer to [[Products_and_Services#Pricing_Tab|Configuring Products/Services]].&lt;br /&gt;
&lt;br /&gt;
===Clients Self Service===&lt;br /&gt;
WHMCS can completely automate the process of product cancellation or wait for manual confirmation. To do this navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Other''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Other''', and enable the '''Show Cancellation Link''' option.&lt;br /&gt;
&lt;br /&gt;
Clients can then request cancellation of any of their products &amp;amp; services directly from the client area.&lt;br /&gt;
&lt;br /&gt;
To fully automate cancellation and have the module terminate command run (for example to remove the hosting account from the server) check '''Cancellation Requests''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' option.&lt;br /&gt;
&lt;br /&gt;
Now when the cron runs any services with a cancellation request due today will be removed from the server and the status changed in WHMCS to Cancelled. The process runs as follows:&lt;br /&gt;
&lt;br /&gt;
*Client clicks ''Request Cancellation'' button on the product details page in client area&lt;br /&gt;
*They're prompted to provide a cancellation reason and provided 2 choices for the cancellation - either '''Instant''' (on next cron run) or at the '''End of the Current Billing Cycle'''.&lt;br /&gt;
*If a matching domain exists under the client's account in active status with ''Auto Renew'' enabled, the customer is given the option to disable auto renew too - thereby leaving the domain to expire.&lt;br /&gt;
*Any unpaid invoices for the product will be cancelled ([[Invoice_Tab#Cancellation_Request_Handling|if enabled]])&lt;br /&gt;
*A notification email is sent to administrators and you will be able to review the reason provided in '''Clients &amp;gt; Cancellation Requests'''.&lt;br /&gt;
&lt;br /&gt;
====Manual Cancellation====&lt;br /&gt;
If the Cancellation Request setting is '''not''' enabled then at this point you must navigate to the cancellation requests page, click through to the service page and click the '''Terminate''' module command button to remove the account from the server. The cancellation request is then moved from the ''Open Requests'' page to ''Completed Requests''.&lt;br /&gt;
&lt;br /&gt;
====Automated Cancellation====&lt;br /&gt;
If the Cancellation Request setting '''is''' enabled the cancellation request will be actioned when the daily automation cron runs on the appropriate day. For example if the ''Immediate'' option was selected it will be terminated on the next cron run, if ''End of Billing Period'' was selected it will be terminated when the cron runs on the service's Next Due Date.&lt;br /&gt;
&lt;br /&gt;
====Voiding Cancellation Requests====&lt;br /&gt;
If a Cancellation Request has been submitted by your client and they later change their mind, it is quick and easy to void their cancellation request. Simply navigate to '''Clients &amp;gt; Cancellation Requests''', locate the cancellation you wish to remove, and then click the red X next to the request to remove it. This will stop the cancellation from processing automatically. You'll need to make sure to mark any invoices that were cancelled as &amp;quot;Unpaid&amp;quot; to prevent billing errors.&lt;br /&gt;
&lt;br /&gt;
===Admin Scheduled Cancellations===&lt;br /&gt;
&lt;br /&gt;
As an admin user, you can schedule the termination of a product at the end of the currently active period by going to the Products/Services tab, ticking the '''Auto-Terminate End of Cycle''' option and optionally entering a reason/note for it. Any unpaid invoices for the product will be cancelled and will suppress any further renewal invoices from generating for this product and terminate it when the next due date is reached.&lt;br /&gt;
The &amp;quot;Cancellation Requests&amp;quot; setting in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' must also be enabled.&lt;br /&gt;
&lt;br /&gt;
===Admin Immediate Cancellation===&lt;br /&gt;
&lt;br /&gt;
Finally, if you want to cancel or terminate a product or service immediately then you simply need to locate the item you wish to cancel, and from the Products/Services page, click the '''Terminate''' button if the product is linked to a module or if not, manually change the dropdown status from Active to '''Cancelled'''.  Once you've done this, no further invoices will generate for the item.&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
When a product or service is terminated automatically by the WHMCS System, including through the above Admin Scheduled Cancellation routine, any child addon(s) attached to the product/service will also be cancelled at the same time.  Addons do not support independent scheduled cancellations of their own however.&lt;br /&gt;
&lt;br /&gt;
====Termination Date====&lt;br /&gt;
When an addon is Cancelled or Terminated, either manually via the admin interface or automatically as part of a product termination, the Termination Date will be assigned the current date automatically.&lt;br /&gt;
The termination date can be edited manually at any time via the Product Addon management screens within the admin area.&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;A termination date can only be set/edited when the addon is in one of either Terminated or Cancelled status.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Moving a Product/Service to another Client==&lt;br /&gt;
[[File:Transfer product.png|thumb|Transfer Product Popup]]&lt;br /&gt;
#From the Products/Services details page of the product you want to move, click '''Move Product/Service to Another Client''' located at the top-right of the page&lt;br /&gt;
#A popup box will appear (you will need popup blockers disabled to use this)&lt;br /&gt;
#In the popup enter the ID of the new owner. If you don't know the client's ID the Search field can be used to search by name, company or email address. Click the client's name and the ID will be filled in.&lt;br /&gt;
#After selecting the desired click, click the '''Transfer''' button&lt;br /&gt;
#The item will then be transferred, the window will close, and the original window will refresh to show the product under its new owner.&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Moving a products/service between clients within WHMCS will not have any affect on the account on the server.&lt;br /&gt;
&lt;br /&gt;
===Invoices===&lt;br /&gt;
Invoices cannot be moved between clients, therefore when moving a product/service any invoices will remain under the old owner. Therefore it would be advisable to check the old owner's Invoices tab for any unpaid invoices for this service and cancel them. If you wish to invoice the new owner for the service, move the Next Due Date forward/back by one day and a new invoice will be generated when the cron next runs.&lt;br /&gt;
&lt;br /&gt;
==Deleting a Product/Service from a Client==&lt;br /&gt;
&lt;br /&gt;
#From the Products/Services details page of the product you want to delete, scroll to the bottom and click the red '''Delete''' link&lt;br /&gt;
#After clicking this link, you will be asked to confirm if you are sure you want to delete the item&lt;br /&gt;
#If you click No you will be returned to the page, if you click Yes, the item will be deleted and you will be taken to the next product/service under that client&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Deleting a product from WHMCS will not terminate it on the server.  If you wanted to remove it from the server aswell, you need to run the Terminate Module Command as explained above before deleting the record from WHMCS.&lt;br /&gt;
&lt;br /&gt;
==Resending Product Welcome Email==&lt;br /&gt;
To re-send a product welcome email simply navigate to the client's Products/Services tab and click the &amp;quot;Resend Product Welcome Email&amp;quot; button at the bottom of the page.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Products_Management&amp;diff=30328</id>
		<title>Products Management</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Products_Management&amp;diff=30328"/>
				<updated>2021-05-24T00:27:25Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Managing Addons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Adding Products/Services==&lt;br /&gt;
&lt;br /&gt;
[[File:Admin-order-form.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can place a new order in the admin area via the '''Orders &amp;gt; Add New Order''' section or the Add New Order link on any Client Summary page.&lt;br /&gt;
&lt;br /&gt;
Once on the Add New Order page, you can input the order details as follows:&lt;br /&gt;
&lt;br /&gt;
# Type in the client details to select the client, if the system didn't already preselect them.&lt;br /&gt;
# Choose the payment method to use for the order and any resulting invoice.&lt;br /&gt;
# Select a promotion code to apply to the order items (if applicable).&lt;br /&gt;
# Choose the order status. Unless this is for adding an existing service that needs no provisioning, leave it as pending so that you can review the order after payment and ensure any provisioning was successful.&lt;br /&gt;
# There will be three selected options:&lt;br /&gt;
&lt;br /&gt;
*Order Confirmation — Keep this selected if you wish to send the Order Confirmation email to the client.&lt;br /&gt;
*Generate Invoice — Keep this selected if you wish to generate an invoice for the items on the order. This is useful if you are placing an order for a new service on the client's behalf or you will to manually enter an existing service but still want to invoice them right away.&lt;br /&gt;
*Send Email — Keep this selected if you wish to send the Invoice Created email whenever the system creates an invoice.&lt;br /&gt;
&lt;br /&gt;
===Product/Service===&lt;br /&gt;
You can use this section to enter the details for each product you want to add to the order, with the &amp;quot;Add New Product&amp;quot; button at the bottom, allowing you to enter multiple products on the same order. You can select the product, enter the domain name (if there is one), choose the billing cycle, select the quantity, and enter any pricing overrides (for example, if you want to give the client a hardcoded price different than what the product normally goes for without using a promotion code).&lt;br /&gt;
&lt;br /&gt;
If the billing cycle and price override fields have not changed, the system will use the pricing from the shortest configured billing cycle.&lt;br /&gt;
&lt;br /&gt;
Use the Quantity option if you want to order multiples of a single product that doesn't require any specific configuration on the initial order (such as a domain name and configurable options). For example, if you are selling a software license using our Licensing Addon and the customer wishes to receive 10 licenses, you could use 10 for the Quantity and the system will create 10 services on their account after order submission. For products that each require a domain and specific configuration, add them one by one using the &amp;quot;Add New Product&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
===Domain Registration===&lt;br /&gt;
The &amp;quot;Domain Registration&amp;quot; section can be used to include a domain name on the order. Use the radio options to select whether this is a new registration or transfer, and enter the domain in this format: yourdomain.com&lt;br /&gt;
&lt;br /&gt;
Leave the radio option at None if this order doesn't require a domain,&lt;br /&gt;
&lt;br /&gt;
For registration, the system will prompt you for the domain name, the number of years to register it for, any applicable addons, and finally any pricing overrides for the registration and future renewal amounts. If there isn't a price override, the system uses the regular price for that TLD.&lt;br /&gt;
&lt;br /&gt;
For transfers, the system will prompt you for the same details, along with the EPP Code (also commonly called the Transfer Authorization code) from the existing registrar for the domain. During the client area ordering process, the client supplies this, and you may need to obtain it from them first if it is applicable to the domain you are trying to transfer.&lt;br /&gt;
&lt;br /&gt;
For Product Only orders, fill in the Product/Service section and leave the Domain Registration section at &amp;quot;None&amp;quot; for the only entry. For Domain Only orders, you would not enter anything into the fields in the Product/Service section (Product/Service, Domain, Billing Cycle, Quantity and Price Override) and fill in the Domain Registration section.&lt;br /&gt;
&lt;br /&gt;
==Managing a Clients Products/Services==&lt;br /&gt;
&lt;br /&gt;
You can locate products/services to manage in a number of ways:&lt;br /&gt;
&lt;br /&gt;
#Search for the Client in '''Clients &amp;gt; View/Search Clients''', and then from the '''Client Summary''' page click the ID of the product you want to manage from the list&lt;br /&gt;
#Search for the Product in '''Clients &amp;gt; List All Products/Services &amp;gt; Search/Filter''', then click the product ID or domain to be taken to the product details&lt;br /&gt;
#Using the [[Admin_Area#Search|Intelligent Search]]&lt;br /&gt;
&lt;br /&gt;
The Products/Services details page inside a clients profile allows you to view and modify all of a products settings. After making any changes, you need to click the '''Save Changes''' button to save your edits.&lt;br /&gt;
&lt;br /&gt;
===Running Module Commands===&lt;br /&gt;
&lt;br /&gt;
[[File:Module-commands.png|800px]]&lt;br /&gt;
&lt;br /&gt;
If the product/service is linked to a module, you will have a Module Commands row towards the bottom of the page. This allows you to execute any of the commands available in that module.  Modules can have custom functions but the most common ones are:&lt;br /&gt;
&lt;br /&gt;
*'''Create''' - runs the creation routine and sets the product status to active&lt;br /&gt;
*'''Suspend''' - runs the suspension routine and sets the product status to suspended. You will be prompted to enter a suspension reason, leave it blank if the client has an unpaid invoice and you want the account automatically unsuspended when paid.&lt;br /&gt;
*'''Unsuspend''' - runs the unsuspension routine and sets the product status back to active&lt;br /&gt;
*'''Terminate''' - runs the termination routine and sets the product status to terminated&lt;br /&gt;
*'''Change Package''' - runs the upgrade/downgrade routine for the selected product&lt;br /&gt;
*'''Change Password''' - runs the password modification routine for the last saved password value&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
&lt;br /&gt;
*Product addons allow you to bill for additional items related to the main product but on independent billing cycles from the product (unlike Configurable Options, which have to bill on the same cycle).&lt;br /&gt;
*Addons can be preconfigured in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Product Addons]]''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Product Addons''', but you can also create custom addons for specific clients which aren't predefined for flexibility.&lt;br /&gt;
*Preconfigured addons can be ordered by clients from the client area product details page.&lt;br /&gt;
&lt;br /&gt;
====Managing Addons====&lt;br /&gt;
&lt;br /&gt;
[[File:Managing-addon.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can manage addons for individual purchased products in the client profile.&lt;br /&gt;
* To view the list of addons for a product, select the parent product from the menu.&lt;br /&gt;
* To edit an addon, click the edit icon for that addon in the '''Addons''' list.&lt;br /&gt;
&lt;br /&gt;
====Adding Addons to Users====&lt;br /&gt;
&lt;br /&gt;
[[File:New-addon-button.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*To add a new addon, click '''Products/Services''' in Clients Profile.&lt;br /&gt;
*Next click on the link '''Click here to Manage''' beside the Addons label, and then click '''Add New Addon''' button.&lt;br /&gt;
*If using a predefined addon, simply choose it from the dropdown and leave the name, price and billing cycle fields empty as they will all be automatically set.&lt;br /&gt;
*Alternatively, if adding a custom addon specific to this client, leave the Predefined Addon set to None and enter a custom name, price and cycle.&lt;br /&gt;
*If you would like to invoice for the new addon immediately then you don't need to do anything as that will happen by default, or alternatively if you don't want to invoice yet you can just untick the generate invoice checkbox.&lt;br /&gt;
*Once happy with the selections, click '''Save Changes''' to complete the process.&lt;br /&gt;
&lt;br /&gt;
===Promotion Codes===&lt;br /&gt;
* Promotion Codes applied to an existing service via the drop-down menu&lt;br /&gt;
* Information on how to manually adjust Promotion Codes for an existing service can be found at the  [[Promotions#Manually_Applying_a_Promotion|Manually Applying a Promotion]] section. &lt;br /&gt;
&lt;br /&gt;
===Auto Recalculate Recurring Price on Save===&lt;br /&gt;
&lt;br /&gt;
*This checkbox option located to the bottom right of the product details screen updates the recurring amount field when checked&lt;br /&gt;
*It can be used after changing the product, configurable options, billing cycle or promo code to auto calculate the new recurring price&lt;br /&gt;
*It is off by default so that any discounted rates or custom pricing are not overwritten as these aren't taken into account by it&lt;br /&gt;
&lt;br /&gt;
===Overide Auto Suspension===&lt;br /&gt;
&lt;br /&gt;
*This option can be used to allow extra time for payment to be made for specific individuals&lt;br /&gt;
*It allows you to set a date to hold the suspension until and then it will only suspend if it's still unpaid when that date is reached&lt;br /&gt;
*The checkbox to enable it is at the bottom of the '''Products/Services''' details tab under a '''Clients Profile'''&lt;br /&gt;
*Tick that box and then in the date field that appears, choose the date you want to overide the auto suspension until&lt;br /&gt;
* Entering the date 00/00/0000 will permanently prevent the product from being suspended and terminated.&lt;br /&gt;
&lt;br /&gt;
==Invoicing Early==&lt;br /&gt;
&lt;br /&gt;
There may be times where a client asks for you to invoice them for the next renewal date early.  To do this in WHMCS,&lt;br /&gt;
&lt;br /&gt;
#Begin by navigating to the '''Clients Summary''' page for the client you want to invoice&lt;br /&gt;
#Now tick the boxes of the '''Products/Services/Addons''' and/or '''Domains''' you want to generate an invoice for&lt;br /&gt;
#To complete, click the '''Invoice Selected Items''' button to create the invoice(s) for them&lt;br /&gt;
#Multiple invoices may be created if the due dates and payment methods differ as invoicing rules are obeyed as normal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' You won't be able to generate another invoice if an invoice has already been made for the next due date.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' If the Separate Invoices option is enabled in the client's Profile or Client Group, when selecting multiple items here with the same Next Due Date, a single invoice will be generated.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' The status of the service, domain or addon must be Pending, Active or Suspended to generate an invoice&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Upgrades/Downgrades==&lt;br /&gt;
&lt;br /&gt;
===Admin Area===&lt;br /&gt;
&lt;br /&gt;
[[File:Upgrade button.png|thumb|Upgrade/Downgrade Button]]&lt;br /&gt;
If you would like to change the product/service a client is assigned to and automatically charge or credit the difference for that change then you need to use the Upgrade/Downgrade process. You'll find the option for this next to the Products/Services dropdown menu on the Products/Services Details page within the clients profile.  To use it, simply navigate to the product you want to change, click the Upgrade/Downgrade link, and in the popup that appears make the new product &amp;amp; billing cycle selections as required and it will give you a preview of what the charge will be for the remainder of the current cycle and allow you to create an order/invoice for that change if happy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=wXEulukuHdo&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will no immediate changes to the product after creating an upgrade order, the actual product or config option changes won't take effect until the invoice is paid. But as soon as the invoice is paid the product will be updated, the new recurring amount will be set, and with most supported control panels the upgrade is fully automated with the new package details/changes being passed over to the server module being used.  Finally the upgrade email specified in the product configuration is sent to the user advising them of the new products details.&lt;br /&gt;
&lt;br /&gt;
The same process can also be used for configurable options changes and billing the difference for those if the product contains them.&lt;br /&gt;
&lt;br /&gt;
===Client Side===&lt;br /&gt;
&lt;br /&gt;
Clients can also place orders for upgrades &amp;amp; downgrades themselves if you have permitted it in the product configuration.  This allows clients to order upgrades/downgrades and complete them automatically without the need for any staff involvement.&lt;br /&gt;
&lt;br /&gt;
For more information, including how to allow clients upgrades and how the upgrade charges are calculated, please refer to the [[Automated Upgrades and Downgrades]] section&lt;br /&gt;
&lt;br /&gt;
===Manual Upgrades===&lt;br /&gt;
There may be occasion when you wish to make an upgrade without placing an upgrade order (such as a free upgrade) or processing the upgrade before the client has paid for it. To achieve this:&lt;br /&gt;
&lt;br /&gt;
#Navigate to the client's Products/Services tab,&lt;br /&gt;
#Change the product from the dropdown menu,&lt;br /&gt;
#Tick &amp;quot;Auto Recalculate on Save&amp;quot; checkbox,&lt;br /&gt;
#Click Save Changes,&lt;br /&gt;
#Finally click the &amp;quot;Change Package &amp;quot; Module Command button to make the change on the server.&lt;br /&gt;
&lt;br /&gt;
==Bulk Actions==&lt;br /&gt;
&lt;br /&gt;
[[File:Bulk-actions.png|thumb|Bulk Actions Tool]]&lt;br /&gt;
The bulk actions option in WHMCS allows you to perform changes to two or more products inside a client's profile at the same time. The changes can consist of adjustments to the status, payment method, override auto-suspend date, first payment amount, recurring amount, next due date, and billing cycle. For example, you can use this option if you want to reduce a client's price on a number of separate products to the same level, execute module commands in bulk, or if you would like to bring multiple services in line to a matching due date.&lt;br /&gt;
&lt;br /&gt;
To use this feature, from the Clients Summary page, tick the checkboxes next to the '''Products/Services''', '''Addons''' and/or '''Domains''' you want to update. The bulk actions will display under the item lists. Additional actions can be viewed by clicking '''Show Advanced Options'''. Enter any changes you wish to make (leaving blank any fields you don't want to change) and click '''Apply''' to complete the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=WLLsQML6rEU&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create Prorata Invoice===&lt;br /&gt;
This useful feature means that when changing the Next Due Date of a product/service/addon/domain a pro-rated invoice is created covering the period between the current next due date and the new one. It even works when the various products have different next due dates to start with and will pro-rate each accordingly as separate line items on the invoice. &lt;br /&gt;
&lt;br /&gt;
To use simply specify the new Next Due Date and tick the '''Create Prorata Invoice''' checkbox before clicking '''Apply'''.&lt;br /&gt;
&lt;br /&gt;
For example take two products that the client now wishes to pay on the 10th of the month going forward:&lt;br /&gt;
&lt;br /&gt;
 Product A - Next Due Date 01/01/2012 @ $30/month&lt;br /&gt;
 Product B - Next Due Date 05/01/2012 @ $60/month&lt;br /&gt;
&lt;br /&gt;
Set the Next Due Date to 10/01/2012 and tick the checkbox, an invoice with the following line items will be generated:&lt;br /&gt;
&lt;br /&gt;
 Product A (01/01/2012 - 09/01/2012) $8.00&lt;br /&gt;
 Product B (05/01/2012 - 09/01/2012) $10.00&lt;br /&gt;
 Total Due Today $18.00&lt;br /&gt;
&lt;br /&gt;
Only once paid will the Next Due Dates for both products be updated and in future both products would be invoiced on the 10th January.&lt;br /&gt;
&lt;br /&gt;
==Cancelling a Product/Service==&lt;br /&gt;
&lt;br /&gt;
===Auto Terminate/Fixed Term===&lt;br /&gt;
You can setup products to automatically terminate after a set number of days from the date of signup. For more information refer to [[Products_and_Services#Pricing_Tab|Configuring Products/Services]].&lt;br /&gt;
&lt;br /&gt;
===Clients Self Service===&lt;br /&gt;
WHMCS can completely automate the process of product cancellation or wait for manual confirmation. To do this navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Other''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Other''', and enable the '''Show Cancellation Link''' option.&lt;br /&gt;
&lt;br /&gt;
Clients can then request cancellation of any of their products &amp;amp; services directly from the client area.&lt;br /&gt;
&lt;br /&gt;
To fully automate cancellation and have the module terminate command run (for example to remove the hosting account from the server) check '''Cancellation Requests''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' option.&lt;br /&gt;
&lt;br /&gt;
Now when the cron runs any services with a cancellation request due today will be removed from the server and the status changed in WHMCS to Cancelled. The process runs as follows:&lt;br /&gt;
&lt;br /&gt;
*Client clicks ''Request Cancellation'' button on the product details page in client area&lt;br /&gt;
*They're prompted to provide a cancellation reason and provided 2 choices for the cancellation - either '''Instant''' (on next cron run) or at the '''End of the Current Billing Cycle'''.&lt;br /&gt;
*If a matching domain exists under the client's account in active status with ''Auto Renew'' enabled, the customer is given the option to disable auto renew too - thereby leaving the domain to expire.&lt;br /&gt;
*Any unpaid invoices for the product will be cancelled ([[Invoice_Tab#Cancellation_Request_Handling|if enabled]])&lt;br /&gt;
*A notification email is sent to administrators and you will be able to review the reason provided in '''Clients &amp;gt; Cancellation Requests'''.&lt;br /&gt;
&lt;br /&gt;
====Manual Cancellation====&lt;br /&gt;
If the Cancellation Request setting is '''not''' enabled then at this point you must navigate to the cancellation requests page, click through to the service page and click the '''Terminate''' module command button to remove the account from the server. The cancellation request is then moved from the ''Open Requests'' page to ''Completed Requests''.&lt;br /&gt;
&lt;br /&gt;
====Automated Cancellation====&lt;br /&gt;
If the Cancellation Request setting '''is''' enabled the cancellation request will be actioned when the daily automation cron runs on the appropriate day. For example if the ''Immediate'' option was selected it will be terminated on the next cron run, if ''End of Billing Period'' was selected it will be terminated when the cron runs on the service's Next Due Date.&lt;br /&gt;
&lt;br /&gt;
====Voiding Cancellation Requests====&lt;br /&gt;
If a Cancellation Request has been submitted by your client and they later change their mind, it is quick and easy to void their cancellation request. Simply navigate to '''Clients &amp;gt; Cancellation Requests''', locate the cancellation you wish to remove, and then click the red X next to the request to remove it. This will stop the cancellation from processing automatically. You'll need to make sure to mark any invoices that were cancelled as &amp;quot;Unpaid&amp;quot; to prevent billing errors.&lt;br /&gt;
&lt;br /&gt;
===Admin Scheduled Cancellations===&lt;br /&gt;
&lt;br /&gt;
As an admin user, you can schedule the termination of a product at the end of the currently active period by going to the Products/Services tab, ticking the '''Auto-Terminate End of Cycle''' option and optionally entering a reason/note for it. Any unpaid invoices for the product will be cancelled and will suppress any further renewal invoices from generating for this product and terminate it when the next due date is reached.&lt;br /&gt;
The &amp;quot;Cancellation Requests&amp;quot; setting in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' must also be enabled.&lt;br /&gt;
&lt;br /&gt;
===Admin Immediate Cancellation===&lt;br /&gt;
&lt;br /&gt;
Finally, if you want to cancel or terminate a product or service immediately then you simply need to locate the item you wish to cancel, and from the Products/Services page, click the '''Terminate''' button if the product is linked to a module or if not, manually change the dropdown status from Active to '''Cancelled'''.  Once you've done this, no further invoices will generate for the item.&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
When a product or service is terminated automatically by the WHMCS System, including through the above Admin Scheduled Cancellation routine, any child addon(s) attached to the product/service will also be cancelled at the same time.  Addons do not support independent scheduled cancellations of their own however.&lt;br /&gt;
&lt;br /&gt;
====Termination Date====&lt;br /&gt;
When an addon is Cancelled or Terminated, either manually via the admin interface or automatically as part of a product termination, the Termination Date will be assigned the current date automatically.&lt;br /&gt;
The termination date can be edited manually at any time via the Product Addon management screens within the admin area.&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;A termination date can only be set/edited when the addon is in one of either Terminated or Cancelled status.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Moving a Product/Service to another Client==&lt;br /&gt;
[[File:Transfer product.png|thumb|Transfer Product Popup]]&lt;br /&gt;
#From the Products/Services details page of the product you want to move, click '''Move Product/Service to Another Client''' located at the top-right of the page&lt;br /&gt;
#A popup box will appear (you will need popup blockers disabled to use this)&lt;br /&gt;
#In the popup enter the ID of the new owner. If you don't know the client's ID the Search field can be used to search by name, company or email address. Click the client's name and the ID will be filled in.&lt;br /&gt;
#After selecting the desired click, click the '''Transfer''' button&lt;br /&gt;
#The item will then be transferred, the window will close, and the original window will refresh to show the product under its new owner.&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Moving a products/service between clients within WHMCS will not have any affect on the account on the server.&lt;br /&gt;
&lt;br /&gt;
===Invoices===&lt;br /&gt;
Invoices cannot be moved between clients, therefore when moving a product/service any invoices will remain under the old owner. Therefore it would be advisable to check the old owner's Invoices tab for any unpaid invoices for this service and cancel them. If you wish to invoice the new owner for the service, move the Next Due Date forward/back by one day and a new invoice will be generated when the cron next runs.&lt;br /&gt;
&lt;br /&gt;
==Deleting a Product/Service from a Client==&lt;br /&gt;
&lt;br /&gt;
#From the Products/Services details page of the product you want to delete, scroll to the bottom and click the red '''Delete''' link&lt;br /&gt;
#After clicking this link, you will be asked to confirm if you are sure you want to delete the item&lt;br /&gt;
#If you click No you will be returned to the page, if you click Yes, the item will be deleted and you will be taken to the next product/service under that client&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Deleting a product from WHMCS will not terminate it on the server.  If you wanted to remove it from the server aswell, you need to run the Terminate Module Command as explained above before deleting the record from WHMCS.&lt;br /&gt;
&lt;br /&gt;
==Resending Product Welcome Email==&lt;br /&gt;
To re-send a product welcome email simply navigate to the client's Products/Services tab and click the &amp;quot;Resend Product Welcome Email&amp;quot; button at the bottom of the page.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Products_Management&amp;diff=30327</id>
		<title>Products Management</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Products_Management&amp;diff=30327"/>
				<updated>2021-05-24T00:26:37Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Adding Addons to Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Adding Products/Services==&lt;br /&gt;
&lt;br /&gt;
[[File:Admin-order-form.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can place a new order in the admin area via the '''Orders &amp;gt; Add New Order''' section or the Add New Order link on any Client Summary page.&lt;br /&gt;
&lt;br /&gt;
Once on the Add New Order page, you can input the order details as follows:&lt;br /&gt;
&lt;br /&gt;
# Type in the client details to select the client, if the system didn't already preselect them.&lt;br /&gt;
# Choose the payment method to use for the order and any resulting invoice.&lt;br /&gt;
# Select a promotion code to apply to the order items (if applicable).&lt;br /&gt;
# Choose the order status. Unless this is for adding an existing service that needs no provisioning, leave it as pending so that you can review the order after payment and ensure any provisioning was successful.&lt;br /&gt;
# There will be three selected options:&lt;br /&gt;
&lt;br /&gt;
*Order Confirmation — Keep this selected if you wish to send the Order Confirmation email to the client.&lt;br /&gt;
*Generate Invoice — Keep this selected if you wish to generate an invoice for the items on the order. This is useful if you are placing an order for a new service on the client's behalf or you will to manually enter an existing service but still want to invoice them right away.&lt;br /&gt;
*Send Email — Keep this selected if you wish to send the Invoice Created email whenever the system creates an invoice.&lt;br /&gt;
&lt;br /&gt;
===Product/Service===&lt;br /&gt;
You can use this section to enter the details for each product you want to add to the order, with the &amp;quot;Add New Product&amp;quot; button at the bottom, allowing you to enter multiple products on the same order. You can select the product, enter the domain name (if there is one), choose the billing cycle, select the quantity, and enter any pricing overrides (for example, if you want to give the client a hardcoded price different than what the product normally goes for without using a promotion code).&lt;br /&gt;
&lt;br /&gt;
If the billing cycle and price override fields have not changed, the system will use the pricing from the shortest configured billing cycle.&lt;br /&gt;
&lt;br /&gt;
Use the Quantity option if you want to order multiples of a single product that doesn't require any specific configuration on the initial order (such as a domain name and configurable options). For example, if you are selling a software license using our Licensing Addon and the customer wishes to receive 10 licenses, you could use 10 for the Quantity and the system will create 10 services on their account after order submission. For products that each require a domain and specific configuration, add them one by one using the &amp;quot;Add New Product&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
===Domain Registration===&lt;br /&gt;
The &amp;quot;Domain Registration&amp;quot; section can be used to include a domain name on the order. Use the radio options to select whether this is a new registration or transfer, and enter the domain in this format: yourdomain.com&lt;br /&gt;
&lt;br /&gt;
Leave the radio option at None if this order doesn't require a domain,&lt;br /&gt;
&lt;br /&gt;
For registration, the system will prompt you for the domain name, the number of years to register it for, any applicable addons, and finally any pricing overrides for the registration and future renewal amounts. If there isn't a price override, the system uses the regular price for that TLD.&lt;br /&gt;
&lt;br /&gt;
For transfers, the system will prompt you for the same details, along with the EPP Code (also commonly called the Transfer Authorization code) from the existing registrar for the domain. During the client area ordering process, the client supplies this, and you may need to obtain it from them first if it is applicable to the domain you are trying to transfer.&lt;br /&gt;
&lt;br /&gt;
For Product Only orders, fill in the Product/Service section and leave the Domain Registration section at &amp;quot;None&amp;quot; for the only entry. For Domain Only orders, you would not enter anything into the fields in the Product/Service section (Product/Service, Domain, Billing Cycle, Quantity and Price Override) and fill in the Domain Registration section.&lt;br /&gt;
&lt;br /&gt;
==Managing a Clients Products/Services==&lt;br /&gt;
&lt;br /&gt;
You can locate products/services to manage in a number of ways:&lt;br /&gt;
&lt;br /&gt;
#Search for the Client in '''Clients &amp;gt; View/Search Clients''', and then from the '''Client Summary''' page click the ID of the product you want to manage from the list&lt;br /&gt;
#Search for the Product in '''Clients &amp;gt; List All Products/Services &amp;gt; Search/Filter''', then click the product ID or domain to be taken to the product details&lt;br /&gt;
#Using the [[Admin_Area#Search|Intelligent Search]]&lt;br /&gt;
&lt;br /&gt;
The Products/Services details page inside a clients profile allows you to view and modify all of a products settings. After making any changes, you need to click the '''Save Changes''' button to save your edits.&lt;br /&gt;
&lt;br /&gt;
===Running Module Commands===&lt;br /&gt;
&lt;br /&gt;
[[File:Module-commands.png|800px]]&lt;br /&gt;
&lt;br /&gt;
If the product/service is linked to a module, you will have a Module Commands row towards the bottom of the page. This allows you to execute any of the commands available in that module.  Modules can have custom functions but the most common ones are:&lt;br /&gt;
&lt;br /&gt;
*'''Create''' - runs the creation routine and sets the product status to active&lt;br /&gt;
*'''Suspend''' - runs the suspension routine and sets the product status to suspended. You will be prompted to enter a suspension reason, leave it blank if the client has an unpaid invoice and you want the account automatically unsuspended when paid.&lt;br /&gt;
*'''Unsuspend''' - runs the unsuspension routine and sets the product status back to active&lt;br /&gt;
*'''Terminate''' - runs the termination routine and sets the product status to terminated&lt;br /&gt;
*'''Change Package''' - runs the upgrade/downgrade routine for the selected product&lt;br /&gt;
*'''Change Password''' - runs the password modification routine for the last saved password value&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
&lt;br /&gt;
*Product addons allow you to bill for additional items related to the main product but on independent billing cycles from the product (unlike Configurable Options, which have to bill on the same cycle).&lt;br /&gt;
*Addons can be preconfigured in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Product Addons]]''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Product Addons''', but you can also create custom addons for specific clients which aren't predefined for flexibility.&lt;br /&gt;
*Preconfigured addons can be ordered by clients from the client area product details page.&lt;br /&gt;
&lt;br /&gt;
====Managing Addons====&lt;br /&gt;
&lt;br /&gt;
You can manage addons for individual purchased products in the client profile.&lt;br /&gt;
* To view the list of addons for a product, select the parent product from the menu.&lt;br /&gt;
* To edit an addon, click the edit icon for that addon in the '''Addons''' list.&lt;br /&gt;
&lt;br /&gt;
====Adding Addons to Users====&lt;br /&gt;
&lt;br /&gt;
[[File:New-addon-button.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*To add a new addon, click '''Products/Services''' in Clients Profile.&lt;br /&gt;
*Next click on the link '''Click here to Manage''' beside the Addons label, and then click '''Add New Addon''' button.&lt;br /&gt;
*If using a predefined addon, simply choose it from the dropdown and leave the name, price and billing cycle fields empty as they will all be automatically set.&lt;br /&gt;
*Alternatively, if adding a custom addon specific to this client, leave the Predefined Addon set to None and enter a custom name, price and cycle.&lt;br /&gt;
*If you would like to invoice for the new addon immediately then you don't need to do anything as that will happen by default, or alternatively if you don't want to invoice yet you can just untick the generate invoice checkbox.&lt;br /&gt;
*Once happy with the selections, click '''Save Changes''' to complete the process.&lt;br /&gt;
&lt;br /&gt;
===Promotion Codes===&lt;br /&gt;
* Promotion Codes applied to an existing service via the drop-down menu&lt;br /&gt;
* Information on how to manually adjust Promotion Codes for an existing service can be found at the  [[Promotions#Manually_Applying_a_Promotion|Manually Applying a Promotion]] section. &lt;br /&gt;
&lt;br /&gt;
===Auto Recalculate Recurring Price on Save===&lt;br /&gt;
&lt;br /&gt;
*This checkbox option located to the bottom right of the product details screen updates the recurring amount field when checked&lt;br /&gt;
*It can be used after changing the product, configurable options, billing cycle or promo code to auto calculate the new recurring price&lt;br /&gt;
*It is off by default so that any discounted rates or custom pricing are not overwritten as these aren't taken into account by it&lt;br /&gt;
&lt;br /&gt;
===Overide Auto Suspension===&lt;br /&gt;
&lt;br /&gt;
*This option can be used to allow extra time for payment to be made for specific individuals&lt;br /&gt;
*It allows you to set a date to hold the suspension until and then it will only suspend if it's still unpaid when that date is reached&lt;br /&gt;
*The checkbox to enable it is at the bottom of the '''Products/Services''' details tab under a '''Clients Profile'''&lt;br /&gt;
*Tick that box and then in the date field that appears, choose the date you want to overide the auto suspension until&lt;br /&gt;
* Entering the date 00/00/0000 will permanently prevent the product from being suspended and terminated.&lt;br /&gt;
&lt;br /&gt;
==Invoicing Early==&lt;br /&gt;
&lt;br /&gt;
There may be times where a client asks for you to invoice them for the next renewal date early.  To do this in WHMCS,&lt;br /&gt;
&lt;br /&gt;
#Begin by navigating to the '''Clients Summary''' page for the client you want to invoice&lt;br /&gt;
#Now tick the boxes of the '''Products/Services/Addons''' and/or '''Domains''' you want to generate an invoice for&lt;br /&gt;
#To complete, click the '''Invoice Selected Items''' button to create the invoice(s) for them&lt;br /&gt;
#Multiple invoices may be created if the due dates and payment methods differ as invoicing rules are obeyed as normal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' You won't be able to generate another invoice if an invoice has already been made for the next due date.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' If the Separate Invoices option is enabled in the client's Profile or Client Group, when selecting multiple items here with the same Next Due Date, a single invoice will be generated.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' The status of the service, domain or addon must be Pending, Active or Suspended to generate an invoice&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Upgrades/Downgrades==&lt;br /&gt;
&lt;br /&gt;
===Admin Area===&lt;br /&gt;
&lt;br /&gt;
[[File:Upgrade button.png|thumb|Upgrade/Downgrade Button]]&lt;br /&gt;
If you would like to change the product/service a client is assigned to and automatically charge or credit the difference for that change then you need to use the Upgrade/Downgrade process. You'll find the option for this next to the Products/Services dropdown menu on the Products/Services Details page within the clients profile.  To use it, simply navigate to the product you want to change, click the Upgrade/Downgrade link, and in the popup that appears make the new product &amp;amp; billing cycle selections as required and it will give you a preview of what the charge will be for the remainder of the current cycle and allow you to create an order/invoice for that change if happy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=wXEulukuHdo&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will no immediate changes to the product after creating an upgrade order, the actual product or config option changes won't take effect until the invoice is paid. But as soon as the invoice is paid the product will be updated, the new recurring amount will be set, and with most supported control panels the upgrade is fully automated with the new package details/changes being passed over to the server module being used.  Finally the upgrade email specified in the product configuration is sent to the user advising them of the new products details.&lt;br /&gt;
&lt;br /&gt;
The same process can also be used for configurable options changes and billing the difference for those if the product contains them.&lt;br /&gt;
&lt;br /&gt;
===Client Side===&lt;br /&gt;
&lt;br /&gt;
Clients can also place orders for upgrades &amp;amp; downgrades themselves if you have permitted it in the product configuration.  This allows clients to order upgrades/downgrades and complete them automatically without the need for any staff involvement.&lt;br /&gt;
&lt;br /&gt;
For more information, including how to allow clients upgrades and how the upgrade charges are calculated, please refer to the [[Automated Upgrades and Downgrades]] section&lt;br /&gt;
&lt;br /&gt;
===Manual Upgrades===&lt;br /&gt;
There may be occasion when you wish to make an upgrade without placing an upgrade order (such as a free upgrade) or processing the upgrade before the client has paid for it. To achieve this:&lt;br /&gt;
&lt;br /&gt;
#Navigate to the client's Products/Services tab,&lt;br /&gt;
#Change the product from the dropdown menu,&lt;br /&gt;
#Tick &amp;quot;Auto Recalculate on Save&amp;quot; checkbox,&lt;br /&gt;
#Click Save Changes,&lt;br /&gt;
#Finally click the &amp;quot;Change Package &amp;quot; Module Command button to make the change on the server.&lt;br /&gt;
&lt;br /&gt;
==Bulk Actions==&lt;br /&gt;
&lt;br /&gt;
[[File:Bulk-actions.png|thumb|Bulk Actions Tool]]&lt;br /&gt;
The bulk actions option in WHMCS allows you to perform changes to two or more products inside a client's profile at the same time. The changes can consist of adjustments to the status, payment method, override auto-suspend date, first payment amount, recurring amount, next due date, and billing cycle. For example, you can use this option if you want to reduce a client's price on a number of separate products to the same level, execute module commands in bulk, or if you would like to bring multiple services in line to a matching due date.&lt;br /&gt;
&lt;br /&gt;
To use this feature, from the Clients Summary page, tick the checkboxes next to the '''Products/Services''', '''Addons''' and/or '''Domains''' you want to update. The bulk actions will display under the item lists. Additional actions can be viewed by clicking '''Show Advanced Options'''. Enter any changes you wish to make (leaving blank any fields you don't want to change) and click '''Apply''' to complete the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=WLLsQML6rEU&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create Prorata Invoice===&lt;br /&gt;
This useful feature means that when changing the Next Due Date of a product/service/addon/domain a pro-rated invoice is created covering the period between the current next due date and the new one. It even works when the various products have different next due dates to start with and will pro-rate each accordingly as separate line items on the invoice. &lt;br /&gt;
&lt;br /&gt;
To use simply specify the new Next Due Date and tick the '''Create Prorata Invoice''' checkbox before clicking '''Apply'''.&lt;br /&gt;
&lt;br /&gt;
For example take two products that the client now wishes to pay on the 10th of the month going forward:&lt;br /&gt;
&lt;br /&gt;
 Product A - Next Due Date 01/01/2012 @ $30/month&lt;br /&gt;
 Product B - Next Due Date 05/01/2012 @ $60/month&lt;br /&gt;
&lt;br /&gt;
Set the Next Due Date to 10/01/2012 and tick the checkbox, an invoice with the following line items will be generated:&lt;br /&gt;
&lt;br /&gt;
 Product A (01/01/2012 - 09/01/2012) $8.00&lt;br /&gt;
 Product B (05/01/2012 - 09/01/2012) $10.00&lt;br /&gt;
 Total Due Today $18.00&lt;br /&gt;
&lt;br /&gt;
Only once paid will the Next Due Dates for both products be updated and in future both products would be invoiced on the 10th January.&lt;br /&gt;
&lt;br /&gt;
==Cancelling a Product/Service==&lt;br /&gt;
&lt;br /&gt;
===Auto Terminate/Fixed Term===&lt;br /&gt;
You can setup products to automatically terminate after a set number of days from the date of signup. For more information refer to [[Products_and_Services#Pricing_Tab|Configuring Products/Services]].&lt;br /&gt;
&lt;br /&gt;
===Clients Self Service===&lt;br /&gt;
WHMCS can completely automate the process of product cancellation or wait for manual confirmation. To do this navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Other''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Other''', and enable the '''Show Cancellation Link''' option.&lt;br /&gt;
&lt;br /&gt;
Clients can then request cancellation of any of their products &amp;amp; services directly from the client area.&lt;br /&gt;
&lt;br /&gt;
To fully automate cancellation and have the module terminate command run (for example to remove the hosting account from the server) check '''Cancellation Requests''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' option.&lt;br /&gt;
&lt;br /&gt;
Now when the cron runs any services with a cancellation request due today will be removed from the server and the status changed in WHMCS to Cancelled. The process runs as follows:&lt;br /&gt;
&lt;br /&gt;
*Client clicks ''Request Cancellation'' button on the product details page in client area&lt;br /&gt;
*They're prompted to provide a cancellation reason and provided 2 choices for the cancellation - either '''Instant''' (on next cron run) or at the '''End of the Current Billing Cycle'''.&lt;br /&gt;
*If a matching domain exists under the client's account in active status with ''Auto Renew'' enabled, the customer is given the option to disable auto renew too - thereby leaving the domain to expire.&lt;br /&gt;
*Any unpaid invoices for the product will be cancelled ([[Invoice_Tab#Cancellation_Request_Handling|if enabled]])&lt;br /&gt;
*A notification email is sent to administrators and you will be able to review the reason provided in '''Clients &amp;gt; Cancellation Requests'''.&lt;br /&gt;
&lt;br /&gt;
====Manual Cancellation====&lt;br /&gt;
If the Cancellation Request setting is '''not''' enabled then at this point you must navigate to the cancellation requests page, click through to the service page and click the '''Terminate''' module command button to remove the account from the server. The cancellation request is then moved from the ''Open Requests'' page to ''Completed Requests''.&lt;br /&gt;
&lt;br /&gt;
====Automated Cancellation====&lt;br /&gt;
If the Cancellation Request setting '''is''' enabled the cancellation request will be actioned when the daily automation cron runs on the appropriate day. For example if the ''Immediate'' option was selected it will be terminated on the next cron run, if ''End of Billing Period'' was selected it will be terminated when the cron runs on the service's Next Due Date.&lt;br /&gt;
&lt;br /&gt;
====Voiding Cancellation Requests====&lt;br /&gt;
If a Cancellation Request has been submitted by your client and they later change their mind, it is quick and easy to void their cancellation request. Simply navigate to '''Clients &amp;gt; Cancellation Requests''', locate the cancellation you wish to remove, and then click the red X next to the request to remove it. This will stop the cancellation from processing automatically. You'll need to make sure to mark any invoices that were cancelled as &amp;quot;Unpaid&amp;quot; to prevent billing errors.&lt;br /&gt;
&lt;br /&gt;
===Admin Scheduled Cancellations===&lt;br /&gt;
&lt;br /&gt;
As an admin user, you can schedule the termination of a product at the end of the currently active period by going to the Products/Services tab, ticking the '''Auto-Terminate End of Cycle''' option and optionally entering a reason/note for it. Any unpaid invoices for the product will be cancelled and will suppress any further renewal invoices from generating for this product and terminate it when the next due date is reached.&lt;br /&gt;
The &amp;quot;Cancellation Requests&amp;quot; setting in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' must also be enabled.&lt;br /&gt;
&lt;br /&gt;
===Admin Immediate Cancellation===&lt;br /&gt;
&lt;br /&gt;
Finally, if you want to cancel or terminate a product or service immediately then you simply need to locate the item you wish to cancel, and from the Products/Services page, click the '''Terminate''' button if the product is linked to a module or if not, manually change the dropdown status from Active to '''Cancelled'''.  Once you've done this, no further invoices will generate for the item.&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
When a product or service is terminated automatically by the WHMCS System, including through the above Admin Scheduled Cancellation routine, any child addon(s) attached to the product/service will also be cancelled at the same time.  Addons do not support independent scheduled cancellations of their own however.&lt;br /&gt;
&lt;br /&gt;
====Termination Date====&lt;br /&gt;
When an addon is Cancelled or Terminated, either manually via the admin interface or automatically as part of a product termination, the Termination Date will be assigned the current date automatically.&lt;br /&gt;
The termination date can be edited manually at any time via the Product Addon management screens within the admin area.&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;A termination date can only be set/edited when the addon is in one of either Terminated or Cancelled status.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Moving a Product/Service to another Client==&lt;br /&gt;
[[File:Transfer product.png|thumb|Transfer Product Popup]]&lt;br /&gt;
#From the Products/Services details page of the product you want to move, click '''Move Product/Service to Another Client''' located at the top-right of the page&lt;br /&gt;
#A popup box will appear (you will need popup blockers disabled to use this)&lt;br /&gt;
#In the popup enter the ID of the new owner. If you don't know the client's ID the Search field can be used to search by name, company or email address. Click the client's name and the ID will be filled in.&lt;br /&gt;
#After selecting the desired click, click the '''Transfer''' button&lt;br /&gt;
#The item will then be transferred, the window will close, and the original window will refresh to show the product under its new owner.&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Moving a products/service between clients within WHMCS will not have any affect on the account on the server.&lt;br /&gt;
&lt;br /&gt;
===Invoices===&lt;br /&gt;
Invoices cannot be moved between clients, therefore when moving a product/service any invoices will remain under the old owner. Therefore it would be advisable to check the old owner's Invoices tab for any unpaid invoices for this service and cancel them. If you wish to invoice the new owner for the service, move the Next Due Date forward/back by one day and a new invoice will be generated when the cron next runs.&lt;br /&gt;
&lt;br /&gt;
==Deleting a Product/Service from a Client==&lt;br /&gt;
&lt;br /&gt;
#From the Products/Services details page of the product you want to delete, scroll to the bottom and click the red '''Delete''' link&lt;br /&gt;
#After clicking this link, you will be asked to confirm if you are sure you want to delete the item&lt;br /&gt;
#If you click No you will be returned to the page, if you click Yes, the item will be deleted and you will be taken to the next product/service under that client&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Deleting a product from WHMCS will not terminate it on the server.  If you wanted to remove it from the server aswell, you need to run the Terminate Module Command as explained above before deleting the record from WHMCS.&lt;br /&gt;
&lt;br /&gt;
==Resending Product Welcome Email==&lt;br /&gt;
To re-send a product welcome email simply navigate to the client's Products/Services tab and click the &amp;quot;Resend Product Welcome Email&amp;quot; button at the bottom of the page.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Products_Management&amp;diff=30326</id>
		<title>Products Management</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Products_Management&amp;diff=30326"/>
				<updated>2021-05-24T00:26:06Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Running Module Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Adding Products/Services==&lt;br /&gt;
&lt;br /&gt;
[[File:Admin-order-form.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can place a new order in the admin area via the '''Orders &amp;gt; Add New Order''' section or the Add New Order link on any Client Summary page.&lt;br /&gt;
&lt;br /&gt;
Once on the Add New Order page, you can input the order details as follows:&lt;br /&gt;
&lt;br /&gt;
# Type in the client details to select the client, if the system didn't already preselect them.&lt;br /&gt;
# Choose the payment method to use for the order and any resulting invoice.&lt;br /&gt;
# Select a promotion code to apply to the order items (if applicable).&lt;br /&gt;
# Choose the order status. Unless this is for adding an existing service that needs no provisioning, leave it as pending so that you can review the order after payment and ensure any provisioning was successful.&lt;br /&gt;
# There will be three selected options:&lt;br /&gt;
&lt;br /&gt;
*Order Confirmation — Keep this selected if you wish to send the Order Confirmation email to the client.&lt;br /&gt;
*Generate Invoice — Keep this selected if you wish to generate an invoice for the items on the order. This is useful if you are placing an order for a new service on the client's behalf or you will to manually enter an existing service but still want to invoice them right away.&lt;br /&gt;
*Send Email — Keep this selected if you wish to send the Invoice Created email whenever the system creates an invoice.&lt;br /&gt;
&lt;br /&gt;
===Product/Service===&lt;br /&gt;
You can use this section to enter the details for each product you want to add to the order, with the &amp;quot;Add New Product&amp;quot; button at the bottom, allowing you to enter multiple products on the same order. You can select the product, enter the domain name (if there is one), choose the billing cycle, select the quantity, and enter any pricing overrides (for example, if you want to give the client a hardcoded price different than what the product normally goes for without using a promotion code).&lt;br /&gt;
&lt;br /&gt;
If the billing cycle and price override fields have not changed, the system will use the pricing from the shortest configured billing cycle.&lt;br /&gt;
&lt;br /&gt;
Use the Quantity option if you want to order multiples of a single product that doesn't require any specific configuration on the initial order (such as a domain name and configurable options). For example, if you are selling a software license using our Licensing Addon and the customer wishes to receive 10 licenses, you could use 10 for the Quantity and the system will create 10 services on their account after order submission. For products that each require a domain and specific configuration, add them one by one using the &amp;quot;Add New Product&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
===Domain Registration===&lt;br /&gt;
The &amp;quot;Domain Registration&amp;quot; section can be used to include a domain name on the order. Use the radio options to select whether this is a new registration or transfer, and enter the domain in this format: yourdomain.com&lt;br /&gt;
&lt;br /&gt;
Leave the radio option at None if this order doesn't require a domain,&lt;br /&gt;
&lt;br /&gt;
For registration, the system will prompt you for the domain name, the number of years to register it for, any applicable addons, and finally any pricing overrides for the registration and future renewal amounts. If there isn't a price override, the system uses the regular price for that TLD.&lt;br /&gt;
&lt;br /&gt;
For transfers, the system will prompt you for the same details, along with the EPP Code (also commonly called the Transfer Authorization code) from the existing registrar for the domain. During the client area ordering process, the client supplies this, and you may need to obtain it from them first if it is applicable to the domain you are trying to transfer.&lt;br /&gt;
&lt;br /&gt;
For Product Only orders, fill in the Product/Service section and leave the Domain Registration section at &amp;quot;None&amp;quot; for the only entry. For Domain Only orders, you would not enter anything into the fields in the Product/Service section (Product/Service, Domain, Billing Cycle, Quantity and Price Override) and fill in the Domain Registration section.&lt;br /&gt;
&lt;br /&gt;
==Managing a Clients Products/Services==&lt;br /&gt;
&lt;br /&gt;
You can locate products/services to manage in a number of ways:&lt;br /&gt;
&lt;br /&gt;
#Search for the Client in '''Clients &amp;gt; View/Search Clients''', and then from the '''Client Summary''' page click the ID of the product you want to manage from the list&lt;br /&gt;
#Search for the Product in '''Clients &amp;gt; List All Products/Services &amp;gt; Search/Filter''', then click the product ID or domain to be taken to the product details&lt;br /&gt;
#Using the [[Admin_Area#Search|Intelligent Search]]&lt;br /&gt;
&lt;br /&gt;
The Products/Services details page inside a clients profile allows you to view and modify all of a products settings. After making any changes, you need to click the '''Save Changes''' button to save your edits.&lt;br /&gt;
&lt;br /&gt;
===Running Module Commands===&lt;br /&gt;
&lt;br /&gt;
[[File:Module-commands.png|800px]]&lt;br /&gt;
&lt;br /&gt;
If the product/service is linked to a module, you will have a Module Commands row towards the bottom of the page. This allows you to execute any of the commands available in that module.  Modules can have custom functions but the most common ones are:&lt;br /&gt;
&lt;br /&gt;
*'''Create''' - runs the creation routine and sets the product status to active&lt;br /&gt;
*'''Suspend''' - runs the suspension routine and sets the product status to suspended. You will be prompted to enter a suspension reason, leave it blank if the client has an unpaid invoice and you want the account automatically unsuspended when paid.&lt;br /&gt;
*'''Unsuspend''' - runs the unsuspension routine and sets the product status back to active&lt;br /&gt;
*'''Terminate''' - runs the termination routine and sets the product status to terminated&lt;br /&gt;
*'''Change Package''' - runs the upgrade/downgrade routine for the selected product&lt;br /&gt;
*'''Change Password''' - runs the password modification routine for the last saved password value&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
&lt;br /&gt;
*Product addons allow you to bill for additional items related to the main product but on independent billing cycles from the product (unlike Configurable Options, which have to bill on the same cycle).&lt;br /&gt;
*Addons can be preconfigured in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Product Addons]]''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Product Addons''', but you can also create custom addons for specific clients which aren't predefined for flexibility.&lt;br /&gt;
*Preconfigured addons can be ordered by clients from the client area product details page.&lt;br /&gt;
&lt;br /&gt;
====Managing Addons====&lt;br /&gt;
&lt;br /&gt;
You can manage addons for individual purchased products in the client profile.&lt;br /&gt;
* To view the list of addons for a product, select the parent product from the menu.&lt;br /&gt;
* To edit an addon, click the edit icon for that addon in the '''Addons''' list.&lt;br /&gt;
&lt;br /&gt;
====Adding Addons to Users====&lt;br /&gt;
&lt;br /&gt;
*To add a new addon, click '''Products/Services''' in Clients Profile.&lt;br /&gt;
*Next click on the link '''Click here to Manage''' beside the Addons label, and then click '''Add New Addon''' button.&lt;br /&gt;
*If using a predefined addon, simply choose it from the dropdown and leave the name, price and billing cycle fields empty as they will all be automatically set.&lt;br /&gt;
*Alternatively, if adding a custom addon specific to this client, leave the Predefined Addon set to None and enter a custom name, price and cycle.&lt;br /&gt;
*If you would like to invoice for the new addon immediately then you don't need to do anything as that will happen by default, or alternatively if you don't want to invoice yet you can just untick the generate invoice checkbox.&lt;br /&gt;
*Once happy with the selections, click '''Save Changes''' to complete the process.&lt;br /&gt;
&lt;br /&gt;
===Promotion Codes===&lt;br /&gt;
* Promotion Codes applied to an existing service via the drop-down menu&lt;br /&gt;
* Information on how to manually adjust Promotion Codes for an existing service can be found at the  [[Promotions#Manually_Applying_a_Promotion|Manually Applying a Promotion]] section. &lt;br /&gt;
&lt;br /&gt;
===Auto Recalculate Recurring Price on Save===&lt;br /&gt;
&lt;br /&gt;
*This checkbox option located to the bottom right of the product details screen updates the recurring amount field when checked&lt;br /&gt;
*It can be used after changing the product, configurable options, billing cycle or promo code to auto calculate the new recurring price&lt;br /&gt;
*It is off by default so that any discounted rates or custom pricing are not overwritten as these aren't taken into account by it&lt;br /&gt;
&lt;br /&gt;
===Overide Auto Suspension===&lt;br /&gt;
&lt;br /&gt;
*This option can be used to allow extra time for payment to be made for specific individuals&lt;br /&gt;
*It allows you to set a date to hold the suspension until and then it will only suspend if it's still unpaid when that date is reached&lt;br /&gt;
*The checkbox to enable it is at the bottom of the '''Products/Services''' details tab under a '''Clients Profile'''&lt;br /&gt;
*Tick that box and then in the date field that appears, choose the date you want to overide the auto suspension until&lt;br /&gt;
* Entering the date 00/00/0000 will permanently prevent the product from being suspended and terminated.&lt;br /&gt;
&lt;br /&gt;
==Invoicing Early==&lt;br /&gt;
&lt;br /&gt;
There may be times where a client asks for you to invoice them for the next renewal date early.  To do this in WHMCS,&lt;br /&gt;
&lt;br /&gt;
#Begin by navigating to the '''Clients Summary''' page for the client you want to invoice&lt;br /&gt;
#Now tick the boxes of the '''Products/Services/Addons''' and/or '''Domains''' you want to generate an invoice for&lt;br /&gt;
#To complete, click the '''Invoice Selected Items''' button to create the invoice(s) for them&lt;br /&gt;
#Multiple invoices may be created if the due dates and payment methods differ as invoicing rules are obeyed as normal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' You won't be able to generate another invoice if an invoice has already been made for the next due date.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' If the Separate Invoices option is enabled in the client's Profile or Client Group, when selecting multiple items here with the same Next Due Date, a single invoice will be generated.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' The status of the service, domain or addon must be Pending, Active or Suspended to generate an invoice&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Upgrades/Downgrades==&lt;br /&gt;
&lt;br /&gt;
===Admin Area===&lt;br /&gt;
&lt;br /&gt;
[[File:Upgrade button.png|thumb|Upgrade/Downgrade Button]]&lt;br /&gt;
If you would like to change the product/service a client is assigned to and automatically charge or credit the difference for that change then you need to use the Upgrade/Downgrade process. You'll find the option for this next to the Products/Services dropdown menu on the Products/Services Details page within the clients profile.  To use it, simply navigate to the product you want to change, click the Upgrade/Downgrade link, and in the popup that appears make the new product &amp;amp; billing cycle selections as required and it will give you a preview of what the charge will be for the remainder of the current cycle and allow you to create an order/invoice for that change if happy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=wXEulukuHdo&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will no immediate changes to the product after creating an upgrade order, the actual product or config option changes won't take effect until the invoice is paid. But as soon as the invoice is paid the product will be updated, the new recurring amount will be set, and with most supported control panels the upgrade is fully automated with the new package details/changes being passed over to the server module being used.  Finally the upgrade email specified in the product configuration is sent to the user advising them of the new products details.&lt;br /&gt;
&lt;br /&gt;
The same process can also be used for configurable options changes and billing the difference for those if the product contains them.&lt;br /&gt;
&lt;br /&gt;
===Client Side===&lt;br /&gt;
&lt;br /&gt;
Clients can also place orders for upgrades &amp;amp; downgrades themselves if you have permitted it in the product configuration.  This allows clients to order upgrades/downgrades and complete them automatically without the need for any staff involvement.&lt;br /&gt;
&lt;br /&gt;
For more information, including how to allow clients upgrades and how the upgrade charges are calculated, please refer to the [[Automated Upgrades and Downgrades]] section&lt;br /&gt;
&lt;br /&gt;
===Manual Upgrades===&lt;br /&gt;
There may be occasion when you wish to make an upgrade without placing an upgrade order (such as a free upgrade) or processing the upgrade before the client has paid for it. To achieve this:&lt;br /&gt;
&lt;br /&gt;
#Navigate to the client's Products/Services tab,&lt;br /&gt;
#Change the product from the dropdown menu,&lt;br /&gt;
#Tick &amp;quot;Auto Recalculate on Save&amp;quot; checkbox,&lt;br /&gt;
#Click Save Changes,&lt;br /&gt;
#Finally click the &amp;quot;Change Package &amp;quot; Module Command button to make the change on the server.&lt;br /&gt;
&lt;br /&gt;
==Bulk Actions==&lt;br /&gt;
&lt;br /&gt;
[[File:Bulk-actions.png|thumb|Bulk Actions Tool]]&lt;br /&gt;
The bulk actions option in WHMCS allows you to perform changes to two or more products inside a client's profile at the same time. The changes can consist of adjustments to the status, payment method, override auto-suspend date, first payment amount, recurring amount, next due date, and billing cycle. For example, you can use this option if you want to reduce a client's price on a number of separate products to the same level, execute module commands in bulk, or if you would like to bring multiple services in line to a matching due date.&lt;br /&gt;
&lt;br /&gt;
To use this feature, from the Clients Summary page, tick the checkboxes next to the '''Products/Services''', '''Addons''' and/or '''Domains''' you want to update. The bulk actions will display under the item lists. Additional actions can be viewed by clicking '''Show Advanced Options'''. Enter any changes you wish to make (leaving blank any fields you don't want to change) and click '''Apply''' to complete the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=WLLsQML6rEU&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create Prorata Invoice===&lt;br /&gt;
This useful feature means that when changing the Next Due Date of a product/service/addon/domain a pro-rated invoice is created covering the period between the current next due date and the new one. It even works when the various products have different next due dates to start with and will pro-rate each accordingly as separate line items on the invoice. &lt;br /&gt;
&lt;br /&gt;
To use simply specify the new Next Due Date and tick the '''Create Prorata Invoice''' checkbox before clicking '''Apply'''.&lt;br /&gt;
&lt;br /&gt;
For example take two products that the client now wishes to pay on the 10th of the month going forward:&lt;br /&gt;
&lt;br /&gt;
 Product A - Next Due Date 01/01/2012 @ $30/month&lt;br /&gt;
 Product B - Next Due Date 05/01/2012 @ $60/month&lt;br /&gt;
&lt;br /&gt;
Set the Next Due Date to 10/01/2012 and tick the checkbox, an invoice with the following line items will be generated:&lt;br /&gt;
&lt;br /&gt;
 Product A (01/01/2012 - 09/01/2012) $8.00&lt;br /&gt;
 Product B (05/01/2012 - 09/01/2012) $10.00&lt;br /&gt;
 Total Due Today $18.00&lt;br /&gt;
&lt;br /&gt;
Only once paid will the Next Due Dates for both products be updated and in future both products would be invoiced on the 10th January.&lt;br /&gt;
&lt;br /&gt;
==Cancelling a Product/Service==&lt;br /&gt;
&lt;br /&gt;
===Auto Terminate/Fixed Term===&lt;br /&gt;
You can setup products to automatically terminate after a set number of days from the date of signup. For more information refer to [[Products_and_Services#Pricing_Tab|Configuring Products/Services]].&lt;br /&gt;
&lt;br /&gt;
===Clients Self Service===&lt;br /&gt;
WHMCS can completely automate the process of product cancellation or wait for manual confirmation. To do this navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Other''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Other''', and enable the '''Show Cancellation Link''' option.&lt;br /&gt;
&lt;br /&gt;
Clients can then request cancellation of any of their products &amp;amp; services directly from the client area.&lt;br /&gt;
&lt;br /&gt;
To fully automate cancellation and have the module terminate command run (for example to remove the hosting account from the server) check '''Cancellation Requests''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' option.&lt;br /&gt;
&lt;br /&gt;
Now when the cron runs any services with a cancellation request due today will be removed from the server and the status changed in WHMCS to Cancelled. The process runs as follows:&lt;br /&gt;
&lt;br /&gt;
*Client clicks ''Request Cancellation'' button on the product details page in client area&lt;br /&gt;
*They're prompted to provide a cancellation reason and provided 2 choices for the cancellation - either '''Instant''' (on next cron run) or at the '''End of the Current Billing Cycle'''.&lt;br /&gt;
*If a matching domain exists under the client's account in active status with ''Auto Renew'' enabled, the customer is given the option to disable auto renew too - thereby leaving the domain to expire.&lt;br /&gt;
*Any unpaid invoices for the product will be cancelled ([[Invoice_Tab#Cancellation_Request_Handling|if enabled]])&lt;br /&gt;
*A notification email is sent to administrators and you will be able to review the reason provided in '''Clients &amp;gt; Cancellation Requests'''.&lt;br /&gt;
&lt;br /&gt;
====Manual Cancellation====&lt;br /&gt;
If the Cancellation Request setting is '''not''' enabled then at this point you must navigate to the cancellation requests page, click through to the service page and click the '''Terminate''' module command button to remove the account from the server. The cancellation request is then moved from the ''Open Requests'' page to ''Completed Requests''.&lt;br /&gt;
&lt;br /&gt;
====Automated Cancellation====&lt;br /&gt;
If the Cancellation Request setting '''is''' enabled the cancellation request will be actioned when the daily automation cron runs on the appropriate day. For example if the ''Immediate'' option was selected it will be terminated on the next cron run, if ''End of Billing Period'' was selected it will be terminated when the cron runs on the service's Next Due Date.&lt;br /&gt;
&lt;br /&gt;
====Voiding Cancellation Requests====&lt;br /&gt;
If a Cancellation Request has been submitted by your client and they later change their mind, it is quick and easy to void their cancellation request. Simply navigate to '''Clients &amp;gt; Cancellation Requests''', locate the cancellation you wish to remove, and then click the red X next to the request to remove it. This will stop the cancellation from processing automatically. You'll need to make sure to mark any invoices that were cancelled as &amp;quot;Unpaid&amp;quot; to prevent billing errors.&lt;br /&gt;
&lt;br /&gt;
===Admin Scheduled Cancellations===&lt;br /&gt;
&lt;br /&gt;
As an admin user, you can schedule the termination of a product at the end of the currently active period by going to the Products/Services tab, ticking the '''Auto-Terminate End of Cycle''' option and optionally entering a reason/note for it. Any unpaid invoices for the product will be cancelled and will suppress any further renewal invoices from generating for this product and terminate it when the next due date is reached.&lt;br /&gt;
The &amp;quot;Cancellation Requests&amp;quot; setting in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' must also be enabled.&lt;br /&gt;
&lt;br /&gt;
===Admin Immediate Cancellation===&lt;br /&gt;
&lt;br /&gt;
Finally, if you want to cancel or terminate a product or service immediately then you simply need to locate the item you wish to cancel, and from the Products/Services page, click the '''Terminate''' button if the product is linked to a module or if not, manually change the dropdown status from Active to '''Cancelled'''.  Once you've done this, no further invoices will generate for the item.&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
When a product or service is terminated automatically by the WHMCS System, including through the above Admin Scheduled Cancellation routine, any child addon(s) attached to the product/service will also be cancelled at the same time.  Addons do not support independent scheduled cancellations of their own however.&lt;br /&gt;
&lt;br /&gt;
====Termination Date====&lt;br /&gt;
When an addon is Cancelled or Terminated, either manually via the admin interface or automatically as part of a product termination, the Termination Date will be assigned the current date automatically.&lt;br /&gt;
The termination date can be edited manually at any time via the Product Addon management screens within the admin area.&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;A termination date can only be set/edited when the addon is in one of either Terminated or Cancelled status.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Moving a Product/Service to another Client==&lt;br /&gt;
[[File:Transfer product.png|thumb|Transfer Product Popup]]&lt;br /&gt;
#From the Products/Services details page of the product you want to move, click '''Move Product/Service to Another Client''' located at the top-right of the page&lt;br /&gt;
#A popup box will appear (you will need popup blockers disabled to use this)&lt;br /&gt;
#In the popup enter the ID of the new owner. If you don't know the client's ID the Search field can be used to search by name, company or email address. Click the client's name and the ID will be filled in.&lt;br /&gt;
#After selecting the desired click, click the '''Transfer''' button&lt;br /&gt;
#The item will then be transferred, the window will close, and the original window will refresh to show the product under its new owner.&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Moving a products/service between clients within WHMCS will not have any affect on the account on the server.&lt;br /&gt;
&lt;br /&gt;
===Invoices===&lt;br /&gt;
Invoices cannot be moved between clients, therefore when moving a product/service any invoices will remain under the old owner. Therefore it would be advisable to check the old owner's Invoices tab for any unpaid invoices for this service and cancel them. If you wish to invoice the new owner for the service, move the Next Due Date forward/back by one day and a new invoice will be generated when the cron next runs.&lt;br /&gt;
&lt;br /&gt;
==Deleting a Product/Service from a Client==&lt;br /&gt;
&lt;br /&gt;
#From the Products/Services details page of the product you want to delete, scroll to the bottom and click the red '''Delete''' link&lt;br /&gt;
#After clicking this link, you will be asked to confirm if you are sure you want to delete the item&lt;br /&gt;
#If you click No you will be returned to the page, if you click Yes, the item will be deleted and you will be taken to the next product/service under that client&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Deleting a product from WHMCS will not terminate it on the server.  If you wanted to remove it from the server aswell, you need to run the Terminate Module Command as explained above before deleting the record from WHMCS.&lt;br /&gt;
&lt;br /&gt;
==Resending Product Welcome Email==&lt;br /&gt;
To re-send a product welcome email simply navigate to the client's Products/Services tab and click the &amp;quot;Resend Product Welcome Email&amp;quot; button at the bottom of the page.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Products_Management&amp;diff=30325</id>
		<title>Products Management</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Products_Management&amp;diff=30325"/>
				<updated>2021-05-24T00:25:26Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Adding Products/Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Adding Products/Services==&lt;br /&gt;
&lt;br /&gt;
[[File:Admin-order-form.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can place a new order in the admin area via the '''Orders &amp;gt; Add New Order''' section or the Add New Order link on any Client Summary page.&lt;br /&gt;
&lt;br /&gt;
Once on the Add New Order page, you can input the order details as follows:&lt;br /&gt;
&lt;br /&gt;
# Type in the client details to select the client, if the system didn't already preselect them.&lt;br /&gt;
# Choose the payment method to use for the order and any resulting invoice.&lt;br /&gt;
# Select a promotion code to apply to the order items (if applicable).&lt;br /&gt;
# Choose the order status. Unless this is for adding an existing service that needs no provisioning, leave it as pending so that you can review the order after payment and ensure any provisioning was successful.&lt;br /&gt;
# There will be three selected options:&lt;br /&gt;
&lt;br /&gt;
*Order Confirmation — Keep this selected if you wish to send the Order Confirmation email to the client.&lt;br /&gt;
*Generate Invoice — Keep this selected if you wish to generate an invoice for the items on the order. This is useful if you are placing an order for a new service on the client's behalf or you will to manually enter an existing service but still want to invoice them right away.&lt;br /&gt;
*Send Email — Keep this selected if you wish to send the Invoice Created email whenever the system creates an invoice.&lt;br /&gt;
&lt;br /&gt;
===Product/Service===&lt;br /&gt;
You can use this section to enter the details for each product you want to add to the order, with the &amp;quot;Add New Product&amp;quot; button at the bottom, allowing you to enter multiple products on the same order. You can select the product, enter the domain name (if there is one), choose the billing cycle, select the quantity, and enter any pricing overrides (for example, if you want to give the client a hardcoded price different than what the product normally goes for without using a promotion code).&lt;br /&gt;
&lt;br /&gt;
If the billing cycle and price override fields have not changed, the system will use the pricing from the shortest configured billing cycle.&lt;br /&gt;
&lt;br /&gt;
Use the Quantity option if you want to order multiples of a single product that doesn't require any specific configuration on the initial order (such as a domain name and configurable options). For example, if you are selling a software license using our Licensing Addon and the customer wishes to receive 10 licenses, you could use 10 for the Quantity and the system will create 10 services on their account after order submission. For products that each require a domain and specific configuration, add them one by one using the &amp;quot;Add New Product&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
===Domain Registration===&lt;br /&gt;
The &amp;quot;Domain Registration&amp;quot; section can be used to include a domain name on the order. Use the radio options to select whether this is a new registration or transfer, and enter the domain in this format: yourdomain.com&lt;br /&gt;
&lt;br /&gt;
Leave the radio option at None if this order doesn't require a domain,&lt;br /&gt;
&lt;br /&gt;
For registration, the system will prompt you for the domain name, the number of years to register it for, any applicable addons, and finally any pricing overrides for the registration and future renewal amounts. If there isn't a price override, the system uses the regular price for that TLD.&lt;br /&gt;
&lt;br /&gt;
For transfers, the system will prompt you for the same details, along with the EPP Code (also commonly called the Transfer Authorization code) from the existing registrar for the domain. During the client area ordering process, the client supplies this, and you may need to obtain it from them first if it is applicable to the domain you are trying to transfer.&lt;br /&gt;
&lt;br /&gt;
For Product Only orders, fill in the Product/Service section and leave the Domain Registration section at &amp;quot;None&amp;quot; for the only entry. For Domain Only orders, you would not enter anything into the fields in the Product/Service section (Product/Service, Domain, Billing Cycle, Quantity and Price Override) and fill in the Domain Registration section.&lt;br /&gt;
&lt;br /&gt;
==Managing a Clients Products/Services==&lt;br /&gt;
&lt;br /&gt;
You can locate products/services to manage in a number of ways:&lt;br /&gt;
&lt;br /&gt;
#Search for the Client in '''Clients &amp;gt; View/Search Clients''', and then from the '''Client Summary''' page click the ID of the product you want to manage from the list&lt;br /&gt;
#Search for the Product in '''Clients &amp;gt; List All Products/Services &amp;gt; Search/Filter''', then click the product ID or domain to be taken to the product details&lt;br /&gt;
#Using the [[Admin_Area#Search|Intelligent Search]]&lt;br /&gt;
&lt;br /&gt;
The Products/Services details page inside a clients profile allows you to view and modify all of a products settings. After making any changes, you need to click the '''Save Changes''' button to save your edits.&lt;br /&gt;
&lt;br /&gt;
===Running Module Commands===&lt;br /&gt;
&lt;br /&gt;
If the product/service is linked to a module, you will have a Module Commands row towards the bottom of the page. This allows you to execute any of the commands available in that module.  Modules can have custom functions but the most common ones are:&lt;br /&gt;
&lt;br /&gt;
*'''Create''' - runs the creation routine and sets the product status to active&lt;br /&gt;
*'''Suspend''' - runs the suspension routine and sets the product status to suspended. You will be prompted to enter a suspension reason, leave it blank if the client has an unpaid invoice and you want the account automatically unsuspended when paid.&lt;br /&gt;
*'''Unsuspend''' - runs the unsuspension routine and sets the product status back to active&lt;br /&gt;
*'''Terminate''' - runs the termination routine and sets the product status to terminated&lt;br /&gt;
*'''Change Package''' - runs the upgrade/downgrade routine for the selected product&lt;br /&gt;
*'''Change Password''' - runs the password modification routine for the last saved password value&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
&lt;br /&gt;
*Product addons allow you to bill for additional items related to the main product but on independent billing cycles from the product (unlike Configurable Options, which have to bill on the same cycle).&lt;br /&gt;
*Addons can be preconfigured in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; [[Product Addons]]''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Product Addons''', but you can also create custom addons for specific clients which aren't predefined for flexibility.&lt;br /&gt;
*Preconfigured addons can be ordered by clients from the client area product details page.&lt;br /&gt;
&lt;br /&gt;
====Managing Addons====&lt;br /&gt;
&lt;br /&gt;
You can manage addons for individual purchased products in the client profile.&lt;br /&gt;
* To view the list of addons for a product, select the parent product from the menu.&lt;br /&gt;
* To edit an addon, click the edit icon for that addon in the '''Addons''' list.&lt;br /&gt;
&lt;br /&gt;
====Adding Addons to Users====&lt;br /&gt;
&lt;br /&gt;
*To add a new addon, click '''Products/Services''' in Clients Profile.&lt;br /&gt;
*Next click on the link '''Click here to Manage''' beside the Addons label, and then click '''Add New Addon''' button.&lt;br /&gt;
*If using a predefined addon, simply choose it from the dropdown and leave the name, price and billing cycle fields empty as they will all be automatically set.&lt;br /&gt;
*Alternatively, if adding a custom addon specific to this client, leave the Predefined Addon set to None and enter a custom name, price and cycle.&lt;br /&gt;
*If you would like to invoice for the new addon immediately then you don't need to do anything as that will happen by default, or alternatively if you don't want to invoice yet you can just untick the generate invoice checkbox.&lt;br /&gt;
*Once happy with the selections, click '''Save Changes''' to complete the process.&lt;br /&gt;
&lt;br /&gt;
===Promotion Codes===&lt;br /&gt;
* Promotion Codes applied to an existing service via the drop-down menu&lt;br /&gt;
* Information on how to manually adjust Promotion Codes for an existing service can be found at the  [[Promotions#Manually_Applying_a_Promotion|Manually Applying a Promotion]] section. &lt;br /&gt;
&lt;br /&gt;
===Auto Recalculate Recurring Price on Save===&lt;br /&gt;
&lt;br /&gt;
*This checkbox option located to the bottom right of the product details screen updates the recurring amount field when checked&lt;br /&gt;
*It can be used after changing the product, configurable options, billing cycle or promo code to auto calculate the new recurring price&lt;br /&gt;
*It is off by default so that any discounted rates or custom pricing are not overwritten as these aren't taken into account by it&lt;br /&gt;
&lt;br /&gt;
===Overide Auto Suspension===&lt;br /&gt;
&lt;br /&gt;
*This option can be used to allow extra time for payment to be made for specific individuals&lt;br /&gt;
*It allows you to set a date to hold the suspension until and then it will only suspend if it's still unpaid when that date is reached&lt;br /&gt;
*The checkbox to enable it is at the bottom of the '''Products/Services''' details tab under a '''Clients Profile'''&lt;br /&gt;
*Tick that box and then in the date field that appears, choose the date you want to overide the auto suspension until&lt;br /&gt;
* Entering the date 00/00/0000 will permanently prevent the product from being suspended and terminated.&lt;br /&gt;
&lt;br /&gt;
==Invoicing Early==&lt;br /&gt;
&lt;br /&gt;
There may be times where a client asks for you to invoice them for the next renewal date early.  To do this in WHMCS,&lt;br /&gt;
&lt;br /&gt;
#Begin by navigating to the '''Clients Summary''' page for the client you want to invoice&lt;br /&gt;
#Now tick the boxes of the '''Products/Services/Addons''' and/or '''Domains''' you want to generate an invoice for&lt;br /&gt;
#To complete, click the '''Invoice Selected Items''' button to create the invoice(s) for them&lt;br /&gt;
#Multiple invoices may be created if the due dates and payment methods differ as invoicing rules are obeyed as normal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' You won't be able to generate another invoice if an invoice has already been made for the next due date.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' If the Separate Invoices option is enabled in the client's Profile or Client Group, when selecting multiple items here with the same Next Due Date, a single invoice will be generated.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;'''Note:''' The status of the service, domain or addon must be Pending, Active or Suspended to generate an invoice&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Upgrades/Downgrades==&lt;br /&gt;
&lt;br /&gt;
===Admin Area===&lt;br /&gt;
&lt;br /&gt;
[[File:Upgrade button.png|thumb|Upgrade/Downgrade Button]]&lt;br /&gt;
If you would like to change the product/service a client is assigned to and automatically charge or credit the difference for that change then you need to use the Upgrade/Downgrade process. You'll find the option for this next to the Products/Services dropdown menu on the Products/Services Details page within the clients profile.  To use it, simply navigate to the product you want to change, click the Upgrade/Downgrade link, and in the popup that appears make the new product &amp;amp; billing cycle selections as required and it will give you a preview of what the charge will be for the remainder of the current cycle and allow you to create an order/invoice for that change if happy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=wXEulukuHdo&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There will no immediate changes to the product after creating an upgrade order, the actual product or config option changes won't take effect until the invoice is paid. But as soon as the invoice is paid the product will be updated, the new recurring amount will be set, and with most supported control panels the upgrade is fully automated with the new package details/changes being passed over to the server module being used.  Finally the upgrade email specified in the product configuration is sent to the user advising them of the new products details.&lt;br /&gt;
&lt;br /&gt;
The same process can also be used for configurable options changes and billing the difference for those if the product contains them.&lt;br /&gt;
&lt;br /&gt;
===Client Side===&lt;br /&gt;
&lt;br /&gt;
Clients can also place orders for upgrades &amp;amp; downgrades themselves if you have permitted it in the product configuration.  This allows clients to order upgrades/downgrades and complete them automatically without the need for any staff involvement.&lt;br /&gt;
&lt;br /&gt;
For more information, including how to allow clients upgrades and how the upgrade charges are calculated, please refer to the [[Automated Upgrades and Downgrades]] section&lt;br /&gt;
&lt;br /&gt;
===Manual Upgrades===&lt;br /&gt;
There may be occasion when you wish to make an upgrade without placing an upgrade order (such as a free upgrade) or processing the upgrade before the client has paid for it. To achieve this:&lt;br /&gt;
&lt;br /&gt;
#Navigate to the client's Products/Services tab,&lt;br /&gt;
#Change the product from the dropdown menu,&lt;br /&gt;
#Tick &amp;quot;Auto Recalculate on Save&amp;quot; checkbox,&lt;br /&gt;
#Click Save Changes,&lt;br /&gt;
#Finally click the &amp;quot;Change Package &amp;quot; Module Command button to make the change on the server.&lt;br /&gt;
&lt;br /&gt;
==Bulk Actions==&lt;br /&gt;
&lt;br /&gt;
[[File:Bulk-actions.png|thumb|Bulk Actions Tool]]&lt;br /&gt;
The bulk actions option in WHMCS allows you to perform changes to two or more products inside a client's profile at the same time. The changes can consist of adjustments to the status, payment method, override auto-suspend date, first payment amount, recurring amount, next due date, and billing cycle. For example, you can use this option if you want to reduce a client's price on a number of separate products to the same level, execute module commands in bulk, or if you would like to bring multiple services in line to a matching due date.&lt;br /&gt;
&lt;br /&gt;
To use this feature, from the Clients Summary page, tick the checkboxes next to the '''Products/Services''', '''Addons''' and/or '''Domains''' you want to update. The bulk actions will display under the item lists. Additional actions can be viewed by clicking '''Show Advanced Options'''. Enter any changes you wish to make (leaving blank any fields you don't want to change) and click '''Apply''' to complete the changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=WLLsQML6rEU&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt;&amp;amp;nbsp;&amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create Prorata Invoice===&lt;br /&gt;
This useful feature means that when changing the Next Due Date of a product/service/addon/domain a pro-rated invoice is created covering the period between the current next due date and the new one. It even works when the various products have different next due dates to start with and will pro-rate each accordingly as separate line items on the invoice. &lt;br /&gt;
&lt;br /&gt;
To use simply specify the new Next Due Date and tick the '''Create Prorata Invoice''' checkbox before clicking '''Apply'''.&lt;br /&gt;
&lt;br /&gt;
For example take two products that the client now wishes to pay on the 10th of the month going forward:&lt;br /&gt;
&lt;br /&gt;
 Product A - Next Due Date 01/01/2012 @ $30/month&lt;br /&gt;
 Product B - Next Due Date 05/01/2012 @ $60/month&lt;br /&gt;
&lt;br /&gt;
Set the Next Due Date to 10/01/2012 and tick the checkbox, an invoice with the following line items will be generated:&lt;br /&gt;
&lt;br /&gt;
 Product A (01/01/2012 - 09/01/2012) $8.00&lt;br /&gt;
 Product B (05/01/2012 - 09/01/2012) $10.00&lt;br /&gt;
 Total Due Today $18.00&lt;br /&gt;
&lt;br /&gt;
Only once paid will the Next Due Dates for both products be updated and in future both products would be invoiced on the 10th January.&lt;br /&gt;
&lt;br /&gt;
==Cancelling a Product/Service==&lt;br /&gt;
&lt;br /&gt;
===Auto Terminate/Fixed Term===&lt;br /&gt;
You can setup products to automatically terminate after a set number of days from the date of signup. For more information refer to [[Products_and_Services#Pricing_Tab|Configuring Products/Services]].&lt;br /&gt;
&lt;br /&gt;
===Clients Self Service===&lt;br /&gt;
WHMCS can completely automate the process of product cancellation or wait for manual confirmation. To do this navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Other''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Other''', and enable the '''Show Cancellation Link''' option.&lt;br /&gt;
&lt;br /&gt;
Clients can then request cancellation of any of their products &amp;amp; services directly from the client area.&lt;br /&gt;
&lt;br /&gt;
To fully automate cancellation and have the module terminate command run (for example to remove the hosting account from the server) check '''Cancellation Requests''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' option.&lt;br /&gt;
&lt;br /&gt;
Now when the cron runs any services with a cancellation request due today will be removed from the server and the status changed in WHMCS to Cancelled. The process runs as follows:&lt;br /&gt;
&lt;br /&gt;
*Client clicks ''Request Cancellation'' button on the product details page in client area&lt;br /&gt;
*They're prompted to provide a cancellation reason and provided 2 choices for the cancellation - either '''Instant''' (on next cron run) or at the '''End of the Current Billing Cycle'''.&lt;br /&gt;
*If a matching domain exists under the client's account in active status with ''Auto Renew'' enabled, the customer is given the option to disable auto renew too - thereby leaving the domain to expire.&lt;br /&gt;
*Any unpaid invoices for the product will be cancelled ([[Invoice_Tab#Cancellation_Request_Handling|if enabled]])&lt;br /&gt;
*A notification email is sent to administrators and you will be able to review the reason provided in '''Clients &amp;gt; Cancellation Requests'''.&lt;br /&gt;
&lt;br /&gt;
====Manual Cancellation====&lt;br /&gt;
If the Cancellation Request setting is '''not''' enabled then at this point you must navigate to the cancellation requests page, click through to the service page and click the '''Terminate''' module command button to remove the account from the server. The cancellation request is then moved from the ''Open Requests'' page to ''Completed Requests''.&lt;br /&gt;
&lt;br /&gt;
====Automated Cancellation====&lt;br /&gt;
If the Cancellation Request setting '''is''' enabled the cancellation request will be actioned when the daily automation cron runs on the appropriate day. For example if the ''Immediate'' option was selected it will be terminated on the next cron run, if ''End of Billing Period'' was selected it will be terminated when the cron runs on the service's Next Due Date.&lt;br /&gt;
&lt;br /&gt;
====Voiding Cancellation Requests====&lt;br /&gt;
If a Cancellation Request has been submitted by your client and they later change their mind, it is quick and easy to void their cancellation request. Simply navigate to '''Clients &amp;gt; Cancellation Requests''', locate the cancellation you wish to remove, and then click the red X next to the request to remove it. This will stop the cancellation from processing automatically. You'll need to make sure to mark any invoices that were cancelled as &amp;quot;Unpaid&amp;quot; to prevent billing errors.&lt;br /&gt;
&lt;br /&gt;
===Admin Scheduled Cancellations===&lt;br /&gt;
&lt;br /&gt;
As an admin user, you can schedule the termination of a product at the end of the currently active period by going to the Products/Services tab, ticking the '''Auto-Terminate End of Cycle''' option and optionally entering a reason/note for it. Any unpaid invoices for the product will be cancelled and will suppress any further renewal invoices from generating for this product and terminate it when the next due date is reached.&lt;br /&gt;
The &amp;quot;Cancellation Requests&amp;quot; setting in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings''' must also be enabled.&lt;br /&gt;
&lt;br /&gt;
===Admin Immediate Cancellation===&lt;br /&gt;
&lt;br /&gt;
Finally, if you want to cancel or terminate a product or service immediately then you simply need to locate the item you wish to cancel, and from the Products/Services page, click the '''Terminate''' button if the product is linked to a module or if not, manually change the dropdown status from Active to '''Cancelled'''.  Once you've done this, no further invoices will generate for the item.&lt;br /&gt;
&lt;br /&gt;
===Addons===&lt;br /&gt;
When a product or service is terminated automatically by the WHMCS System, including through the above Admin Scheduled Cancellation routine, any child addon(s) attached to the product/service will also be cancelled at the same time.  Addons do not support independent scheduled cancellations of their own however.&lt;br /&gt;
&lt;br /&gt;
====Termination Date====&lt;br /&gt;
When an addon is Cancelled or Terminated, either manually via the admin interface or automatically as part of a product termination, the Termination Date will be assigned the current date automatically.&lt;br /&gt;
The termination date can be edited manually at any time via the Product Addon management screens within the admin area.&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;A termination date can only be set/edited when the addon is in one of either Terminated or Cancelled status.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Moving a Product/Service to another Client==&lt;br /&gt;
[[File:Transfer product.png|thumb|Transfer Product Popup]]&lt;br /&gt;
#From the Products/Services details page of the product you want to move, click '''Move Product/Service to Another Client''' located at the top-right of the page&lt;br /&gt;
#A popup box will appear (you will need popup blockers disabled to use this)&lt;br /&gt;
#In the popup enter the ID of the new owner. If you don't know the client's ID the Search field can be used to search by name, company or email address. Click the client's name and the ID will be filled in.&lt;br /&gt;
#After selecting the desired click, click the '''Transfer''' button&lt;br /&gt;
#The item will then be transferred, the window will close, and the original window will refresh to show the product under its new owner.&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Moving a products/service between clients within WHMCS will not have any affect on the account on the server.&lt;br /&gt;
&lt;br /&gt;
===Invoices===&lt;br /&gt;
Invoices cannot be moved between clients, therefore when moving a product/service any invoices will remain under the old owner. Therefore it would be advisable to check the old owner's Invoices tab for any unpaid invoices for this service and cancel them. If you wish to invoice the new owner for the service, move the Next Due Date forward/back by one day and a new invoice will be generated when the cron next runs.&lt;br /&gt;
&lt;br /&gt;
==Deleting a Product/Service from a Client==&lt;br /&gt;
&lt;br /&gt;
#From the Products/Services details page of the product you want to delete, scroll to the bottom and click the red '''Delete''' link&lt;br /&gt;
#After clicking this link, you will be asked to confirm if you are sure you want to delete the item&lt;br /&gt;
#If you click No you will be returned to the page, if you click Yes, the item will be deleted and you will be taken to the next product/service under that client&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Deleting a product from WHMCS will not terminate it on the server.  If you wanted to remove it from the server aswell, you need to run the Terminate Module Command as explained above before deleting the record from WHMCS.&lt;br /&gt;
&lt;br /&gt;
==Resending Product Welcome Email==&lt;br /&gt;
To re-send a product welcome email simply navigate to the client's Products/Services tab and click the &amp;quot;Resend Product Welcome Email&amp;quot; button at the bottom of the page.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Request-cancellation-form.png&amp;diff=30324</id>
		<title>File:Request-cancellation-form.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Request-cancellation-form.png&amp;diff=30324"/>
				<updated>2021-05-24T00:23:02Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Request-cancellation-highlighted.png&amp;diff=30323</id>
		<title>File:Request-cancellation-highlighted.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Request-cancellation-highlighted.png&amp;diff=30323"/>
				<updated>2021-05-24T00:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Invoicing-early.png&amp;diff=30322</id>
		<title>File:Invoicing-early.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Invoicing-early.png&amp;diff=30322"/>
				<updated>2021-05-24T00:22:32Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Managing-addon.png&amp;diff=30321</id>
		<title>File:Managing-addon.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Managing-addon.png&amp;diff=30321"/>
				<updated>2021-05-24T00:22:05Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:New-addon-button.png&amp;diff=30320</id>
		<title>File:New-addon-button.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:New-addon-button.png&amp;diff=30320"/>
				<updated>2021-05-24T00:21:43Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Module-commands.png&amp;diff=30319</id>
		<title>File:Module-commands.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Module-commands.png&amp;diff=30319"/>
				<updated>2021-05-24T00:21:21Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=File:Admin-order-form.png&amp;diff=30318</id>
		<title>File:Admin-order-form.png</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=File:Admin-order-form.png&amp;diff=30318"/>
				<updated>2021-05-24T00:20:59Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Customising_the_Admin_Directory&amp;diff=30112</id>
		<title>Customising the Admin Directory</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Customising_the_Admin_Directory&amp;diff=30112"/>
				<updated>2021-04-19T19:32:12Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Errors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Customising the name of your WHMCS admin directory makes it harder for bots and other malicious users to find your admin login url.&lt;br /&gt;
&lt;br /&gt;
==Renaming Your Admin Directory==&lt;br /&gt;
&lt;br /&gt;
The WHMCS software requires to know the name of the admin directory in order to function, so if you wish to change it, follow the steps below:&lt;br /&gt;
&lt;br /&gt;
# Open the '''configuration.php''' file within your WHMCS installation's root directory&lt;br /&gt;
# At the bottom of the file (before the closing PHP tag ?&amp;gt; if one exists), add the following line:&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$customadminpath = &amp;quot;mycustomfoldername&amp;quot;;&amp;lt;/source&amp;gt;&lt;br /&gt;
# Replacing mycustomfoldername with the name you wish to use for your admin directory. This should just be the directory name, not a full path.&lt;br /&gt;
# If your configuration.php file already contains a custom admin path definition, you can simply update the existing line&lt;br /&gt;
# Rename the admin directory to the name you specified in step 2 above&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
* You cannot move the admin directory outside of the WHMCS folder tree - you can rename it, but not move it&lt;br /&gt;
* The admin directory name may only contain alphanumeric a-z 0-9 latin characters as well as dashes(-) and underscores(_)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Important Note for Upgrading&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Remember! If you customise the name of your WHMCS admin directory, when it comes to applying updates or patches, it is important to remember to upload any files contained within the default &amp;quot;admin&amp;quot; directory in the distribution zip files to your custom admin directory folder. Failure to do this will result in unexpected behaviour.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
&lt;br /&gt;
Should WHMCS detect a conflict between your settings and the admin directory path you are trying to access, you will see one of the error messages below.  Details of how to resolve each one are provided.&lt;br /&gt;
&lt;br /&gt;
===You are attempting to access the admin area via a directory that is not configured.===&lt;br /&gt;
'''Please either revert to the default admin directory name, or see our documentation for Customising the Admin Directory'''&lt;br /&gt;
&lt;br /&gt;
Seeing this error message indicates that you have not yet added the $customadminpath line to your WHMCS configuration.php file, or it has been done incorrectly.  Please follow the steps above again. If you continue to experience the error message even after that, revert your admin directory name to the default &amp;quot;admin&amp;quot; name to regain access and contact our support team for assistance.&lt;br /&gt;
&lt;br /&gt;
===You are attempting to access the admin area via a directory that is different from the one configured.===&lt;br /&gt;
'''Please refer to the Customising the Admin Directory documentation for instructions on how to update it.'''&lt;br /&gt;
&lt;br /&gt;
Seeing this error message indicates that the directory name you are attempting to access your admin area via is different to the value specified in the $customadminpath variable inside of your WHMCS configuration.php file. Follow the steps above in order to update it.&lt;br /&gt;
&lt;br /&gt;
===You are attempting to access the admin area via a custom directory, but we have detected the presence of a default &amp;quot;admin&amp;quot; directory too.===&lt;br /&gt;
'''This could indicate files from a recent update have been uploaded to the default admin path location instead of the custom one, resulting in these files being out of date. Please ensure your custom admin folder contains all the latest files, and delete the default admin directory to continue.'''&lt;br /&gt;
&lt;br /&gt;
Seeing this error message indicates that you have a custom admin directory path defined, and are attempting to access your WHMCS installation using it, but WHMCS has also detected the presence of a default &amp;quot;admin&amp;quot; directory too.  Typically this indicates that an update has recently been applied and some of the files from that update have been uploaded to the default &amp;quot;admin&amp;quot; directory path.  In doing this, it means the files you are using in your custom admin directory are not up-to-date which can lead to unexpected errors and consequences.  Please ensure you have uploaded all of the latest files to your custom admin directory location and then delete the default &amp;quot;admin&amp;quot; directory.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Quotes&amp;diff=30110</id>
		<title>Quotes</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Quotes&amp;diff=30110"/>
				<updated>2021-04-18T19:21:24Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quotes allow you to send estimates to potential customers to review and if they accept, WHMCS can instantly convert them into invoices for you.&lt;br /&gt;
&lt;br /&gt;
==Creating a Quote==&lt;br /&gt;
To create a new quote:&lt;br /&gt;
#Go to Billing &amp;gt; Quotes &amp;gt; Create New Quote.&lt;br /&gt;
#Enter a subject for the quote (the client will be able to see this) and alter the creation and valid to dates, if necessary. They will default to today's date and one month in the future, respectively, by default.&lt;br /&gt;
#Next, choose whether the quote is for an existing client or a new client. If it's for a new client, you can enter their details. The system will only create an account for the client if or when the quote becomes an invoice.&lt;br /&gt;
#You are now ready to add the first line item to the quote.  For each item, you need to set a quantity, description, unit price and discount percentage. The system calculates the total as &amp;lt;tt&amp;gt;quantity x unit price - discount %&amp;lt;/tt&amp;gt;.  If you want to add more lines to the quote, click the Save Changes button and a new line entry will appear. Note that the &amp;quot;Add a predefined product&amp;quot; option will pull in the product name, group, and price. However, it will not link the quote to the product. After the client accepts and pays for the quote, you will need to add these items to the client using a new order via the Add New Order option on the Client Summary page.&lt;br /&gt;
#At the bottom of the page, you can set customer notes and admin only notes.  Customer notes will display on the quote to the client and admin only notes will never display for the client.&lt;br /&gt;
&lt;br /&gt;
==Delivering a Quote==&lt;br /&gt;
Once you create a quote, you will want to email it to the customer.  You do this by clicking the Email as PDF button.  This option is disabled until you first save the quote (if adding a new one).  The system will change the Quote Stage to Delivered automatically once you send the email.  If you want to deliver it yourself via a ticket that's open with the customer, or another means, then you can also download the PDF quote to send it yourself.&lt;br /&gt;
&lt;br /&gt;
==Accepting a Quote==&lt;br /&gt;
[[File:Convert to invoice1.png|thumb|Convert Quote to Invoice]]&lt;br /&gt;
Once the client accepts the quote, the system automatically marks it as Accepted in your Admin Area. However, you will need to convert the quote into an invoice (as well as create the client account if a new customer).  WHMCS automates this process for you by clicking the '''Convert to Invoice''' button on the quote viewing page.&lt;br /&gt;
&lt;br /&gt;
You have the choice of generating a single invoice for the entire amount or splitting it into two invoices (a deposit and final payment). This is useful for large amounts or design jobs.&lt;br /&gt;
&lt;br /&gt;
Select the ''Send Invoice Notification Email'' checkbox to send an invoice created notification email to the client. If you select the split option, the system immediately sends a notification email for both invoices.&lt;br /&gt;
&lt;br /&gt;
==Duplicating a Quote==&lt;br /&gt;
It is possible to duplicate a quote when viewing it with the Duplicate button.  You might want to do this if you want to keep a record of the previous drafts of the said quote rather than altering them directly.&lt;br /&gt;
&lt;br /&gt;
==Closing a Quote==&lt;br /&gt;
If a customer rejects a quote, you can close the quote by setting the Stage menu to Lost or Dead.&lt;br /&gt;
&lt;br /&gt;
==Customising the Quote Format==&lt;br /&gt;
The quote is delivered as a PDF file, similar to the PDF invoices. You can customise the layout of the PDF in the same way you can with the [[PDF Invoice]].  The template file that controls the quote is &amp;quot;quotepdf.tpl&amp;quot; in your active template folder (templates/xxxxx).&lt;br /&gt;
&lt;br /&gt;
==Header &amp;amp; Footer==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;This section describes a feature available in version 7.0 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to add a header or footer that is automatically repeated on every page of a multi-page PDF quote. If they are present in your theme, the system will include the following template files for every rendered PDF page:&lt;br /&gt;
&lt;br /&gt;
* quotepdfheader.tpl&lt;br /&gt;
* quotepdffooter.tpl&lt;br /&gt;
&lt;br /&gt;
The system only requires the respective header or footer files. For example, for a customized footer on each page, create a '''quotepdffooter.tpl''' file. You must store these files in the same directory as the '''quotepdf.tpl''' template file. During template processing, Smarty will provide each of these template files the same variables as '''quotepdf.tpl'''.&lt;br /&gt;
&lt;br /&gt;
==Client Area==&lt;br /&gt;
[[File:ca-quotes.png|thumb|Client Area Quotes]]&lt;br /&gt;
Clients can view all their quotes at any time via the My Quotes page of the client area. Each quote displays the ID number, subject, creation and valid until dates and the status. To download the PDF containing the full details, click the View/Download link.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=GoCardless&amp;diff=30103</id>
		<title>GoCardless</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=GoCardless&amp;diff=30103"/>
				<updated>2021-04-08T18:40:31Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{gateways&lt;br /&gt;
| onetime = yes&lt;br /&gt;
| recurring = yes&lt;br /&gt;
| reversals = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This page describes a payment gateway available in WHMCS version 7.7 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://gocardless.com GoCardless] is a payment gateway which allows for direct debit payments to be automated electronically.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
To activate the GoCardless module in WHMCS, navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Payments &amp;gt; Payment Gateways'''. Then, choose GoCardless from the All Payment Gateways tab.&lt;br /&gt;
&lt;br /&gt;
Upon clicking, you will be redirected to link you account to WHMCS GoCardless App. On the page displayed, it is possible to sign-up for a new account or sign-in to an existing account. Once signed up, you will be redirected back to your WHMCS installation where you can customise the display name of the module.&lt;br /&gt;
&lt;br /&gt;
====Automatic Configuration====&lt;br /&gt;
There is no manual configuration required for the GoCardless Payment Module. All configuration fields will be filled automatically when redirected back to the WHMCS installation.&lt;br /&gt;
&lt;br /&gt;
[[File:Gocardless-config.png]]&lt;br /&gt;
&lt;br /&gt;
For each supported currency and scheme enabled a custom name can be defined that will be displayed to clients wherever the available payment gateways are listed. This allows for naming that provides a more friendly and recognisable name based on the customers location, for example &amp;quot;Direct Debit&amp;quot; for UK/GBP customers, &amp;quot;ACH&amp;quot; for US/USD customers, etc...&lt;br /&gt;
&lt;br /&gt;
===Supported Currencies===&lt;br /&gt;
GoCardless only support the following currencies: 'AUD', 'CAD', 'DKK',  'EUR',  'GBP', 'NZD', 'SEK', and 'USD'. Any clients not using one of these currencies will be unable to make a payment using GoCardless and will receive an appropriate message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Support for USD was added in WHMCS 7.9.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SSL Requirement===&lt;br /&gt;
&lt;br /&gt;
GoCardless requires an HTTPS secured connection for the WHMCS installation that customers will be returned to following setup of a mandate.  If the domain your WHMCS installation is installed on does not have a valid SSL Certificate, the payment return will not work.&lt;br /&gt;
&lt;br /&gt;
If you need to purchase an SSL Certificate, you can do so at [https://www.whmcs.com/ssl-certificates www.whmcs.com/ssl-certificates]&lt;br /&gt;
&lt;br /&gt;
==Payment Workflow==&lt;br /&gt;
When the first payment is made, a mandate is set up with the client's bank. This typically takes a few days, so the invoice will change from '''Unpaid''' to '''Payment Pending''' status.&lt;br /&gt;
At this point you can view the mandate details and expected payment completion date by viewing the invoice. As soon as the mandate is set up and the first payment has cleared, the invoice's status will change to '''Paid''' and the service will be provisioned by WHMCS automatically.&lt;br /&gt;
&lt;br /&gt;
When the renewal invoice is generated for a recurring service, a capture attempt will be made against the mandate in accordance with '''Process Days Before Due''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings'''. As it can take a few days for the payment to complete, we recommend a setting of '''3'''. This way, 3 days before the invoice '''Due Date''', the payment process will be initiated by the cron and the invoice status updated from '''Unpaid''' to '''Payment Pending'''. Payment should then complete on the invoice '''Due Date''' and the invoice will be marked '''Paid''' once the payment has cleared.&lt;br /&gt;
&lt;br /&gt;
==Charge Date Preference==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This section describes a feature available in WHMCS version 8.0 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
By default, payment capture attempts will set the GoCardless Charge Date to the due date for an invoice. Enabling this setting on the GoCardless module will instead initiate the payment capture immediately.&lt;br /&gt;
&lt;br /&gt;
To do, navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Payments &amp;gt; Payment Gateways'''. Click the '''Manage Existing Gateways''' tab. Tick the &amp;quot;Charge Date Preference&amp;quot; box and save changes.&lt;br /&gt;
&lt;br /&gt;
==Reversed Payments==&lt;br /&gt;
&lt;br /&gt;
The Direct Debit Guarantee scheme allows the payee to file a claim for any payment taken in error. WHMCS will monitor for ''charged_back'' events from GoCardless and will automatically process these as appropriate.&lt;br /&gt;
&lt;br /&gt;
To learn more, visit [[Payment Reversals]]&lt;br /&gt;
&lt;br /&gt;
==Reinstate Mandate==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This section describes a feature available in WHMCS version 7.8 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;title&amp;quot;&amp;gt;Permission Required:&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Reinstating Mandates requires specific permission from GoCardless&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
When a mandate has been accidentally cancelled, WHMCS can initiate steps to reinstate the mandate without having the client set it up again.&lt;br /&gt;
Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt;  Payments &amp;gt; Payment Gateways'''. Click the '''Manage Existing Gateways''' tab. Click on the '''Manage Cancelled Mandates''' button and follow the instructions in the modal that appears to reinstate a cancelled mandate.&lt;br /&gt;
&lt;br /&gt;
==Import Existing Mandates==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; This section describes a feature available in WHMCS version 7.8 and above.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info-circle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; If any of the mandates being imported are set to be automatically charged by GoCardless, that will need to be disabled to prevent possible duplicate charges.&amp;lt;/div&amp;gt;&lt;br /&gt;
For mandates that have been setup outside of WHMCS, they can be imported and associated with a client.&lt;br /&gt;
Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt;  Payments &amp;gt; Payment Gateways'''. Click the '''Manage Existing Gateways''' tab.&lt;br /&gt;
Click on the '''Import Existing Mandates''' button and follow the instructions in the modal that appears to import a active mandate to a specific client.&lt;br /&gt;
&lt;br /&gt;
==Reconfiguring Callbacks==&lt;br /&gt;
After moving WHMCS, it is important that you navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Payment Gateways''' or, prior to WHMCS 8.0, '''Setup &amp;gt;  Payments &amp;gt; Payment Gateways''' and click '''Configure GoCardless Account Connection''' and sign back in using the same details. This will ensure that the new System URL and Gateway callback file URL are stored and used for existing and new mandates going forward.&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Currencies&amp;diff=30097</id>
		<title>Currencies</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Currencies&amp;diff=30097"/>
				<updated>2021-04-05T15:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WHMCS supports all global currencies as well as syncing of product prices across currencies.= Currency support applies to all currency values throughout WHMCS, like product and addon pricing. It's included in your WHMCS experience automatically, with no need to enable or disable any settings.&lt;br /&gt;
 &lt;br /&gt;
You can configure the currencies in WHMCS at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Currencies''', or, prior to WHMCS 8.0, '''Setup &amp;gt; Payments &amp;gt; Currencies'''.&lt;br /&gt;
 &lt;br /&gt;
WHMCS 8.0 includes improved currency support to allow you to enter larger numbers, up to 99 trillion (14 to the left of the decimal and 2 to the right). This allows you to easily work with currencies with large values like Indonesian Rupiahs (IDR), which are (at the time of this document's writing) valued at 14,830.85 IDR to 1 USD.&lt;br /&gt;
 &lt;br /&gt;
[[File:Currency99Trillion.png|600px|Currency Values Up To 99 Trillion]]&lt;br /&gt;
 &lt;br /&gt;
==Changing the Default Currency==&lt;br /&gt;
By default, the base currency is USD. Change it to your home currency if it's not USD. You can then add additional currencies.&lt;br /&gt;
 &lt;br /&gt;
You can find a guide to changing the system default currency [https://help.whmcs.com/m/payments/l/1122770-changing-the-default-currency here].&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;https://www.youtube.com/watch?v=Px1WjlmGDLw&amp;amp;hd=1&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt; &amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Adding/Editing a Currency==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;a href=&amp;quot;http://www.youtube.com/watch?v=LFTVqImvPHw&amp;amp;hd=1&amp;quot; class=&amp;quot;docs-video-tutorial&amp;quot;&amp;gt;&amp;lt;em&amp;gt;Watch the video tutorial for this feature&amp;lt;/em&amp;gt;&amp;lt;span&amp;gt; &amp;lt;img src=&amp;quot;https://assets.whmcs.com/icons/youtube.png&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The fields for adding or editing a currency are the same:&lt;br /&gt;
 &lt;br /&gt;
*Currency Code — The standard three-letter ISO-4217 code that payment gateways use.&lt;br /&gt;
*Prefix — The text or symbol to display before the amount.&lt;br /&gt;
*Suffix — The text or symbol to display after the amount.&lt;br /&gt;
*Format — The format style for currencies.&lt;br /&gt;
*Base Conv. Rate — The rate by which to divide amounts in this currency to get to the base currency. For example, USD to GBP could be 1.5.&lt;br /&gt;
 &lt;br /&gt;
===Choosing the Currency Format===&lt;br /&gt;
A range of different currency formats are offered to match the styling customs of monetary amounts in different currencies from which you can choose.&lt;br /&gt;
&lt;br /&gt;
The following non-decimal currencies must use the '''1,2345''' currency format:&lt;br /&gt;
 BYR, BIF, CLP, KMF, DJF', HUF, ISK,&lt;br /&gt;
 JP', MGA, MZN, PYG, RWF, KRW, VUV,&lt;br /&gt;
&lt;br /&gt;
===Manually Setting the Base Conversion Rate===&lt;br /&gt;
#Go to [http://www.xe.com/ucc/ The Universal Currency Converter].&lt;br /&gt;
#Select your default currency in '''From this currency'''.&lt;br /&gt;
#Select your second currency from '''To this currency'''.&lt;br /&gt;
#Click '''Go'''.&lt;br /&gt;
 &lt;br /&gt;
The base conversion rate will appear. For example:&lt;br /&gt;
 &lt;br /&gt;
[[Image:Bcr1.png]]&lt;br /&gt;
 &lt;br /&gt;
The first currency is the default. If you want to define a default currency, you must edit the currency code and set it to the new default currency.&lt;br /&gt;
&lt;br /&gt;
==Auto Updating Rates==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&lt;br /&gt;
WHMCS uses the ECB API to retrieve exchange rates. Only the currencies listed below are supported for Auto Updating Rates.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WHMCS has the built-in capability to retrieve and update the base conversion rate values daily for the following currencies:&lt;br /&gt;
 &lt;br /&gt;
USD, EUR, JPY, BGN, CZK, DKK, EEK, GBP, HUF, LTL, LVL, PLN, RON, SEK, CHF, NOK, HRK, RUB, TRY, AUD, BRL, CAD, CNY, HKD, IDR, INR, KRW, MXN, MYR, NZD, PHP, SGD, THB, and ZAR&lt;br /&gt;
 &lt;br /&gt;
For a full list of international currency codes, [http://en.wikipedia.org/wiki/ISO_4217 view ISO-4217].&lt;br /&gt;
 &lt;br /&gt;
You can manually sync the rates using '''Update Exchange Rates'''. You can configure automation with the daily cron in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''', or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings'''.&lt;br /&gt;
 &lt;br /&gt;
==Auto Updating Prices==&lt;br /&gt;
 &lt;br /&gt;
You can also automatically update prices in currencies other than the base rate using the rates you set. To do this, click '''Update Product Prices'''. You can also set this to run after the daily rates update at '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Automation Settings''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Automation Settings'''.&lt;br /&gt;
 &lt;br /&gt;
==Specifying Currency in a link==&lt;br /&gt;
 &lt;br /&gt;
You can link to the order form with a specific currency by adding the required actions to the URL. For example, &amp;lt;tt&amp;gt;cart.php?currency=1&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;cart.php?currency=2&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
'''Exchange Rates Update Results - Update Failed for MAD Exchange Rate'''&lt;br /&gt;
&lt;br /&gt;
You may encounter this error if the currency is not a supported currency in the Auto Updating Rates listed above. Double check and ensure that a supported currency is being used.&lt;br /&gt;
&lt;br /&gt;
If the currency is not supported for auto-updating, the Base Conversion Rate can be updated manually via&amp;lt;br&amp;gt;&lt;br /&gt;
'''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Currencies &amp;gt; Edit'''.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Security_Questions&amp;diff=30093</id>
		<title>Security Questions</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Security_Questions&amp;diff=30093"/>
				<updated>2021-03-30T18:36:00Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can use security questions as an extra level of security when your clients contact you, in order to verify their identify. You can then prompt them for the answer to the question they selected.&lt;br /&gt;
&lt;br /&gt;
When resetting their password from the client area, the system will prompt the client to select their security question and enter the answer before creation of a new password.&lt;br /&gt;
&lt;br /&gt;
You will need to add your security questions before your clients can use this feature. To do that, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Security Questions'''. From here, you can see your existing security questions and how many clients are using them, add new questions, and delete any unused questions.&lt;br /&gt;
&lt;br /&gt;
To add a new question, type in the available text box and press save changes. This will add the security question to the system.&lt;br /&gt;
&lt;br /&gt;
The system prompts clients to choose and answer a security question when registering, modifying their account password, or requesting a new password.&lt;br /&gt;
&lt;br /&gt;
To disable security questions, delete all of them from the '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Security Questions''' page.&lt;br /&gt;
&lt;br /&gt;
You cannot delete Security Questions that are in use.&lt;br /&gt;
&lt;br /&gt;
==Example Questions==&lt;br /&gt;
&lt;br /&gt;
Below are some suggestions for security questions you could use:&lt;br /&gt;
&lt;br /&gt;
*What was the house number and street name you lived in as a child?&lt;br /&gt;
*What were the last four digits of your childhood telephone number?&lt;br /&gt;
*What primary school did you attend?&lt;br /&gt;
*In what town or city was your first full time job?&lt;br /&gt;
*In what town or city did you meet your spouse or partner?&lt;br /&gt;
*What is the middle name of your oldest child?&lt;br /&gt;
*What are the last five digits of your driver's license number?&lt;br /&gt;
*What is your grandmother's (on your mother's side) maiden name?&lt;br /&gt;
*What is your spouse or partner's mother's maiden name?&lt;br /&gt;
*In what town or city did your parents meet?&lt;br /&gt;
*What time of the day were you born? (hh:mm)&lt;br /&gt;
*What time of the day was your first child born? (hh:mm)&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Spam_Control&amp;diff=30025</id>
		<title>Spam Control</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Spam_Control&amp;diff=30025"/>
				<updated>2021-03-02T16:07:39Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Blocking Keywords or Phrases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Spam can become a big problem. WHMCS comes with spam control filters to reduce the amount of spam you receive. The spam control features will allow you to block email address and keywords or phrases that appear in either the message subject or body. which pipe into the ticket system from email. Messages that you receive via the contact or submit ticket pages are not subject to these spam controls. For those, we recommend [[Security_Tab#Captcha_Form_Protection|using reCaptcha]].&lt;br /&gt;
&lt;br /&gt;
==Adding a Blocked Email Address==&lt;br /&gt;
&lt;br /&gt;
There are two ways to block an email address from opening tickets.  The first is the easiest: when viewing a ticket from the email you want to block, click the '''Block Sender''' button next to the ticket opener's details.&lt;br /&gt;
&lt;br /&gt;
For the second method, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Support &amp;gt; Spam Control''' and use the '''Add''' box to enter the email you want to block. Then, submit the form to add it.&lt;br /&gt;
&lt;br /&gt;
==Blocking Keywords or Phrases==&lt;br /&gt;
&lt;br /&gt;
To set up keywords or phrases that, if they're in an email, will prevent the email from opening a ticket, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Support &amp;gt; Spam Control'''.  You can then enter the words or phrases and choose where the system looks for them (either the subject or body of the message). If the system finds that the email subject contains the blocked subject, or if the blocked phrase is found within the email body, then a ticket will not be opened. The blocking of keywords or phrases is not case-sensitive.&lt;br /&gt;
&lt;br /&gt;
== Further Protection ==&lt;br /&gt;
=== Obscure Addresses ===&lt;br /&gt;
If you use common email addresses (especially hosting companies) such as support@ or contact@, you will receive more spam. This is due to spammers blindly emailing these addresses on several domains. If you use less-common addresses, it may reduce your level of incoming spam.&lt;br /&gt;
&lt;br /&gt;
For example, you could use:&lt;br /&gt;
* helpme@yourdomain&lt;br /&gt;
* support-team@yourdomain&lt;br /&gt;
* assistance@yourdomain&lt;br /&gt;
&lt;br /&gt;
=== SpamAssassin ===&lt;br /&gt;
Outside of WHMCS, you can combat the number of spam emails you are receiving by enabling Apache SpamAssassin™.  This tool does a very good job of picking up most spam using its rule-based system and worldwide database of spam messages. For more information, see http://spamassassin.apache.org/&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Backups&amp;diff=30024</id>
		<title>Backups</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Backups&amp;diff=30024"/>
				<updated>2021-03-02T14:25:10Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Limitations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We strongly recommend that you back up your WHMCS database regularly, so that you always have a copy of your data if a server or system failure occurs. Backing up the database is a very simply task with the built-in backup tool, and you can automate it.&lt;br /&gt;
&lt;br /&gt;
==Automated Database Backup==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; We added functionality for automated backups in WHMCS 7.3.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WHMCS can automatically back up your database and upload it to a SFTP/FTP location or email it to a designated email address. Starting in WHMCS 7.3, you can also request a full cPanel backup for a specific user as part of the automatic backup process.&lt;br /&gt;
&lt;br /&gt;
==Enabling Automatic Backups==&lt;br /&gt;
&lt;br /&gt;
To modify your backup configuration, go to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Other &amp;gt; [[System_Utilities|Database Backups]]'''.&lt;br /&gt;
&lt;br /&gt;
The available options are '''SFTP/FTP Backup''', '''cPanel Backup''', and '''Daily Email Backups'''.&lt;br /&gt;
&lt;br /&gt;
===Testing Connection===&lt;br /&gt;
&lt;br /&gt;
The '''SFTP/FTP Backup''' and '''cPanel Backup''' options require a successful connection test before activation. A connection test ensures the details are valid and the WHMCS installation can connect to the server. Any connection issue allows a resolution before a backup attempt occurs, incurring less chance of a failed connection.&lt;br /&gt;
&lt;br /&gt;
==SFTP/FTP Backup==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; WHMCS offers backups via plain FTP and SFTP. Other protocols, such as FTPS and FTP/TLS, are not supported.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This backup will place the WHMCS-generated zipped SQL file on the specified remote server.&lt;br /&gt;
&lt;br /&gt;
Checking the &amp;quot;'Use Secure FTP/SFTP (Recommended)'&amp;quot; box will ensure the backup upload is completed using an SFTP connection. &lt;br /&gt;
&lt;br /&gt;
===FTP Destination===&lt;br /&gt;
&lt;br /&gt;
This value is relative to the login folder for the FTP/SFTP account you are using. For example, if, when you log in using your FTP details, the folder is &amp;lt;tt&amp;gt;/home/user/&amp;lt;/tt&amp;gt; and the backup will be in &amp;lt;tt&amp;gt;/home/user/backups&amp;lt;/tt&amp;gt;, enter &amp;lt;tt&amp;gt;backups/&amp;lt;/tt&amp;gt; as the '''FTP Destination'''. &lt;br /&gt;
&lt;br /&gt;
If you intend to upload the backup file to the login folder, leave this field empty.&lt;br /&gt;
&lt;br /&gt;
==cPanel Backup==&lt;br /&gt;
&lt;br /&gt;
The '''cPanel Backup''' option uses the [https://docs.cpanel.net/cpanel/files/backup-wizard/ Full Backup] feature of cPanel's backup wizard.&lt;br /&gt;
&lt;br /&gt;
===cPanel Username===&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-info&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; The '''cPanel Username''' is the name of the account to back up.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Backup Destination===&lt;br /&gt;
* '''Remote FTP Server''' — Select this option to use FTP to store the backup file on a remote server.&lt;br /&gt;
* '''Remote FTP Server (Passive connection)''' — Select this option to use passive FTP to store the backup file on a remote server.&lt;br /&gt;
* '''Secure Copy (SCP)''' — Select this option to use SCP to store the backup file on a remote server.&lt;br /&gt;
* '''Home Directory''' — Select this option to save the backup file to the server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;&amp;lt;i class=&amp;quot;fa fa-exclamation-triangle&amp;quot;&amp;gt;&amp;lt;/i&amp;gt; Using '''Home Directory''' will generate the backup file in the cPanel user's home directory. This will count against any disk space limits, and you should manually move it to a better location after completion.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The system cron job will only request the start of a full backup. Completion and relocation of the backup occurs within cPanel, and WHMCS will not notify you about the process.&lt;br /&gt;
&lt;br /&gt;
==Manual Database Backup==&lt;br /&gt;
To manually download a backup of the WHMCS database at any time:&lt;br /&gt;
&lt;br /&gt;
#Log in to your WHMCS Admin Area.&lt;br /&gt;
#Go to '''Utilities &amp;gt; System &amp;gt; Database Status'''.&lt;br /&gt;
#Click the '''Download Database Backup''' button at the top of the page. The system will prompt you to download a file.&lt;br /&gt;
#Save the file to your computer.  Depending on the database size, this may take a few moments. &lt;br /&gt;
&lt;br /&gt;
==Configuration.php Backup==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;configuration.php&amp;lt;/tt&amp;gt; file in the main &amp;lt;tt&amp;gt;whmcs&amp;lt;/tt&amp;gt; directory. It contains the encryption hash value unique to your particular installation, which encrypts sensitive data. If you lose the encryption hash value, the system won't be able to decrypt your data. Because of this, it is important to keep a backup of this file in a secure location in case reinstallation is necessary.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
As a database grows, it becomes too big for a PHP script like the WHMCS cron job to handle, due to the amount of data in it exceeding various server limits, usually when the database exceeds 20 MB. The size prevents the system from completing an FTP or Email backup.&lt;br /&gt;
&lt;br /&gt;
In this case, we recommend switching to the '''[[#cPanel_Backup|cPanel Backup]]''' option instead (if you installed WHMCS on a cPanel server). By off-loading the backup tasks from PHP to the cPanel system processes, it allows you to generate much larger backups without impacting performance of your website.&lt;br /&gt;
&lt;br /&gt;
When switching to cPanel or external backups, you will need to ensure that you have disabled the FTP and Email Backup features in your WHMCS installation to prevent errors with the cron due to the large database size.&lt;br /&gt;
&lt;br /&gt;
If you are not on a cPanel server, you can use an external tool such as '''mysqldump''' to export your database. More information can be found in the [https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html MySQL documentation].&lt;br /&gt;
&lt;br /&gt;
==Optimise Tables==&lt;br /&gt;
In normal operation, MySQL® tables can generate overhead. This is disk space that you have assigned to the table but aren't using. You can use MySQL's &amp;lt;tt&amp;gt;[http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html optimize tables]&amp;lt;/tt&amp;gt; function to reduce this. Usually this command is from the server's command line or phpMyAdmin, but it can also be run within WHMCS by clicking '''Optimise Tables''' at '''Utilities &amp;gt; System &amp;gt; Database Status'''.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
A number of errors may occur onscreen when you generate a manual database backup, or in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Logs''' (or '''Utilities &amp;gt; Logs &amp;gt; Activity Log''' in WHMCS 7.x and earlier) when generating an automated database backup:&lt;br /&gt;
&lt;br /&gt;
===Table 'xxx' doesn't exist when using LOCK TABLES===&lt;br /&gt;
&lt;br /&gt;
This indicates that the named table &amp;lt;tt&amp;gt;xxx&amp;lt;/tt&amp;gt; has crashed or is corrupted. Running a MySQL® repair operation will resolve this. You can repair tables via the '''MySQL Databases''' page within cPanel or using a tool such as phpMyAdmin.&lt;br /&gt;
&lt;br /&gt;
===Database backup unavailable due to missing required zip extension===&lt;br /&gt;
&lt;br /&gt;
This indicates that you need to [http://php.net/manual/en/class.ziparchive.php recompile PHP] after enabling the ZipArchive PHP class, which WHMCS requires to compress the backup. &lt;br /&gt;
&lt;br /&gt;
===Database backup error 'Please provide a valid dump path'===&lt;br /&gt;
&lt;br /&gt;
This indicates that WHMCS is unable to access the &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; working directory during the backup generation process. Make sure that the &amp;lt;tt&amp;gt;[http://php.net/manual/en/ini.core.php#ini.open-basedir open_basedir]&amp;lt;/tt&amp;gt; value is ''Off'' in your PHP configuration, and that the PHP &amp;lt;tt&amp;gt;/tmp&amp;lt;/tt&amp;gt; directory is writeable and is not full.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Nominet&amp;diff=29945</id>
		<title>Nominet</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Nominet&amp;diff=29945"/>
				<updated>2021-01-25T21:26:00Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* IP Registration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{registrar&lt;br /&gt;
| register = yes&lt;br /&gt;
| renew = yes&lt;br /&gt;
| dns = yes&lt;br /&gt;
| whois = yes&lt;br /&gt;
| domainrelease = yes&lt;br /&gt;
| domainsync = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Activation==&lt;br /&gt;
To activate and begin using the Nominet registrar module, follow the steps below:&lt;br /&gt;
&lt;br /&gt;
# Login to your WHMCS Admin Area&lt;br /&gt;
# Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Domain Registrars''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Domain Registrars'''.&lt;br /&gt;
# Locate Nominet in the list&lt;br /&gt;
# Click the '''Activate''' button&lt;br /&gt;
# Enter your Nominet EPP credentials&lt;br /&gt;
# Click Save Changes to complete the process&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;Before you can begin using the Nominet API with your account you must authorize your server IP for access to your account. See below for steps to do this.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===IP Registration===&lt;br /&gt;
* Nominet EPP is IP restricted.&lt;br /&gt;
* Therefore to use Nominet EPP, you must first [https://www.nominet.uk/ open a ticket] with them and request they allow your server IP address access to use your Nominet account via the API.&lt;br /&gt;
* You can find the IP you need them to whitelist by navigating to Help &amp;gt; License Information within your WHMCS admin area.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;Failure to do this will result in you seeing the error message, &amp;quot;Error Connecting to ...&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Test Mode===&lt;br /&gt;
WHMCS can be configured for testing purposes by ticking the &amp;quot;TestMode&amp;quot; option when configuring Nominet as the registrar. This will point all domain related requests to the test environment provided to you by Nominet.&lt;br /&gt;
&lt;br /&gt;
==Automatic Registration==&lt;br /&gt;
WHMCS allows you to setup automatic domain registration on a per extension basis enabling you to use different registrars for different TLDs to give you the flexibility to offer more extensions and always get the best value.&lt;br /&gt;
To enable automatic registration, please refer to [[Domain Pricing|Configuring Automatic Registration]]&lt;br /&gt;
&lt;br /&gt;
==Automatic Domain Synchronization==&lt;br /&gt;
The Nominet module supports automatic domain synchronization for syncing of expiry dates and status changes for incoming transfers.&lt;br /&gt;
To enable this functionality, you need to ensure you have the '''Domain Sync Enabled''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Domains''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Domains'''. Ensure you have the [[Crons#Domain_Sync_Cron|Domain Sync Cron]] configured on your system.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
'''Unable to find the socket transport &amp;quot;ssl&amp;quot;'''&amp;lt;br&amp;gt;&lt;br /&gt;
This error indicates SSL communication support is missing from the PHP build on your server.  To resolve, you need to recompile PHP with OpenSSL included.&lt;br /&gt;
&lt;br /&gt;
'''Command syntax error'''&amp;lt;br&amp;gt;&lt;br /&gt;
Nominet are very particular about the formatting of client data, this error usually indicates a problem with the client's details under their Profile or Contacts tabs. The postcode should be formatted correctly (XX11 1XX) and the phone number formatted 01234 567891.&lt;br /&gt;
&lt;br /&gt;
'''Error Connecting to ssl://epp.nominet.org.uk on port 700'''&amp;lt;br&amp;gt;&lt;br /&gt;
This error indicates that either a firewall rule is blocking connections on port 700 or that your servers IP has not been authorized to access your account on the Nominet side of things.&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=Nominet&amp;diff=29944</id>
		<title>Nominet</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=Nominet&amp;diff=29944"/>
				<updated>2021-01-25T21:23:50Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: /* Activation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{registrar&lt;br /&gt;
| register = yes&lt;br /&gt;
| renew = yes&lt;br /&gt;
| dns = yes&lt;br /&gt;
| whois = yes&lt;br /&gt;
| domainrelease = yes&lt;br /&gt;
| domainsync = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Activation==&lt;br /&gt;
To activate and begin using the Nominet registrar module, follow the steps below:&lt;br /&gt;
&lt;br /&gt;
# Login to your WHMCS Admin Area&lt;br /&gt;
# Navigate to '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; Domain Registrars''' or, prior to WHMCS 8.0, '''Setup &amp;gt; Products/Services &amp;gt; Domain Registrars'''.&lt;br /&gt;
# Locate Nominet in the list&lt;br /&gt;
# Click the '''Activate''' button&lt;br /&gt;
# Enter your Nominet EPP credentials&lt;br /&gt;
# Click Save Changes to complete the process&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-warning&amp;quot;&amp;gt;Before you can begin using the Nominet API with your account you must authorize your server IP for access to your account. See below for steps to do this.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===IP Registration===&lt;br /&gt;
* Nominet's API is IP restricted.&lt;br /&gt;
* Therefore to use the Nominet API, you must first [https://www.nominet.uk/ open a ticket] with them and request they allow your server IP address access to use your Nominet account via the API.&lt;br /&gt;
* You can find the IP you need them to whitelist by navigating to Help &amp;gt; License Information within your WHMCS admin area.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs-alert-info&amp;quot;&amp;gt;Failure to do this will result in you seeing the error message, &amp;quot;Error Connecting to ...&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Test Mode===&lt;br /&gt;
WHMCS can be configured for testing purposes by ticking the &amp;quot;TestMode&amp;quot; option when configuring Nominet as the registrar. This will point all domain related requests to the test environment provided to you by Nominet.&lt;br /&gt;
&lt;br /&gt;
==Automatic Registration==&lt;br /&gt;
WHMCS allows you to setup automatic domain registration on a per extension basis enabling you to use different registrars for different TLDs to give you the flexibility to offer more extensions and always get the best value.&lt;br /&gt;
To enable automatic registration, please refer to [[Domain Pricing|Configuring Automatic Registration]]&lt;br /&gt;
&lt;br /&gt;
==Automatic Domain Synchronization==&lt;br /&gt;
The Nominet module supports automatic domain synchronization for syncing of expiry dates and status changes for incoming transfers.&lt;br /&gt;
To enable this functionality, you need to ensure you have the '''Domain Sync Enabled''' in '''Configuration (&amp;lt;i class=&amp;quot;fa fa-wrench&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;) &amp;gt; System Settings &amp;gt; General Settings &amp;gt; Domains''' or, prior to WHMCS 8.0, '''Setup &amp;gt; General Settings &amp;gt; Domains'''. Ensure you have the [[Crons#Domain_Sync_Cron|Domain Sync Cron]] configured on your system.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
'''Unable to find the socket transport &amp;quot;ssl&amp;quot;'''&amp;lt;br&amp;gt;&lt;br /&gt;
This error indicates SSL communication support is missing from the PHP build on your server.  To resolve, you need to recompile PHP with OpenSSL included.&lt;br /&gt;
&lt;br /&gt;
'''Command syntax error'''&amp;lt;br&amp;gt;&lt;br /&gt;
Nominet are very particular about the formatting of client data, this error usually indicates a problem with the client's details under their Profile or Contacts tabs. The postcode should be formatted correctly (XX11 1XX) and the phone number formatted 01234 567891.&lt;br /&gt;
&lt;br /&gt;
'''Error Connecting to ssl://epp.nominet.org.uk on port 700'''&amp;lt;br&amp;gt;&lt;br /&gt;
This error indicates that either a firewall rule is blocking connections on port 700 or that your servers IP has not been authorized to access your account on the Nominet side of things.&lt;br /&gt;
&lt;br /&gt;
{{modules}}&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	<entry>
		<id>http://3.19.219.109/index.php?title=SSL_Monitoring&amp;diff=29913</id>
		<title>SSL Monitoring</title>
		<link rel="alternate" type="text/html" href="http://3.19.219.109/index.php?title=SSL_Monitoring&amp;diff=29913"/>
				<updated>2021-01-12T21:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;Joshua: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SSL Monitoring makes it easy to see which domains have SSL and which do not.&lt;br /&gt;
&lt;br /&gt;
It also makes it easy to spot issues with validation sooner, and know ahead of time when SSL Certificates are approaching their expiry dates. It's the perfect way to keep on top of your own SSL certificates, and be in a position to help your customers with their renewals.&lt;br /&gt;
&lt;br /&gt;
For both client end users and admin users, SSL status is displayed in real-time when viewing a product/service within WHMCS, while the System Cron updates the SSL Status in batches of 100 every 24 hours. The status is indicated by an icon. An explanation of the different icons you might see is available below. Hovering over the icon will provide any additional information that is available via a tooltip.&lt;br /&gt;
&lt;br /&gt;
==Where is the Status Shown?==&lt;br /&gt;
&lt;br /&gt;
===Admin Area===&lt;br /&gt;
[[File:admin_area_display.png|thumb|SSL Status Admin Area]]&lt;br /&gt;
In the admin area, the icon displaying the status of SSL on the domain can be found on the service and domain details page, in the top right of the display next to the [[Products_Management#Moving_a_Product.2FService_to_another_Client|move]] button.&lt;br /&gt;
&lt;br /&gt;
There is also a new SSL Status report which can be used to monitor and review the status of SSL across all the domains within your WHMCS installation. This new report can be accessed by navigating to ''Reports &amp;gt; General &amp;gt; SSL Status Monitoring'' within the WHMCS admin area.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Client Area===&lt;br /&gt;
[[File:client_area_list_display.png|thumb|SSL Status Client Area List]]&lt;br /&gt;
The client area displays the status on the client service and domains lists, and on the service and domain details pages. On the lists, a new column has been added to the table with the list containing the status, with the status retrieved by and ajax call and updated.&lt;br /&gt;
[[File:client_area_display.png|thumb|SSL Status Client Area]]&lt;br /&gt;
On the products details page, the status can be see on the 'domain' tab.&lt;br /&gt;
The domain details page lists the ssl status as part of the standard domain information.&lt;br /&gt;
In the client area, the details pages will contain information about the SSL Certificate installed for the domain. This includes the issuer and expiry date of the issued SSL in cases where it can be reliably retrieved.&lt;br /&gt;
&lt;br /&gt;
==What are the Icons?==&lt;br /&gt;
&lt;br /&gt;
There are four icons that display the SSL information.&lt;br /&gt;
 [[File:Ssl-active-green.png]] - A green padlock indicates that the selected domain has an active and valid SSL Certificate.&lt;br /&gt;
 &lt;br /&gt;
 [[File:ssl-inactive-domain.png]] - A grey padlock with a negative sign is displayed for domains that are not considered active. These are services and domains that are in a Terminated, Expired or Cancelled status.&lt;br /&gt;
  &lt;br /&gt;
 [[File:ssl-inactive-red.png]] - A red padlock indicates that the selected domain does not have an active or valid SSL Certificate.&lt;br /&gt;
 &lt;br /&gt;
 [[File:ssl-unknown.png]] - A grey padlock with a question mark indicates that the state of SSL for a domain cannot be verified with any certainty.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
===Technical Details===&lt;br /&gt;
# Upon loading the page, a cURL call is made from the WHMCS server to https://$example.com with the ssl_verify_peer option enabled&lt;br /&gt;
#* Where $example.com is the contents of the service's Domain field&lt;br /&gt;
# If no response is received, the &amp;quot;?&amp;quot; padlock icon is displayed&lt;br /&gt;
# If a cURL error is received, then the red padlock icon is displayed&lt;br /&gt;
#* This indicates cURL was unable to [https://curl.haxx.se/docs/sslcerts.html validate the certificate]&lt;br /&gt;
# If no cURL error is received, the test was successful and the yellow padlock icon is displayed&lt;br /&gt;
# Unsupported cURL versions will be flagged in the [[System Health Status]] page&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
* Connect to the command﻿-line of your WHMCS server and run:&lt;br /&gt;
 curl -v https://$example.com﻿﻿&lt;br /&gt;
** Replace $example.com with the value from the Domain field in WHMCS. ﻿&lt;br /&gt;
* Look for an error code at the end of the output. An example is shown below:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
[root@john ~]# curl -v https://v75.test.whmcs.rocks&lt;br /&gt;
* About to connect() to v75.test.whmcs.rocks port 443 (#0)&lt;br /&gt;
*   Trying 104.20.20.8... connected&lt;br /&gt;
* Connected to v75.test.whmcs.rocks (104.20.20.8) port 443 (#0)&lt;br /&gt;
* Initializing NSS with certpath: sql:/etc/pki/nssdb&lt;br /&gt;
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt&lt;br /&gt;
  CApath: none&lt;br /&gt;
* SSL: certificate subject name '*.whmcs.com' does not match target host name 'v75.test.whmcs.rocks'&lt;br /&gt;
* NSS error -12276&lt;br /&gt;
* Closing connection #0&lt;br /&gt;
curl: (51) SSL: certificate subject name '*.whmcs.com' does not match target host name 'v75.test.whmcs.rocks'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* In this example a '''51''' error code is returned&lt;br /&gt;
*  Please work with your server admin/hosting provider to resolve the cURL connection error between the WHMCS server and the hosting server.&lt;/div&gt;</summary>
		<author><name>Joshua</name></author>	</entry>

	</feed>