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. |