UpdateInvoice
Update an invoice using the provided parameters.
Request Parameters
Parameter |
Type |
Description |
Required |
action |
string |
“UpdateInvoice” |
Required |
invoiceid |
int |
The ID of the invoice to update. |
Required |
status |
string |
The status of the invoice being updated. |
Optional |
paymentmethod |
string |
The payment method of the invoice in system format. |
Optional |
taxrate |
float |
The first-level tax rate to apply to the invoice to override the system default. |
Optional |
taxrate2 |
float |
The second-level tax rate to apply to the invoice to override the system default. |
Optional |
credit |
float |
Update the credit applied to the invoice. |
Optional |
date |
string |
The date that the invoice should show as its creation date. Format: YYYY-mm-dd |
Optional |
duedate |
string |
The due date of the invoice. Format: YYYY-mm-dd |
Optional |
datepaid |
string |
The date paid for the invoice. Format: YYYY-mm-dd |
Optional |
notes |
string |
The notes to appear on the invoice. |
Optional |
itemdescription |
string[] |
An array of lineItemId => Description of items to change. The lineItemId is the ID of the item from the GetInvoice API command. |
Optional |
itemamount |
float[] |
An array of lineItemId => amount of items to change. Required if itemdescription is provided. |
Optional |
itemtaxed |
bool[] |
An array of lineItemId => taxed of items to change Required if itemdescription is provided. |
Optional |
newitemdescription |
string[] |
The line items description. This should be a numerically indexed array of new line item descriptions. |
Optional |
newitemamount |
float[] |
The line items amount. This should be a numerically indexed array of new line item amounts. |
Optional |
newitemtaxed |
bool[] |
Should the new line items be taxed. This should be a numerically indexed array of new line item taxed values. |
Optional |
deletelineids |
int[] |
An array of line item IDs to remove from the invoice. This is the ID of the line item, from GetInvoice API command. |
Optional |
publish |
bool |
Whether to publish the invoice. |
Optional |
publishandsendemail |
bool |
Whether to publish and email the invoice. |
Optional |
Response Parameters
Parameter |
Type |
Description |
result |
string |
The result of the operation: success or error |
invoiceid |
int |
The ID of the update invoice. |
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' => 'UpdateInvoice',
// See https://developers.whmcs.com/api/authentication
'username' => 'IDENTIFIER_OR_ADMIN_USERNAME',
'password' => 'SECRET_OR_HASHED_PASSWORD',
'invoiceid' => '1',
'status' => 'Unpaid',
'itemdescription' => array(13 => 'Sample Updated Invoice Item'),
'itemamount' => array(13 => 16.95),
'itemtaxed' => array(13 => false),
'newitemdescription' => array(0 => 'New Line Item 1', 1 => 'New Line Item 2'),
'newitemamount' => array(0 => 10.00, 1 => 2.95),
'newitemtaxed' => array(0 => true, 1 => false),
'deletelineids' => array(11, 12),
'responsetype' => 'json',
)
)
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
Example Request (Local API)
$command = 'UpdateInvoice';
$postData = array(
'invoiceid' => '1',
'status' => 'Unpaid',
'itemdescription' => array(13 => 'Sample Updated Invoice Item'),
'itemamount' => array(13 => 16.95),
'itemtaxed' => array(13 => false),
'newitemdescription' => array(0 => 'New Line Item 1', 1 => 'New Line Item 2'),
'newitemamount' => array(0 => 10.00, 1 => 2.95),
'newitemtaxed' => array(0 => true, 1 => false),
'deletelineids' => array(11, 12),
);
$adminUsername = 'ADMIN_USERNAME'; // Optional for WHMCS 7.2 and later
$results = localAPI($command, $postData, $adminUsername);
print_r($results);
Example Response JSON
{
"result": "success",
"invoiceid": "1"
}
Error Responses
Possible error condition responses include:
- Invoice ID Not Found
- Invoice must be in Draft status to be published
- Missing Variables: itemdescription, itemamount and itemtaxed are required for each item being changed
- Invalid status $status
Version History
Version |
Changelog |
1.0 |
Initial Version |
7.8 |
Removed total , tax , tax2 and subtotal parameters. Adjust invoice items and tax rates to adjust these. |