Events

Track activity across your account with the event timeline and audit trail

Events provide a complete audit trail of everything that happens in your RevKeen account. Every action -- from customer creation to payment processing -- generates an event that you can view, filter, and react to via webhooks.

What is an event?

An event is a record of something that happened in your account. Each event includes:

  • What happened -- The event type (e.g., payment.succeeded)
  • When it happened -- Timestamp
  • What was affected -- Related entities (customer, invoice, etc.)
  • Event data -- Snapshot of the object at event time

Viewing events in the dashboard

Navigate to Sales > Events to view the event stream. Events are displayed in reverse chronological order.

Event stream columns

ColumnDescription
Event TypeWhat happened (e.g., payment.succeeded)
ObjectAffected entity (customer, invoice, etc.)
TimeWhen the event occurred
Webhook StatusDelivery status to your webhooks

Filtering events

Use filters to find specific events:

  • Event type -- Filter by category or specific type
  • Date range -- Events within a time period
  • Related object -- Events for a specific customer, invoice, etc.
  • Webhook status -- Delivered, failed, or pending

Event details

Click any event to view full details:

  • Event ID -- Unique identifier
  • Timestamp -- Exact time of occurrence
  • Event data -- Full payload (JSON)
  • Related objects -- Links to customer, invoice, etc.
  • Webhook deliveries -- Status of each webhook attempt

Events by object

View events for a specific object:

  1. Open any customer, invoice, subscription, etc.
  2. Click the Events tab
  3. See all events related to that object

Event catalogue

These are the events you can subscribe a webhook endpoint to. For guidance on choosing events for a workflow, see the webhook event guide.

RevKeen publishes 58 webhook events. This list is generated from the public API specification; each event links to its payload schema.

Checkout events

Event typeDescription
checkout.session.completedSent when a checkout session is successfully completed. Action required: Fulfill the customer's order.
checkout.session.expiredSent when an open or pending checkout session is expired with POST /v2/checkout-sessions/id/expire. A session that only reaches its expiry time without being paid does not send this event.

Invoice events

Event typeDescription
invoice.createdSent when a new invoice is created, either manually or from a subscription renewal.
invoice.paidSent when an invoice is fully paid. Action required: Fulfill the order or activate the subscription.
invoice.overdueSent when an invoice becomes overdue. Consider sending payment reminders.

Credit note events

Event typeDescription
credit_note.createdSent when a credit note is created for an invoice.
credit_note.issuedSent when a credit note is issued (finalized) and its PDF is generated.
credit_note.voidedSent when a credit note is voided (accounting reversal).

Order events

Event typeDescription
order.createdSent when a new order is created.
order.paidSent when an order is fully paid. Action required: Begin fulfillment.
order.fulfilledSent when an order is marked as fulfilled.

Subscription events

Event typeDescription
subscription.createdSent when a new subscription is created (before activation).
subscription.activatedSent when a subscription becomes active after successful payment. Action required: Grant access to your service.
subscription.canceledSent when a subscription is canceled. Access continues until the end of the billing period.
subscription.renewedSent when a subscription successfully renews. A new invoice has been created and paid.
subscription.pausedSent when a subscription is paused immediately: by you through the API or the dashboard, or by the customer in the portal. A pause scheduled for the end of the period is not announced when it takes effect. Renewals stop until it is resumed; nothing already issued is voided or recalled. data.object is the subscription: id, subscription_id, customer_id, status (paused), previous_status and effective_date. Action required: decide whether the customer keeps access while the subscription is paused. Fetch the subscription for its current state.
subscription.resumedSent when a paused subscription is resumed through the API or the dashboard. A resume the customer makes in the portal is not announced. The periods that elapsed while it was paused are not billed: the next charge is the next billing date after the resume. data.object is the subscription: id, subscription_id, customer_id, status (active), previous_status and effective_date. Fetch the subscription for its current period and next billing date.
subscription.plan_changedSent when a subscription moves to another price: through the API (POST /v2/subscriptions/id/change-plan) or the dashboard. Nothing is charged when the plan changes; the proration is added to, or credited on, the next renewal invoice. data.object carries subscription_id, customer_id, status, previous_status, previous_plan_name, new_plan_name, amount, currency, effective_date and action_source. For a change made through the API (action_source api), amount is the new renewal amount in minor units. Fetch the subscription for its current price and amount.

Payment events

Event typeDescription
payment.succeededSent when a payment is successfully captured. Action required: Provision goods or services to your customer.
payment.failedSent when a payment attempt fails. Contains failure reason and suggested next steps.

Refund events

Event typeDescription
refund.createdSent when a refund is initiated.
refund.succeededSent when a refund is successfully processed by the payment gateway.

Void events

Event typeDescription
void.createdSent when a void is initiated for an unsettled transaction.
void.succeededSent when a void is successfully processed by the payment gateway. The original transaction has been canceled.
void.failedSent when a void fails (e.g., transaction already settled). Consider using a refund instead.

Customer events

Event typeDescription
customer.createdSent when a new customer is created.
customer.updatedSent when customer information is updated.

Direct Debit mandate events

Event typeDescription
mandate.signedSent when a customer signs a Direct Debit mandate instruction. The mandate is pending lodgement with the bank (AUDDIS) — wait for mandate.activated before collecting.
mandate.activatedSent when a mandate is lodged and active. Action required: You can now collect from this customer via Direct Debit.
mandate.suspendedSent when a mandate is suspended and can no longer be collected against until reinstated. Also sent when the customer's bank rejects a new mandate's setup (AUDDIS); the failure reason names the rejection. Action required in that case: re-collect bank details or use another payment method.
mandate.cancelledSent when a mandate is cancelled (by you, the customer, or the bank). It can no longer be collected against.

Direct Debit collection events

Event typeDescription
collection.scheduledSent when a Direct Debit collection is scheduled against an active mandate. Includes the working-day collection date.
collection.notice_sentSent when the mandatory advance notice for an upcoming collection has been issued to the customer.
collection.succeededSent when a Direct Debit collection is successfully taken. Action required: Provision goods or services to your customer.
collection.failedSent when a Direct Debit collection fails (e.g. insufficient funds). Contains the Bacs reason code. Action required: RevKeen Recovery may retry or fall back to a stored card per your policy.
collection.indemnity_claimedSent when a customer raises a Direct Debit indemnity claim (the Bacs chargeback equivalent) and the collection is reversed. Action required: Review the disputed collection.

Settlement events

Event typeDescription
settlement.createdSent when collected Direct Debit funds are settled and a payout is created. Gross settlement — the bureau fee is reported separately and never netted from the payout.

Terminal events

Event typeDescription
terminal_payment.requestedSent when a card-present payment is dispatched to a terminal device. The payment is in-progress and awaiting terminal response.
terminal_payment.succeededSent when a card-present payment is approved by the terminal. Action required: Provide goods or services to the customer.
terminal_payment.declinedSent when a card-present payment is declined by the terminal or card issuer.
terminal_payment.cancelledSent when a card-present payment is cancelled by the merchant before terminal response.
terminal_payment.errorSent when a card-present payment fails due to timeout, terminal error, or connection loss. Check failure_reason field: timeout, terminal_error, or connection_lost.
terminal_refund.succeededSent when a card-present refund is approved by the terminal.
terminal_void.succeededSent when a card-present void is approved by the terminal. The original transaction has been reversed.

Usage events

Event typeDescription
usage.threshold.reachedSent when a customer's usage crosses a configured threshold percentage on a meter. Use this to alert customers approaching or exceeding their included allowance.
usage.period_finalizedSent when a billing period is finalized with final usage quantities. An invoice will be generated shortly after.
usage.invoice.createdSent when finalized usage records are converted into an invoice for a customer subscription.
usage.event.ingestedSent after a usage event is accepted by ingestion. This is a high-volume event and should be subscribed to explicitly with narrow endpoint filters.
usage.event.rejectedSent when a usage event is rejected during ingestion validation. Rejected events are not billable.
usage.event.excludedSent when a usage event is considered by a meter but excluded by filter conditions. The event is not billable. Delivery is at-least-once; dedupe on data.dedupeKey.
usage.event.quarantinedSent when a usage event cannot be matched to a single active meter (unmatched, ambiguous, or terminal processing failure). Delivery is at-least-once; dedupe on data.dedupeKey.
usage.cap.exceededSent when a hard usage cap refuses the event. The ingest transaction rolled back: nothing was persisted and nothing was charged. Delivery is at-least-once; dedupe on data.dedupeKey.

Meter events

Event typeDescription
meter.createdSent when a usage meter is created.
meter.updatedSent when a usage meter is updated. The payload includes changed attributes when available.
meter.archivedSent when a usage meter is archived and can no longer be attached to new pricing.
meter_price.createdSent when a meter price is created for a product price.
meter_price.updatedSent when a meter price is updated. The payload includes changed attributes when available.
meter_price.deactivatedSent when a meter price is deactivated and no longer available for new subscriptions.

Event data structure

Each webhook event uses the same envelope:

FieldDescription
idUnique event identifier
typeEvent type (e.g., invoice.paid)
createdWhen the event occurred (Unix timestamp)
livemodetrue for live events, false for sandbox
data.objectSnapshot of the affected object
data.previous_attributesPrevious values of changed attributes, on update events

Large payloads may arrive as a signed reference instead of a full data.object; see full and truncated envelopes.

Reacting to events with webhooks

Configure webhooks to receive real-time notifications when events occur:

  1. Go to Settings > Webhooks
  2. Create a webhook endpoint
  3. Select which event types to receive
  4. RevKeen sends HTTP POST requests to your endpoint

Webhooks are the recommended way to sync RevKeen data with your systems. See the Webhooks documentation for details.

Webhook delivery status

For each event, you can see the webhook delivery status:

StatusDescription
DeliveredWebhook received 2xx response
PendingAwaiting delivery or retry
FailedAll retry attempts exhausted

Click Retry on failed deliveries to resend the webhook manually.

Using events for debugging

The event stream helps you debug issues:

  • Payment failures -- See payment.failed events with error details
  • Webhook issues -- Check delivery logs and response codes
  • Customer activity -- Trace all events for a customer
  • Timeline reconstruction -- Understand sequence of events

Exporting events

Export events for external analysis:

  1. Apply filters for the events you need
  2. Click Export
  3. Choose format (CSV or JSON)
  4. Download the export file

Event retention

Events are retained for historical reference:

  • Full event data available for 30 days
  • Event metadata retained indefinitely
  • Export important events for long-term storage

Next steps

  • Notifications -- Manage in-app notification preferences
  • Settings -- Configure webhook endpoints in settings

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

On this page