billing.trial_ending
The creator's platform trial is about to convert and take its first payment.
When this fires
The creator's own Subscriby trial crosses a reminder milestone on its way to converting. The trial collects a card at checkout and converts by itself, so this is the only advance notice a consumer gets before the first charge appears.
Milestones are configured per deployment and fire largest-first. The default ladder is 72 hours then 24 hours before trial_ends_at, so a standard 7-day trial produces exactly two events. A milestone wider than the trial itself is skipped rather than fired at signup, so a trial shorter than 72 hours emits only the 24-hour event. Fires once per milestone, not once per trial; read hours_remaining to tell the two apart.
Subscriby emails the creator alongside every emission, and mirrors it to their connected account when one is linked.
Reading amount correctly
When amount_estimated is false, the figure comes from the upcoming Stripe invoice and already includes tax, any discount, and the transaction fees the creator's own sales metered during the trial. It is what will actually be taken.
When amount_estimated is true, Stripe could not be reached and the figure is the plan's current price including any promotion in force. Treat it as indicative: do not reconcile against it, and do not surface it as a confirmed charge.
A creator carrying a credit grant or account balance will legitimately see "0.00"; the trial still converts, the invoice is simply covered.
Caveats
- Not once per trial. The default ladder emits twice. De-duplicate on
subscription_id+hours_remainingif your consumer must act only once. - A trial the creator cancels before it converts stops emitting: no further milestones fire and no charge is raised.
- The milestone ladder is deployment configuration, so do not hard-code
72and24. Readhours_remaining. hours_remainingis the milestone that fired, not the exact time left. The sweep runs hourly, so the true remaining time is somewhere within an hour below the value.
Related events
billing.invoice_created: the invoice this warning was about, once the trial actually converts.billing.payment_failed: fires instead if the card on file is declined at conversion.subscription.trial_converting: the subscriber-tier equivalent, for a creator's own members.
Header Parameters
t=<unix seconds>,v1=<hex>: the HMAC-SHA256 of "<t>.<raw body>" under the endpoint's secret. Verify it before acting, and refuse a t more than 300 seconds from now. During a secret rotation a v0= signature under the previous secret may precede v1=.
The event's ULID, bare. The envelope's id is the same ULID prefixed evt_, so strip the prefix before comparing. Deduplicate on it: a retry carries the same id.
The event name, the same as the envelope's type.
Always application/json.
Always Subscriby-Webhooks/1.0.
Request Body
application/json
The signed JSON envelope posted to your endpoint.
TypeScript Definitions
Use the request body type in TypeScript.
The envelope every event is delivered in.
Response Body
Example Requests
/billing.trial_endingHow is this guide?