WebhooksEvents

Event catalogue

Choose lifecycle events and inspect every published webhook schema.

Browse the webhook contracts in the public API specification. Availability depends on the product, endpoint subscriptions, and merchant configuration. A schema entry alone is not proof that a workflow has emitted an event.

Choose a lifecycle event

WorkflowGuidance
Invoice fulfilmentinvoice.paid; verify the current invoice state
Overdue follow-upinvoice.overdue; one notification per fixed step (0, 1, 7, 14, 30 days)
Payment reconciliationpayment.succeeded; avoid a second fulfilment if invoice processing owns it
Subscription accessSubscription state changes; choose published lifecycle events and reconcile status and effective dates
Direct Debitmandate.activated concerns mandate readiness; collection outcome is separate
UsageReview usage.threshold.reached and the relevant contract; not every usage event is billable

Related events are notifications, not a delivery-order guarantee. Choose a single fulfilment owner and use a business idempotency key. Mandate activation does not itself authorise immediate collection; observe notice and collection rules.

Payload reference

Each link opens the generated schema and available example. Examples are fixtures. See full and truncated envelopes.

Payment

EventReference
payment.succeededPayment succeeded
payment.failedPayment failed

Invoice

EventReference
invoice.createdInvoice created
invoice.paidInvoice paid
invoice.overdueInvoice overdue

Subscription

EventReference
subscription.createdSubscription created
subscription.activatedSubscription activated
subscription.canceledSubscription canceled
subscription.renewedSubscription renewed
subscription.pausedSubscription paused
subscription.resumedSubscription resumed
subscription.plan_changedSubscription plan changed

Customer

EventReference
customer.createdCustomer created
customer.updatedCustomer updated

Refund

EventReference
refund.createdRefund created
refund.succeededRefund succeeded

Void

EventReference
void.createdVoid created
void.succeededVoid succeeded
void.failedVoid failed

Credit Note

EventReference
credit_note.createdCredit note created
credit_note.issuedCredit note issued
credit_note.voidedCredit note voided

credit_note.created is sent when a credit note is created for an invoice. credit_note.issued follows when that credit note is issued (finalised) and its PDF is generated. Use credit_note.issued if you need the final document; use credit_note.created only if you act on the credit note before it is issued.

Checkout

EventReference
checkout.session.completedCheckout session completed
checkout.session.expiredCheckout session expired

checkout.session.completed is sent once when a checkout session is paid. checkout.session.expired is sent once when an open or pending session is expired with POST /v2/checkout-sessions/{id}/expire. A session that only reaches its expiry time without being paid is not sent as an event. Neither event is sent again if the same session is processed twice. A session that is already completed, or whose payment is in progress, cannot be expired, so it never sends checkout.session.expired.

In data.object, status is completed or expired, and amount_total and currency are in minor units and the session's currency. invoice_id is the invoice the session pays. success_url is included on a completed session when one was set.

Subscribing with a wildcard. One completed checkout produces two events: checkout.session.completed and commerce.checkout.completed. commerce.checkout.completed belongs to the commerce journey events and is not part of this catalogue. An endpoint subscribed to * receives both, and each has its own event id. checkout.* matches only the checkout.session.* events, and commerce.* matches only the commerce events. To act on a completed payment exactly once, subscribe to checkout.session.completed by name, or ignore commerce.checkout.completed in your handler.

Order

EventReference
order.createdOrder created
order.paidOrder paid
order.fulfilledOrder fulfilled

Terminal Payment

EventReference
terminal_payment.requestedTerminal payment requested
terminal_payment.succeededTerminal payment succeeded
terminal_payment.declinedTerminal payment declined
terminal_payment.cancelledTerminal payment cancelled
terminal_payment.errorTerminal payment error

Terminal Refund

EventReference
terminal_refund.succeededTerminal refund succeeded

Terminal Void

EventReference
terminal_void.succeededTerminal void succeeded

Usage

EventReference
usage.threshold.reachedUsage threshold reached
usage.period_finalizedUsage period finalized
usage.invoice.createdUsage invoice created
usage.event.ingestedUsage event ingested
usage.event.rejectedUsage event rejected
usage.event.excludedUsage event excluded
usage.event.quarantinedUsage event quarantined
usage.cap.exceededUsage cap exceeded

Meter

EventReference
meter.createdMeter created
meter.updatedMeter updated
meter.archivedMeter archived

Meter Price

EventReference
meter_price.createdMeter price created
meter_price.updatedMeter price updated
meter_price.deactivatedMeter price deactivated

Mandate

EventReference
mandate.signedMandate signed
mandate.activatedMandate activated
mandate.suspendedMandate suspended
mandate.cancelledMandate cancelled

Collection

EventReference
collection.scheduledCollection scheduled
collection.notice_sentAdvance notice sent
collection.succeededCollection succeeded
collection.failedCollection failed
collection.indemnity_claimedIndemnity claimed

Settlement

EventReference
settlement.createdSettlement created

Compatibility

Tolerate additive fields, validate required fields, and handle unknown event types without applying business effects. Never infer emission or delivery order from a catalogue label. Continue with receiving events.

Owner: david · Reviewed 10 Oct 2026 · Next review 30 Oct 2026

On this page