invoice.voided
An invoice was voided and will not be collected.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The invoice ID.
The human-readable invoice number.
Always "void" for this event.
ISO 8601 start of the billing period.
ISO 8601 end of the billing period.
ISO 8601 date the invoice was issued.
ISO 8601 date the invoice was due.
The invoice currency code.
Subtotal in cents (100 = $1.00).
Total in cents (100 = $1.00).
The customer ID. 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.
{
"event": "invoice.voided",
"timestamp": "2026-04-26T10:00:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-05-25",
"data": {
"invoiceId": "inv_n4o5p6",
"invoiceNumber": "INV-0043",
"invoiceStatus": "void",
"periodStart": "2026-04-25T00:00:00.000Z",
"periodEnd": "2026-05-25T00:00:00.000Z",
"issueDate": "2026-04-25T00:00:00.000Z",
"dueDate": "2026-04-25T00:00:00.000Z",
"currency": "usd",
"subtotal": 9900,
"total": 9900,
"customerId": "user_123",
"subscriptionId": "sub_1a2b3c4d"
}
}When this fires
An invoice is voided when it is nullified before collection: an admin marks it void through the dashboard or the API, or Commet voids unpaid invoices automatically when their subscription is canceled. Voiding is terminal — a void invoice is never retried or collected.
The payload carries the same invoice resource shape as invoice.created, with invoiceStatus set to "void".
Use this event to reverse anything you keyed off invoice.created for this invoice — pending dunning reminders, accounting entries, or in-app banners about an open invoice.
How is this guide?