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.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
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

payment_link.failed

A payment link charge attempt failed.

Payload

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

paymentIdstring

The payment link ID.

statusstring

The link status. Always "failed" for this event.

amountnumber

The amount that was attempted in cents (100 = $1.00).

currencystring

The payment currency code.

descriptionstring

The payment description shown to the customer.

customerIdstring | null

The customer ID, or null when the link is not tied to a customer. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.

failureCodestring | null

The failure code from the payment processor.

failureMessagestring | null

A human-readable failure message.

{
  "event": "payment_link.failed",
  "timestamp": "2026-06-18T14:03:00.000Z",
  "organizationId": "org_abc123",
  "mode": "live",
  "apiVersion": "2026-06-10",
  "data": {
    "paymentId": "pay_l1m2n3",
    "status": "failed",
    "amount": 5000,
    "currency": "usd",
    "description": "One-time onboarding fee",
    "customerId": "user_123",
    "failureCode": "card_declined",
    "failureMessage": "Your card was declined."
  }
}

When this fires

When a charge attempt on a payment link is declined. The link stays open — a failed link is retryable, and the customer can pay it again. A later successful attempt fires payment_link.completed.

failureCode is the processor's code (for example card_declined) and failureMessage is the human-readable reason, or null when the provider gives none.

The event fires the same way whether your organization runs on the Stripe provider or the Commet sandbox provider.

How is this guide?

payment_link.completed

A payment link was paid successfully.

payment_link.canceled

A payment link was canceled before being paid.