TLD & Pricing Sync

In WHMCS 7.10 and later, the Registrar TLD & Pricing Sync Utility allows for a registrar module to support importing TLDs and pricing.

Users can use the Sync Utility to import TLDs and automatically apply a defined margin markup.

To integrate this functionality into your registrar module, you must define a GetTldPricing function that builds and returns a ResultList object containing ImportItems defining TLDs and their cost pricing.

Method Type Required/Optional Description
setExtension string Required The extension to import. Example: .com, .net, or .co.uk
setMinYears int Optional The minimum number of years that the extension can be registered for. Default: 1
setMaxYears int Optional The maximum number of years that the extension can be registered for. Default: 10
setYearsStep int Optional The number of years between each registration period. Default: 1
setRegisterPrice float Required The registration cost price for the minimum registration period term.
setRenewPrice float Optional The renewal cost price for the minimum registration period term. Pass null if renewals are not supported.
setTransferPrice float Optional The transfer cost price for the minimum registration period term. Pass null if transfers are not supported.
setGraceFeeDays int Optional The grace period for the extension.
setGraceFeePrice float Optional The grace fee cost price for the extension. Pass null if grace periods are not supported.
setRedemptionFeeDays int Optional The redemption period for the extension.
setRedemptionFeePrice float Optional The redemption fee cost price for the extension. Pass null if redemption periods are not supported.
setCurrency string Required The ISO4217 three letter currency code that registrar cost prices are defined in. This currency must exist within the WHMCS installation. eg. USD, GBP, etc….
setEppRequired boolean Optional Does the extension require an EPP code for transfer requests
setYears array Optional Use in place of setMinYears, setMaxYears, and setYearsStep for extensions with more specialised pricing. Default: array()

Example Usage

use WHMCS\Domain\TopLevel\ImportItem;
use WHMCS\Results\ResultsList;

function modulename_GetTldPricing(array $params)
{
    // Perform API call to retrieve extension information
    // A connection error should return a simple array with error key and message
    // return ['error' => 'This error occurred',];

    $results = new ResultsList;

    foreach ($extensionData as $extension) {
        // All the set methods can be chained and utilised together.
        $item = (new ImportItem)
            ->setExtension($extension['tld'])
            ->setMinYears($extension['minPeriod'])
            ->setMaxYears($extension['maxPeriod'])
            ->setRegisterPrice($extension['registrationPrice'])
            ->setRenewPrice($extension['renewalPrice'])
            ->setTransferPrice($extension['transferPrice'])
            ->setRedemptionFeeDays($extension['redemptionDays'])
            ->setRedemptionFeePrice($extension['redemptionFee'])
            ->setCurrency($extension['currencyCode'])
            ->setEppRequired($extension['transferSecretRequired']);

        $results[] = $item;
    }
    return $results;
}