Commet
  • Pricing
Log InTry out
Introduction

Subscription Events

subscription.createdsubscription.activatedsubscription.reactivatedsubscription.canceledsubscription.updatedsubscription.plan_changedsubscription.cancellation_scheduledsubscription.cancellation_revokedsubscription.plan_change_scheduledsubscription.plan_change_revokedsubscription.past_due

Trial Events

trial.startedtrial.convertedtrial.expiredtrial.will_endtrial.checkout_ready

Checkout Events

checkout.ready

Payment Events

payment.receivedpayment.failedpayment.recoveredpayment.retry_failedpayment.refundedpayment.disputedpayment.dispute_resolved

Payment Link Events

payment_link.createdpayment_link.completedpayment_link.failedpayment_link.canceled

Invoice Events

invoice.createdinvoice.upcominginvoice.overdueinvoice.voided

Payment Method Events

payment_method.attachedpayment_method.updated

Customer Events

customer.createdcustomer.updatedcustomer.state_changed

Credits & Balance Events

credits.grantedcredits.purchasedcredits.lowcredits.depletedcredits.expiredbalance.topped_upbalance.lowbalance.depleted

Quota & Usage Events

quota.threshold_reachedquota.exceededusage.recorded

Seat Events

seats.updatedseats.limit_reached

Add-on Events

addon.activatedaddon.deactivated

Payout Events

payout.availablepayout.createdpayout.paidpayout.failed
System status
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

payment.retry_failed

All dunning retries were exhausted; the subscription was canceled.

Payload

All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.

invoiceIdstring

The invoice whose retries were exhausted.

invoiceNumberstring

The human-readable invoice number.

customerIdstring

The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.

subscriptionIdstring

The subscription ID.

reasonstring

Terminal dunning reason, usually the last processor decline code or "dunning_exhausted".

{
  "event": "payment.retry_failed",
  "timestamp": "2026-06-23T14:30:00.000Z",
  "organizationId": "8f14e45f-ceea-4e7a-9c3d-1c2b3a4d5e6f",
  "mode": "live",
  "apiVersion": "2026-07-11",
  "data": {
    "invoiceId": "inv_n4o5p6",
    "invoiceNumber": "INV-0043",
    "customerId": "user_123",
    "subscriptionId": "sub_1a2b3c4d",
    "reason": "card_declined"
  }
}

When this fires

After a payment failure puts a subscription in past_due, Commet retries the outstanding invoice on the dunning schedule. When the final retry fails, the invoice is marked uncollectible and the subscription is canceled — this event marks that terminal outcome.

It is the end of the dunning flow: payment.recovered will not follow, and subscription.canceled fires alongside it. Revoke access when you receive this event.

How is this guide?

payment.recovered

A previously failed payment was recovered.

payment.refunded

A payment was refunded to the customer.