billing.tier_upgraded
Creator upgrades to a higher Subscriby tier.
project_id is always null for billing events.When this fires
The creator switches their Subscriby subscription to a higher-priced tier. Pro-ration is applied through the payment provider — except when the creator is still inside their platform trial, where the switch is not prorated because nothing has been paid yet.
Required ability
billing:read — token must carry this at mint time to subscribe an endpoint to this event.
Payload
{
"id": "evt_01HX...",
"type": "billing.tier_upgraded",
"created_at": "2026-05-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": null,
"data": {
"creator_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
"from_tier": "308eb3da-1eb6-11f0-b4f2-d8bbc173f8c3",
"to_tier": "882b72bb-1eb6-11f0-b4f2-d8bbc173f8c3",
"effective_at": "2026-05-18T10:05:00Z"
}
}Field reference
| Field | Type | Notes |
|---|---|---|
id | string ULID | Unique event id, prefixed evt_. Use for idempotent processing. |
type | string | Always billing.tier_upgraded 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 whose tier changed. |
data.from_tier | string UUID | Previous tier plan id. Always present — a first subscription goes through checkout and emits no tier event. |
data.to_tier | string UUID | New tier plan id. |
data.effective_at | ISO 8601 timestamp | Always the emission time — upgrades take effect immediately. |
Caveats
- Tier changes can unlock features (e.g. Teams on Growth+); event consumers should refresh tier caches on receipt.
- Pro-ration charges fire
billing.invoice_createdseparately for the proration line (not on an upgrade taken during the platform trial).
Related events
billing.tier_downgraded— opposite direction.billing.invoice_created— proration invoice.- Billing events overview — back to family overview.
How is this guide?