AddPayMethod

Add a Pay Method to a given client. Supports the creation of credit card and bank account pay methods. Note that some tokenised payment gateways cannot be utilised via the API. Please refer to individual payment gateway documentation for specifics about supported functionality.

Request Parameters

Parameter Type Description Required
action string “AddPayMethod” Required
clientid int The id of the client to add the Pay Method Required
type string The type of Pay Method to add. One of ‘BankAccount’, ‘CreditCard’, or ‘RemoteCreditCard’. Defaults to ‘CreditCard’ Optional
description string The description for the new Pay Method Optional
gateway_module_name string Required for use with tokenised payment gateways eg. authorizecim, sagepaytokens, etc… Optional
card_number string Credit Card Number. Required for CreditCard and RemoteCreditCard types Optional
card_expiry string The expiry date for the card. Required for cc type. Format ‘MMYY’ eg 0122 Optional
card_start string The start date for the card. Not required. Format ‘MMYY’ eg 0122 Optional
card_issue_number int The issue_number for the card. Not required Optional
bank_name string The name of the bank. Not required Optional
bank_account_type string The type of bank account (checking, credit etc). Not required Optional
bank_code string The bank code. Also called sort code or routing number. Required for BankAccount type Optional
bank_account string The account number. Required for BankAccount type Optional
set_as_default bool Should the new Pay Method be the client default Optional

Response Parameters

Parameter Type Description
result string The result of the operation: success or error
clientid int The id of the client the Pay Method has been added to
paymethodid int The id of the newly created Pay Method

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' => 'AddPayMethod',
            // See https://developers.whmcs.com/api/authentication
            'username' => 'IDENTIFIER_OR_ADMIN_USERNAME',
            'password' => 'SECRET_OR_HASHED_PASSWORD',
            'clientid' => '1',
            'type' => 'cc',
            'description' => 'New Card',
            'card_number' => '4242424242424242',
            'card_expiry' => '0423',
            'responsetype' => 'json',
        )
    )
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);

Example Request (Local API)

$command = 'AddPayMethod';
$postData = array(
    'clientid' => '1',
    'type' => 'cc',
    'description' => 'New Card',
    'card_number' => '4242424242424242',
    'card_expiry' => '0423',
);
$adminUsername = 'ADMIN_USERNAME'; // Optional for WHMCS 7.2 and later

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

Example Response JSON

{
    "result": "success",
    "clientid": "1",
    "paymethodid": "1"
}

Error Responses

Possible error condition responses include:

  • Client ID Is Required
  • Invalid Client ID
  • Invalid Pay Method Type. Type should be one of ‘BankAccount’, ‘CreditCard’, or ‘RemoteCreditCard’
  • Gateway is Required for RemoteCreditCard type
  • Card Number is required for ‘CreditCard’ or ‘RemoteCreditCard’ type
  • Expiry Date is required for ‘CreditCard’ or ‘RemoteCreditCard’ type
  • Expiry Date is invalid
  • Start Date is invalid
  • Issue Number is invalid
  • Invalid Gateway Module Name. Must be one of: xxx (list of active gateways)
  • Unsupported Gateway Type for Storage
  • Error Creating Remote Token: xxx (error from module)
  • Routing number is required
  • Account number is required
  • Gateway is Required for Bank Account Storage

Version History

Version Changelog
7.8.0 Initial Version