invoice.upcoming
Predictive event fired once, 3 days before a subscription renews.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The subscription ID.
The customer ID. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
Always "active" for this event.
The plan ID.
The plan name.
The billing interval (monthly, yearly).
ISO 8601 datetime when the current period ends and the renewal invoice is issued.
{
"event": "invoice.upcoming",
"timestamp": "2026-04-22T06:00:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-05-25",
"data": {
"subscriptionId": "sub_1a2b3c4d",
"customerId": "user_123",
"status": "active",
"planId": "plan_pro_monthly",
"planName": "Pro",
"billingInterval": "monthly",
"currentPeriodEnd": "2026-04-25T00:00:00.000Z"
}
}When this fires
A daily scan finds active subscriptions renewing within the next 3 days and emits this event once per renewal. The idempotency key is derived from the subscription and the renewal date, so re-running the scan never sends a duplicate.
Subscriptions with a scheduled cancellation are excluded — no renewal invoice will be issued for them.
Use it to notify the customer before they are charged. The payload intentionally carries no amount: usage-based charges are only final at renewal time, when invoice.created delivers the actual invoice.
How is this guide?