Skip to main content
Grow CRM emits webhook events for every stage of a payment’s life. Your endpoint may receive four event keys: payment.created, payment.updated, payment.deleted, and payment.sundry. There is no payment.activity — payments have no comments, attachments, or activity logs. Recording a payment against an invoice always fires payment.created; if that payment brings the invoice balance to zero, the same underlying action also fires invoice.updated with change: "paid" — subscribe to both if your integration needs to act on each fact separately.
The webhook envelope structure, delivery behaviour, and retry logic are documented in Introduction. Signature verification is covered in Verification. Those conventions apply to every event on this page and are not repeated here.

One action, two webhooks

Recording a payment against an invoice always fires payment.created. If that payment brings the invoice’s balance to fully paid, the same underlying action also fires invoice.updated with change: "paid". Subscribe to both events if you need to know both “a payment came in” and “this invoice is now settled”.

The payment object

Every event key except payment.deleted carries the full payment object. In payment.created the object appears flat inside data; in payment.updated and payment.sundry it is nested under data.payment.

payment.created

Fires when a payment is recorded against an invoice. data is the full payment object.

payment.updated

Fires when a significant change is made to a payment. Read data.change to determine what changed; data.payment contains the full payment object reflecting its state after the change.
When change is refunded, a companion refund.created event also fires. See Refunds for the refund record’s own payload shape.

payment.sundry

Fires when a minor or cosmetic field is edited. Read data.field to determine which field changed; data.payment contains the full payment object.

payment.deleted

Fires after the payment is permanently deleted. Because the record no longer exists, data contains only the payment id. Payments are deleted through a single route regardless of whether one or several are selected, so this event can fire for a single payment even though the underlying action supports deleting multiple at once.