billing.grace_period_warning
The creator is approaching automatic lockdown for an unpaid invoice.
project_id is always null for billing events. Fires once per past-due
cycle.
When this fires
The creator's account reaches the warning milestone on its overdue clock. That milestone depends on the plan's base price: day 3 for a creator on a zero-base-price (Free) plan, whose lockdown lands on day 7, and day 23 for a paid plan, whose lockdown lands on day 30.
Read days_until_lockdown from the payload rather than assuming a fixed offset — it carries the actual remaining days for that creator's tier.
Required ability
billing:read — token must carry this at mint time to subscribe an endpoint to this event.
Payload
{
"id": "evt_01HX...",
"type": "billing.grace_period_warning",
"created_at": "2026-05-11T08:00:00Z",
"api_version": "2026-05-01",
"project_id": null,
"data": {
"creator_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
"past_due_since": "2026-04-18T00:00:00Z",
"days_until_lockdown": 7
}
}Field reference
| Field | Type | Notes |
|---|---|---|
id | string ULID | Unique event id, prefixed evt_. Use for idempotent processing. |
type | string | Always billing.grace_period_warning for this event. |
created_at | ISO 8601 timestamp | Server-side emission time. |
api_version | string | Webhook API contract version. |
project_id | null | Always null — account-level event. |
data.creator_id | string UUID | Creator approaching lockdown. |
data.past_due_since | ISO 8601 timestamp | When the past-due state began. |
data.days_until_lockdown | integer | Whole days from emission until lockdown for this creator's tier. Typically 7 on a paid tier and 4 on Free or an unconverted trial; lower if the daily sweep is late, and 0 at the floor. |
Caveats
- Each past-due cycle produces at most one
billing.grace_period_warning. If the account recovers and re-enters past_due later, a new cycle and a new warning may issue. - After lockdown the clock keeps running: a deletion warning at 53 days locked and account deletion at 60 days locked on paid/trial thresholds (3 and 7 days on Free). Neither stage emits a
billing.*webhook — they surface as notifications only.
Related events
billing.payment_failed— the chain of failed collections leading here.billing.account_locked— fires when the lockdown day arrives: 7 days after this event on a paid tier, 4 on Free or an unconverted trial.- Billing events overview — back to family overview.
How is this guide?