billing.payment_failed
Recurring charge against creator's payment method fails.
project_id is always null for billing events.When this fires
A scheduled charge against the creator's payment method fails. The platform will continue to retry inside the grace window.
Required ability
billing:read — token must carry this at mint time to subscribe an endpoint to this event.
Payload
{
"id": "evt_01HX...",
"type": "billing.payment_failed",
"created_at": "2026-04-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": null,
"data": {
"creator_id": "cre_01HX...",
"invoice_id": "in_1Nxy..",
"amount": "49.00",
"currency": "USD",
"attempt_count": 2,
"reason": "card_declined"
}
}Field reference
| Field | Type | Notes |
|---|---|---|
id | string ULID | Unique event id, prefixed evt_. Use for idempotent processing. |
type | string | Always billing.payment_failed 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 ULID | Creator the invoice was addressed to. |
data.invoice_id | string | Provider invoice id. |
data.amount | string | Attempted amount in major units of currency. |
data.currency | string | ISO 4217 currency code. |
data.attempt_count | integer | Provider-side retry count for this invoice. |
data.reason | string | Provider-supplied or normalized rejection reason. |
Caveats
- Multiple
billing.payment_failedevents can fire for the sameinvoice_idas Stripe retries. - grace_period_warning
](./grace-period-warning) and [billing.account_locked`](./account-locked) for that progression.
Related events
billing.invoice_paid— successful resolution.billing.account_locked— terminal state if recovery doesn't happen.- Billing events overview — back to family overview.
How is this guide?