Webhook events

Webhook event: invoice.paid

The payload Cooledge sends when a payment is recorded against an invoice.

Updated 17/06/2026

invoice.paid

Sent when an invoice is paid (a payment is recorded against it). payment_amount is this payment, amount_paid_total is the cumulative total and amount_due is the remaining balance. Delivered to your webhook subscriptions. Deliveries are at-least-once, so dedupe on X-Cooledge-Event-Id.

Envelope

Every event shares the flat envelope: event_type, version ("v1"), event_id, business_id, occurred_at, plus the fields below. See the events overview for the envelope detail and webhooks for signature verification and delivery semantics.

Fields

FieldTypeNotes
invoice_idstringUUID of the paid invoice.
invoice_numbernumberThe internal invoice number.
invoice_seqnumberThe per-business sequence number for the invoice.
totalnumberThe invoice total.
payment_amountnumberThe amount of this payment.
amount_paid_totalnumberThe cumulative amount paid against the invoice.
amount_duenumberThe remaining balance after this payment.
statusstringThe invoice status after this payment.
payment_methodstringHow the payment was made, for example card or bank_transfer.
payment_referencestring or nullA reference for the payment, when one was recorded. Null otherwise.
payment_notesstring or nullNotes on the payment, when any were recorded. Null otherwise.
job_idstring or nullUUID of the linked job, when one is set. Null otherwise.
customer_idstring or nullUUID of the linked customer, when one is set. Null otherwise.
paid_atstring or nullISO 8601 timestamp the payment was recorded. Null when not recorded.
external_ghl_contact_idstring or nullThe matching GoHighLevel contact id, from the linked customer when one exists.
external_ghl_opportunity_idstring or nullThe matching GoHighLevel opportunity id, from the linked lead when one exists.
customer_namestring or nullThe customer's name from the live customer row.
customer_emailstring or nullThe customer's email from the live customer row.
customer_phonestring or nullThe customer's phone from the live customer row.

The customer_* and external_ghl_* fields are the shared correlation block, resolved from the live customer and lead rows.

Example

{
  "version": "v1",
  "event_type": "invoice.paid",
  "event_id": "c6a2e904-3b59-4d27-9610-5f2d8a0c4b69",
  "business_id": "a7f3c9d1-2e84-4b6f-8c01-5d9e2a1f7b30",
  "occurred_at": "2026-06-17T11:02:48.117Z",
  "invoice_id": "7d2c9e64-1a38-4b05-8f72-3e1a0c5d9b48",
  "invoice_number": 1042,
  "invoice_seq": 58,
  "total": 2310.00,
  "payment_amount": 1000.00,
  "amount_paid_total": 1000.00,
  "amount_due": 1310.00,
  "status": "partial",
  "payment_method": "bank_transfer",
  "payment_reference": "EFT-20260617-0042",
  "payment_notes": "Part payment received, balance to follow.",
  "job_id": "5c1a0e74-3d29-4b06-9f81-2e7a0c4d6b18",
  "customer_id": "8c3e1a72-5d49-4b06-9f81-2e7a0c4d6b18",
  "paid_at": "2026-06-17T11:02:48.117Z",
  "external_ghl_contact_id": "x9TpL2mQ7sV4nB1k",
  "external_ghl_opportunity_id": "pT8wK3rN6vM1jQ5d",
  "customer_name": "Priya Nair",
  "customer_email": "priya.nair@example.com",
  "customer_phone": "+61498765432"
}

See webhooks for signature verification and delivery semantics, and all events.

Need a hand with an integration? Contact support