Cancelling an invoice
An unpaid, draft or overdue invoice can be cancelled from its own screen, which stops WHMCS chasing it for payment. It is offered on the phone because it is reversible: a cancelled invoice can be reinstated as unpaid from the same screen if it was cancelled in error. Both go through the documented UpdateInvoice call, so WHMCS records the change the same way the admin area would. A paid invoice is never cancellable here — undoing a payment moves money, and that is deliberately left to the WHMCS admin area, the same way recording a payment has no in-app undo. One thing to know: cancelling through the API this way does not fire the InvoiceCancelled hook, so if you rely on that hook for something, cancel those invoices in the admin area instead.