Stripe event
A Stripe event is a record of something that happened in your account, such as a payment or a dispute. Webhooks deliver it, and the API keeps it for 30 days.
Updated October 1, 2026
A Stripe event is the record Stripe writes when something changes in your account. A card payment succeeds, a refund goes out, a subscription ends or a payout lands, and each one produces an Event object with an ID that starts with evt_. Webhooks deliver events to your server, and every alert, sync or report you build on Stripe starts from them.
Fields on a Stripe event
The fields you will use most:
typesays what happened, written as object then action. Examples arepayment_intent.succeeded,charge.refunded,charge.dispute.created,customer.subscription.deletedandpayout.paid.data.objectis a full copy of the affected resource at the moment the event was created. Acharge.refundedevent carries the whole Charge, andpayment_intent.succeededcarries the PaymentIntent.data.previous_attributesappears only on.updatedevents. It holds the fields that changed and their old values, which is how you tell a plan change from a card update insidecustomer.subscription.updated.createdis a Unix timestamp in seconds.livemodeistruefor real money andfalsefor test data.api_versionis the API version used to renderdata. It never changes, becausedatanever changes.request.idis the API request that caused the event. It is null when Stripe acted on its own, as with automatic subscription renewals.accountappears on Connect platforms and names the connected account the event came from.pending_webhookscounts the endpoints that haven't acknowledged the event yet.
One action can produce several events. In Stripe's example, creating a subscription fires both customer.subscription.created and charge.succeeded.
Events are snapshots
Because data.object is a snapshot, an event can be out of date when you process it. If a charge is refunded soon after it succeeds, a charge.succeeded event you handle late still shows the charge as not refunded. Use the event to learn what happened, and fetch the object from the API when you need its current state.
Stripe doesn't guarantee that events arrive in order, and it can deliver the same event twice. Different events can share the same created second, so the timestamp can't be used for ordering or deduplication. Track event IDs instead.
How to receive Stripe events
- Webhooks. A webhook endpoint subscribed to the event types you care about receives them in real time.
- The Events API.
GET /v1/eventslists events andGET /v1/events/:idretrieves one. Events stay in the API for 30 days, which helps you catch up after an outage. Store anything you need for longer.
Which Stripe events to watch
Stripe defines hundreds of event types, and most are bookkeeping. For a small SaaS or ecommerce team, a few carry most of the money:
payment_intent.payment_failedandinvoice.payment_failedmean revenue at risk, often the start of involuntary churn.charge.dispute.createdis a chargeback. Stripe takes the disputed amount plus a dispute fee, and you usually have 7 to 21 days to respond.charge.refundedmeans money is going back to a customer.customer.subscription.createdandcustomer.subscription.deletedmove recurring revenue up or down.payout.paidmeans a payout is expected to be in your bank account.
Who acts depends on the type. Failed payments go to whoever handles billing, disputes to the founder or finance, and cancellations to customer success. Which Stripe alerts go to finance, support, and founders has a fuller routing plan.
How ChargeBell uses Stripe events
ChargeBell reads your events through a read-only Stripe connection and turns the important ones into Slack alerts written in plain English. Each alert shows the amount and the customer. Payment alerts add what you keep after fees, and subscription alerts add the MRR change. ChargeBell deduplicates on the event ID, so a redelivered event produces one alert. Each alert type can go to its own channel, and alerts for money at risk, such as a failed payment, are critical and come through during quiet hours. The Stripe Slack integration page explains the setup.
Get alerted in Slack
Stripe events: payment_intent.succeeded, payment_intent.payment_failed, charge.refunded, charge.dispute.created, customer.subscription.created, customer.subscription.deleted, payout.paid
ChargeBell posts Stripe events to the Slack channel you pick, written in plain English.