Event catalogue
Every webhook event type RevKeen emits
Every webhook event uses the standard envelope. The table below lists every event type currently emitted, grouped by resource.
Subscribe to the events you care about when creating a webhook endpoint — do not subscribe to *. Fine-grained subscriptions are cheaper, faster, and easier to debug.
| Event | When it fires | data.object |
|---|
payment.succeeded | Gateway confirmed a successful capture. | Payment |
payment.failed | Gateway declined, returned an error, or timed out. | Payment |
payment.refunded | Full or partial refund was issued. | Payment |
payment.voided | Pre-settlement void succeeded. | Payment |
charge.captured | Auth was captured (deferred capture flows). | Charge |
charge.dispute.created | Cardholder initiated a dispute / chargeback. | Dispute |
charge.dispute.updated | Dispute state changed (evidence required, won, lost). | Dispute |
refund.created | Refund was accepted by the gateway. | Refund |
refund.succeeded | Refund settled successfully. | Refund |
refund.failed | Refund rejected or settlement failed. | Refund |
See the payment.succeeded example for a full payload.
| Event | When it fires | data.object |
|---|
invoice.finalized | Invoice moved from draft to open. | Invoice |
invoice.sent | Invoice email / SMS / WhatsApp was sent to the customer. | Invoice |
invoice.paid | Invoice fully paid. | Invoice |
invoice.payment_failed | A collection attempt failed — entry point to dunning. | Invoice |
invoice.voided | Invoice was voided before payment. | Invoice |
invoice.uncollectible | Invoice written off after failed collection. | Invoice |
credit_note.issued | Credit note issued against a paid invoice. | CreditNote |
See the invoice.paid example for a full payload.
| Event | When it fires | data.object |
|---|
subscription.created | A new subscription was started. | Subscription |
subscription.updated | Any field changed (plan, quantity, metadata). | Subscription |
subscription.renewed | A renewal cycle was billed. | Subscription |
subscription.canceled | Subscription was cancelled (immediate or end-of-period). | Subscription |
subscription.paused | Subscription paused via dashboard or API. | Subscription |
subscription.resumed | Previously paused subscription was resumed. | Subscription |
subscription.trial_will_end | Fires 3 days before trial end. | Subscription |
See the subscription.updated example for a full payload.
| Event | When it fires | data.object |
|---|
customer.created | Customer record created. | Customer |
customer.updated | Customer attributes changed. | Customer |
customer.deleted | Customer was hard-deleted. | Customer |
| Event | When it fires | data.object |
|---|
checkout.session.completed | Hosted checkout session was paid. | CheckoutSession |
checkout.session.expired | Session hit its TTL without payment. | CheckoutSession |
payment_link.completed | Customer completed a payment link flow. | PaymentLink |
| Event | When it fires | data.object |
|---|
payout.paid | Funds settled to the merchant's bank account. | Payout |
payout.failed | Payout rejected by the acquiring bank. | Payout |
| Event | When it fires | data.object |
|---|
terminal_payment.succeeded | Card-present terminal charge completed. | TerminalPayment |
terminal_payment.failed | Terminal charge declined or timed out. | TerminalPayment |
| Event | When it fires | data.object |
|---|
wallet.credit_issued | Credit was added to a customer's wallet. | Wallet |
wallet.code_created | Redemption code was minted. | WalletCode |
benefits.granted | Entitlement granted to a customer. | Entitlement |
| Event | When it fires | data.object |
|---|
usage.threshold_reached | Customer exceeded a configured usage threshold. | UsageSnapshot |
entitlement.expired | Time-bounded entitlement ended. | Entitlement |
| Event | When it fires | data.object |
|---|
endpoint.delivery.failed | A webhook endpoint had 3+ consecutive retry failures. | WebhookEndpoint |
Subscribe to this from a separate webhook endpoint (or an out-of-band alerting system) so you learn about outages on your primary endpoint.
Event payloads follow the same API versioning rules — new fields can appear at any time, existing fields never change meaning under an existing version header. Pin the endpoint's version when you create it via the dashboard or API.