Refunds
New to webhooks? Start with Getting started (envelope, delivery, retries) and Verification (confirming a request came from Grow CRM). Those conventions apply to every event below and are not repeated here.Refunds expose four keys:
refund.created, refund.updated, refund.deleted, refund.sundry.
There is no refund.activity — refunds have no comments, attachments or logs in core.
A refund always belongs to exactly one payment, and a payment can have at most one refund.
Refunds and payments fire together
A refund can be created or removed from two places — the Refunds section, or the refund button on the Payments list. Both do the same thing, and both now fire the same events. Refunding a payment produces two webhooks, describing two different facts:
Removing a refund likewise produces
refund.deleted and payment.updated
(change: refund_removed, payment status back to paid). Subscribe to whichever fits your
integration — you do not need both.
The refund object
Every key except.deleted carries this shape, either flat (.created) or nested under refund
(.updated/.sundry):
refund.created
Fires when a refund is created, from either the Refunds section or the Payments list. data is the
full refund object above.
refund.updated
Fires on a significant change. data.change tells you which; data.refund is the full object.
refund.sundry
Fires on a minor, cosmetic field edit. data.field names it; data.refund is the full object.
refund.deleted
Fires after the refund is deleted, from either the Refunds section or the Payments list. data is
just the id — the record no longer exists to describe.
Deleting from the Refunds section is a checkbox selection, so removing several refunds at once
delivers one event per refund, not one event containing a list.
