AddOrder

Adds an order to a client. For more flow control, this method ignores the “Automatically setup the product as soon as an order is placed.” option. When you call this method, you must make a subsequent explicit call to AcceptOrder.

Request Parameters

Parameter Type Description Required
action string “AddOrder” Required
clientid int Required
paymentmethod string The payment method for the order in the system format. eg. paypal, mailin Required
pid int[] The array of product ids to add the order for Optional
domain string[] The array of domain names associated with the products/domains Optional
billingcycle string[] The array of billing cycles for the products Optional
domaintype string[] For domain registrations, an array of register or transfer values Optional
regperiod int[] For domain registrations, the registration periods for the domains in the order Optional
idnlanguage string[] For IDN domain registrations. The language code for the domain being registered Optional
eppcode string[] For domain transfers. The epp codes for the domains being transferred in the order Optional
nameserver1 string The first nameserver to apply to all domains in the order Optional
nameserver2 string The second nameserver to apply to all domains in the order Optional
nameserver3 string The third nameserver to apply to all domains in the order Optional
nameserver4 string The fourth nameserver to apply to all domains in the order Optional
nameserver5 string The fifth nameserver to apply to all domains in the order Optional
customfields string[] an array of base64 encoded serialized array of product custom field values Optional
configoptions string[] an array of base64 encoded serialized array of product configurable options values Optional
priceoverride float[] Override the price of the product being ordered Optional
promocode string The promotion code to apply to the order Optional
promooverride bool Should the promotion apply to the order even without matching promotional products Optional
affid int The affiliate id to associate with the order Optional
noinvoice bool Set to true to suppress the invoice generating for the whole order Optional
noinvoiceemail bool Set to true to suppress the Invoice Created email being sent for the order Optional
noemail bool Set to true to suppress the Order Confirmation email being sent Optional
addons string[] A comma separated list of addons to create on order with the products Optional
hostname string[] The hostname of the server for VPS/Dedicated Server orders Optional
ns1prefix string[] The first nameserver prefix for the VPS/Dedicated server. Eg. ns1 in ns1.hostname.com Optional
ns2prefix string[] The second nameserver prefix for the VPS/Dedicated server. Eg. ns2 in ns2.hostname.com Optional
rootpw string[] The desired root password for the VPS/Dedicated server. Optional
contactid int The id of the contact, associated with the client, that should apply to all domains in the order Optional
dnsmanagement bool[] Add DNS Management to the Domain Order Optional
domainfields string[] an array of base64 encoded serialized array of TLD Specific Field Values Optional
emailforwarding bool[] Add Email Forwarding to the Domain Order Optional
idprotection bool[] Add ID Protection to the Domain Order Optional
domainpriceoverride float[] Override the price of the registration price on the domain being ordered Optional
domainrenewoverride float[] Override the price of the renewal price on the domain being ordered Optional
domainrenewals array A name -> value array of $domainName -> $renewalPeriod renewals to add an order for Optional
clientip string The ip address to associate with the order Optional
addonid int The Addon ID for an Addon Only Order Optional
serviceid int The service ID for the addon only order Optional
addonids int[] An Array of addon ids for an Addon Only Order Optional
serviceids int[] An array of service ids to associate the addons for an Addon Only order Optional
servicerenewals int[] An array of service IDs to be on-demand renewed Optional
addonrenewals int[] An array of service addon IDs to be on-demand renewed Optional

Response Parameters

Parameter Type Description
result string The result of the operation: success or error
orderid int The Order ID for the created order
serviceids string The Service ID(s) created by the order
addonids string The Addon ID(s) created by the order
domainids string The Domain ID(s) created by the order
invoiceid int The Invoice ID created for the order

Example Request (CURL)

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com/includes/api.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
    http_build_query(
        array(
            'action' => 'AddOrder',
            // See https://developers.whmcs.com/api/authentication
            'username' => 'IDENTIFIER_OR_ADMIN_USERNAME',
            'password' => 'SECRET_OR_HASHED_PASSWORD',
            'clientid' => '1',
            'pid' => array(1,1),
            'domain' => array('domain1.com', 'dómáin2.com'),
            'idnlanguage' => array('', 'fre'),
            'billingcycle' => array('monthly','semiannually'),
            'addons' => array('1,3,9', ''),
            'customfields' => array(base64_encode(serialize(array("1" => "Google"))), base64_encode(serialize(array("1" => "Google")))),
            'configoptions' => array(base64_encode(serialize(array("1" => 999))), base64_encode(serialize(array("1" => 999)))),
            'domaintype' => array('register', 'register'),
            'regperiod' => array(1, 2),
            'dnsmanagement' => array(0 => false, 1 => true),
            'nameserver1' => 'ns1.demo.com',
            'nameserver2' => 'ns2.demo.com',
            'paymentmethod' => 'mailin',
            'servicerenewals' => array(3, 10),
            'addonrenewals' => array(3, 10),
            'responsetype' => 'json',
        )
    )
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);

Example Request (Local API)

$command = 'AddOrder';
$postData = array(
    'clientid' => '1',
    'pid' => array(1,1),
    'domain' => array('domain1.com', 'dómáin2.com'),
    'idnlanguage' => array('', 'fre'),
    'billingcycle' => array('monthly','semiannually'),
    'addons' => array('1,3,9', ''),
    'customfields' => array(base64_encode(serialize(array("1" => "Google"))), base64_encode(serialize(array("1" => "Google")))),
    'configoptions' => array(base64_encode(serialize(array("1" => 999))), base64_encode(serialize(array("1" => 999)))),
    'domaintype' => array('register', 'register'),
    'regperiod' => array(1, 2),
    'dnsmanagement' => array(0 => false, 1 => true),
    'nameserver1' => 'ns1.demo.com',
    'nameserver2' => 'ns2.demo.com',
    'paymentmethod' => 'mailin',
    'servicerenewals' => array(3, 10),
    'addonrenewals' => array(3, 10),
);
$adminUsername = 'ADMIN_USERNAME'; // Optional for WHMCS 7.2 and later

$results = localAPI($command, $postData, $adminUsername);
print_r($results);

Example Response JSON

{
    "result": "success",
    "orderid": "1",
    "serviceids": "1,2",
    "addonids": "1,2,3",
    "domainids": "1,2",
    "invoiceid": "1"
}

Error Responses

Possible error condition responses include:

  • Client ID Not Found
  • Unable to add order when client status is Closed
  • Invalid Payment Method. Valid options include
  • Addon ID invalid
  • Service ID not owned by Client ID provided
  • Domain status is set to ‘Pending|Cancelled|Pending Transfer|Transferred|Fraud’ and cannot be renewed
  • Domain not owned by Client ID provided
  • No items added to cart so order cannot proceed
  • Expecting parameter ‘’ to be an array
  • Service ID xxx can not be renewed at this time.

Version History

Version Changelog
1.0 Initial Version
7.8 Renamed productids response to serviceids. productids may be removed in a future version.
8.0 Added IDN Language parameter
8.6 Increase strictness of array/set data type parameters when requesting multiple ‘domaintype’ operations.
8.8 Added servicerenewals parameter
8.9 Added addonrenewals parameter