Send invoice
Send or resend an invoice to the customer by email or text with a message.
MCP tool housecall_pro_write → send_invoice
write Confirm
Sends an invoice by email, text or both, with a custom subject and message, to the customer or to extra email addresses. Text needs online payments enabled on the invoice and a number in the Mobile field. Resending an invoice restarts the automatic reminder cadence. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| invoice_id string required | string | Invoice ID from list_invoices or get_job. |
| channels string[] | string[] | email, text or both. Default: ['email']. Text needs texting enabled on the account and a number in the customer's Mobile field. |
| to string[] | string[] | Extra email addresses. Default: the customer's email. |
| subject string | string | Email subject. |
| message string | string | Message to the customer. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "housecall_pro_write",
"arguments": {
"operation": "send_invoice",
"arguments": {
"invoice_id": "inv_7c20be",
"channels": [
"email"
],
"subject": "Reminder: invoice for your water heater service",
"message": "Hi Marcus, the balance of $780.00 was due on 2 October. You can pay online from the invoice. Thank you."
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"invoice_id": "inv_7c20be",
"status": "sent",
"sent_to": [
"marcus@example.com"
],
"channels": [
"email"
],
"sent_at": "2026-10-14T09:30:00-05:00"
},
"isError": false
}