Webhooks

For AI agents: the docs index is at /llms.txt, and every page is also served as markdown at its URL plus .md.

The Stripe events TrialValid handles, how each event is claimed once, and why invoice events are not subscribed.

TrialValid receives events from Stripe. The signature of each event is verified against the endpoint secret before anything runs.

Handled events

EventWhat TrialValid does
payment_intent.amount_capturable_updatedThe card is confirmed: start the trial subscription
payment_intent.canceledThe hold was released by the network or by us: update the trial
payment_intent.succeededA capture settled, including captures made outside TrialValid
customer.subscription.deletedThe subscription ended: update the trial
charge.dispute.createdFlag the trial and alert you
account.application.deauthorizedYou disconnected Stripe: held trials become hold_lost

Each event is handled once

An event is claimed when it first arrives and answered as a duplicate if Stripe sends it again. If a handler fails, the claim is released so Stripe's retry runs the handler again.

Your invoices are never held back

TrialValid never subscribes to invoice.created. While an endpoint subscribed to that event keeps failing, Stripe waits before finalizing invoices, so leaving it out means a slow or failed delivery to TrialValid never delays an invoice on your account.