whmcs_update_invoice
Modify invoice details in WHMCS, including status, dates, payment method, notes, and publication settings.
Instructions
Update an existing invoice
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceid | Yes | Invoice ID to update | |
| status | No | New status | |
| paymentmethod | No | Payment method | |
| date | No | Invoice date (YYYY-MM-DD) | |
| duedate | No | Due date (YYYY-MM-DD) | |
| notes | No | Invoice notes | |
| publish | No | Publish draft invoice | |
| publishandsendemail | No | Publish and send email |
Implementation Reference
- src/index.ts:325-347 (registration)Registration of the whmcs_update_invoice MCP tool, including input schema definition and thin handler wrapper that delegates to WhmcsApiClient.updateInvoiceserver.registerTool( 'whmcs_update_invoice', { title: 'Update Invoice', description: 'Update an existing invoice', inputSchema: { invoiceid: z.number().describe('Invoice ID to update'), status: z.enum(['Draft', 'Unpaid', 'Paid', 'Cancelled', 'Refunded', 'Collections']).optional().describe('New status'), paymentmethod: z.string().optional().describe('Payment method'), date: z.string().optional().describe('Invoice date (YYYY-MM-DD)'), duedate: z.string().optional().describe('Due date (YYYY-MM-DD)'), notes: z.string().optional().describe('Invoice notes'), publish: z.boolean().optional().describe('Publish draft invoice'), publishandsendemail: z.boolean().optional().describe('Publish and send email'), }, }, async (params) => { const result = await whmcsClient.updateInvoice(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } );
- src/index.ts:327-339 (schema)Input schema (Zod) for validating parameters to the whmcs_update_invoice tool{ title: 'Update Invoice', description: 'Update an existing invoice', inputSchema: { invoiceid: z.number().describe('Invoice ID to update'), status: z.enum(['Draft', 'Unpaid', 'Paid', 'Cancelled', 'Refunded', 'Collections']).optional().describe('New status'), paymentmethod: z.string().optional().describe('Payment method'), date: z.string().optional().describe('Invoice date (YYYY-MM-DD)'), duedate: z.string().optional().describe('Due date (YYYY-MM-DD)'), notes: z.string().optional().describe('Invoice notes'), publish: z.boolean().optional().describe('Publish draft invoice'), publishandsendemail: z.boolean().optional().describe('Publish and send email'), },
- src/whmcs-client.ts:526-550 (handler)Core handler implementation in WhmcsApiClient: the updateInvoice method that executes the WHMCS API 'UpdateInvoice' action with the provided parameters via the generic call method./** * Update an invoice */ async updateInvoice(params: { invoiceid: number; status?: 'Draft' | 'Unpaid' | 'Paid' | 'Cancelled' | 'Refunded' | 'Collections'; paymentmethod?: string; taxrate?: number; taxrate2?: number; date?: string; duedate?: string; datepaid?: string; notes?: string; itemdescription?: string[]; itemamount?: number[]; itemtaxed?: boolean[]; newitemdescription?: string[]; newitemamount?: number[]; newitemtaxed?: boolean[]; deletelineids?: number[]; publish?: boolean; publishandsendemail?: boolean; }) { return this.call<WhmcsApiResponse & { invoiceid: number }>('UpdateInvoice', params); }