payment.refunded
A payment was refunded to the customer.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The refunded payment transaction ID.
The invoice the payment collected, or null for payments without an invoice.
The human-readable invoice number, if available.
The customer ID, when the payment is linked to an invoice. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
The subscription ID, if the invoice is linked to a subscription.
The refunded amount in cents (100 = $1.00).
The refund currency code.
{
"event": "payment.refunded",
"timestamp": "2026-04-28T16:40:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-06-10",
"data": {
"paymentTransactionId": "ptx_q7r8s9",
"invoiceId": "inv_n4o5p6",
"invoiceNumber": "INV-0043",
"customerId": "user_123",
"subscriptionId": "sub_1a2b3c4d",
"refundAmount": 9900,
"currency": "usd"
}
}When this fires
When a refund is issued for a payment — full or partial — and the payment provider confirms it. A full refund of a subscription invoice also cancels the subscription immediately (subscription.canceled fires with reason refund); a partial refund leaves the subscription untouched.
refundAmount is the refunded amount in cents (100 = $1.00). The invoice fields are null for payments that were not tied to an invoice.
Use it to mirror the refund in your own books or to notify the customer through your channels.
How is this guide?