Commet
  • Pricing
Log InTry out
Introduction

Subscription Events

subscription.createdsubscription.activatedsubscription.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

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.dispute_resolved

A payment dispute was resolved as won or lost.

Payload

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

paymentTransactionIdstring

The disputed payment transaction ID.

invoiceIdstring | null

The invoice the payment collected, or null for payments without an invoice.

invoiceNumberstring | null

The human-readable invoice number, if available.

customerIdstring | null

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.

subscriptionIdstring | null

The subscription ID, if the invoice is linked to a subscription.

disputeAmountnumber

The contested amount in cents (100 = $1.00).

currencystring

The dispute currency code.

disputeReasonstring | null

The provider's reason code, or null when none is given.

outcomestring

The resolution: "won" or "lost".

{
  "event": "payment.dispute_resolved",
  "timestamp": "2026-05-20T13:30: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",
    "disputeAmount": 9900,
    "currency": "usd",
    "disputeReason": "fraudulent",
    "outcome": "won"
  }
}

When this fires

When the payment provider closes a dispute that previously fired payment.disputed. The payload carries the same identifiers plus the outcome:

  • won — the dispute was resolved in your favor; the frozen amount is restored to your payout balance and the payment returns to succeeded.
  • lost — the chargeback stands; the disputed amount stays deducted.

Use it to close the internal flag you opened on payment.disputed, and on lost to revoke whatever the original payment was funding.

How is this guide?

payment.disputed

A customer opened a dispute against a payment.

invoice.created

Fired when a new invoice is generated