WHMCS common issues

1. Why doesn't WHMCS cron job sync my domains?


The Openprovider domain module for WHMCS uses a separate script for syncing domains statuses and due dates between your Openprovider and WHMCs instance. The WHMCS domain sync task doesn't include time when comparing expiration dates between registrar and WHCS, so some domains didn't sync correctly for our users. As a result, we created a seperate task included in the module.

To sync your domains with Openprovider, you can set up a cron job to run the script <WHMCS root>/modules/registrars/openprovider/cron/DomainSync.php

The module documentation goes into more detail:*.pdf

2. Why am I getting an authentication error?


Check the following things, after changing your password in Openprovider:

  • Ensure that the correct password is being entered into the module
  • Ensure that the password, and not the hash, is entered in the module
  • Ensure that two-factor authentication is not enabled for the credentials which you are using for the module. (To maintain security, create a technical contact in your Reseller Control Panel, and whitelist only the IP addresses of your WHMCS instance )
  • Ensure that you see that the module authenticates after clicking "save" (see screenshot, the DNS template box will appear)



3. I'm getting an error "Sync Not Supported by Registrar Module"


In order to sync domain statuses, renewal dates, WPP settings and autorenew settings between your Openprovider account and your WHMCS instance, you will need to set up the Openprovider cron job, which is detailed in the read me document, which can be found at*.pdf

4. Why doesn't the domain module support the default domain sync in whmcs?


The Openprovider domain module doesn't support the default domain sync option because the default option has shortcomings which were causing a number of problems for our users. First of all, the WHMCS default sync doesn't make comparisons for time of registration, as a result, some domains registered close to midnight were being marked as expired incorrectly. Secondly, resellers requested a way to sync domain autorenew statuses between Openprovider and their WHMCS instance, and this functionality was only available via a customer sync script.

5. Authentication errors - if you are getting an auth error:


    • Are you using the correct login / password (not hash) ?

    • Is the URL correct ( for the login / password combination?

    • Is the problem with the whitelist? Try removing all IPs from the whitelist. If your system then works, you can check the IP address by the following command "dig +short" from command line of the server hosting your WHMCS instance.



6. How can I create a custom setup for registering domains which require additional information, such as .es, .us, .travel, .ru, and so on ?


The 2.3-beta release of the module introduced a function "openprovider_additional_fields()" function, which retrieves the list of required additional information for any given TLD from the Openprovider API.

To use the function, simply add the below code to the file "<whmcs root>/resources/domains/additionalfields.php"


$additionaldomainfields = openprovider_additional_fields()

Once this has been added, the correct text fields and/or select boxes will be created automatically on the WHMCS checkout page.

Here you will find more information from the WHMCS website:



7. Customer wants to add IDN support


Some TLDs require an additional data element for IDN support. This can be set up for a given TLD by doing the following:

  1. in the file <WHMCS root>/resources/domains/additionalfields.php" add the following line of array element definitions:

$com_idn_type =  array (

    'English'    => 'ENG',

    'Slovenian'    => 'SLV',

    'Russian'    => 'RUS'



$additionaldomainfields[".com"][] = array(

 "Name" => "idnScript",

 'DisplayName'=> "IDN language",

 "Type" => "dropdown",

 'Options' => join ( $com_idn_type, ',' ),

 "Default" => "English",   

 'Required' => true);


Customer wants to add intendedUse

Some TLDs require an "intended use" statement when registering. You can set this up for your customers quite easily by doing the following:

  1. in the file <WHMCS root>/resources/domains/additionalfields.php" add the following line of array element definitions:
    1. $additionaldomainfields['.cat'][] = array(

          'Name'    => 'intendedUse',

          'DisplayName'    => 'Intended Use',

          'Type'    => 'text',

          'Size' => '30',

          'Required'    => true


  2. Now when the domain is being registered, there will be a text box where the customer can write a description, which the module will send to Openprovider via API.
8. How can I set up default name servers?


This can be found in the WHMCS knowledge base for domain configurations.

To set the default nameservers that WHMCS will use for domain only registrations ordered through the system, navigate to Setup > General Settings > Domains tab.

See attached screenshot (link at the bottom) to see how to do this.

If you'd like to hard-code your nameservers into the module, you could edit the function:


in the file:

<whmcs root>/modules/registrars/openprovider/OpenProvider/API/APITools.php

How can I hard-code nameservers into the module

If you using the "DNS management" plugin for WHMCS, This is most likely the issue. A previous version of the module had the Openprovider nameservers hard-coded to be used in the case that DNS management is selected. This has since been removed.

If you'd like to hard-code your nameservers into the module, to be used for register and transfer operations, you can modify the function "createNameserversArray" in the file: <WHMCS root>modules/registrars/openprovider/OpenProvider/API/APITools.php


add the variables:

$params['ns1'] = <desired nameserver>

$params['ns2'] = <desired nameserver>

$params['ns3'] = <desired nameserver>

$params['ns4'] = null;

$params['ns4'] = null;


And your domains will be created using the nameservers you've specified.




9. What does it mean if customer gets the following errors?


when trying to view the module credentials page

From their php error log they receive the error:


[Tue Feb 20 11:14:33.488187 2018] [:error] [pid 15335] [client] [WHMCS Application] ERROR: exception 
'Whoops\\Exception\\ErrorException' with message 'Class 'DOMDocument' 
not found' in 
Stack trace: #0 
WHMCS\\Utility\\Error\\Run->handleError(1, 'Class 'DOMDocum...', 
'/home/corpitse/...', 21) #1 [internal function]: 
WHMCS\\Utility\\Error\\Run->handleShutdown() #2 {main} 
{"exception":"[object] (Whoops\\\\Exception\\\\ErrorException(code: 1): 
Class 'DOMDocument' not found at 
[], referer:


Based on this error, it appears that the DOM extension is not installed on your server. This extension is usually installed by default, so it may have simply been disabled by you or your hosting provider. If you're using CloudLinux, check to see if DOM is enabled.

Please see for more information



10. I want to run the cron job from the web, and not from the command line:


From the file <whmcs root>/modules/registrars/openprovider/cron/DomainSync.php

remove the following:

if((!isset($_SESSION['adminid']) && $_SESSION['adminid'] == false) && !is_cli())

This will allow you to run the file from a public folder.

Update registrant details via WHMCS fails

Reseller is trying to update registrant details via WHMCS having international phone number input interface and automatic formatting option enabled.


[postValues] => <?xml version="1.0" encoding="UTF-8"?>
<openXML><credentials><username>YHWHMCS</username><password>****************</password><client>whmcs-2.2.8</client></credentials><createCustomerRequest><companyName>De Beste B.V.</companyName><vat></vat><name><initials>J.V</initials><firstName>Jos</firstName><prefix></prefix><lastName>Verkerk</lastName></name><gender>M</gender><address><street>Boddens Hosangweg</street><number>64</number><suffix></suffix><zipcode>2481 LA</zipcode><city>Woubrugge</city><state>Zuid-Holland</state><country>NL</country></address><phone><countryCode>+31</countryCode><areaCode>+31</areaCode><subscriberNumber>.31880101200</subscriberNumber></phone><email></email><handle>NL904610-NL</handle><additionalData></additionalData></createCustomerRequest></openXML>



[curlResponse] => <?xml version="1.0" encoding="UTF-8"?>
<openXML><reply><code>133</code><desc>Invalid telephone region code number!</desc><data/></reply></openXML>
[curlErrNo] => 0
[errorMessage] =>


Option is enabled/disabled in [Settings -> General settings -> Localisation ->]: 

The option changes the appearance of the phone number input box from one having pre-formatted configuration like  to the simple empty box.

Probably having this option enabled results in wrong number formatting and thus the registrant details update fails.

To workaround just disable the option and specify the phone number in a format like +XXX.XXXXXXX having dot (.) symbol included as a separator.

Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request


Please sign in to leave a comment.