payment.failed
Fired when a recurring charge fails
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
invoiceIdstring | null
The invoice ID, if available.
invoiceNumberstring | null
The human-readable invoice number, if available.
customerIdstring
The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
externalIdstring
Your external ID for this customer. Only included if you set an externalId when creating the customer.
subscriptionIdstring | null
The subscription ID, if the invoice is linked to a subscription.
failureCodestring | null
The failure code from the payment processor.
failureMessagestring | null
A human-readable failure message.
{
"event": "payment.failed",
"timestamp": "2026-04-25T00:05:00.000Z",
"organizationId": "org_abc123",
"data": {
"invoiceId": "inv_n4o5p6",
"invoiceNumber": "INV-0043",
"customerId": "user_123",
"externalId": "user_123",
"subscriptionId": "sub_1a2b3c4d",
"failureCode": "card_declined",
"failureMessage": "Your card was declined."
}
}How is this guide?