Webhooks

Webhooks

Receive and verify RevKeen webhook events

Webhooks push event notifications to your application when something changes in RevKeen — a payment succeeded, an invoice was paid, a subscription renewed. They are the correct way to keep your system in sync without polling.

Test webhook delivery in Staging. The mock server does not emit events.

Start here

Operational model

  1. Create an endpoint in the dashboard or via the Webhook Endpoints API. Select the event types you care about.
  2. RevKeen signs and POSTs each event as it occurs.
  3. Your server verifies the signature, commits a unique inbox entry, and only then returns 2xx.
  4. Downstream work happens asynchronously after acknowledgement.

The event envelope

Full event deliveries use an envelope like the illustrative excerpt below. Oversized payloads can use a signed reference instead (see Large payloads).

{
  "id": "evt_1a2b3c4d5e6f",
  "type": "payment.succeeded",
  "created": 1705689600,
  "livemode": true,
  "data": {
    "object": {
      "id": "resource_example"
    }
  }
}
FieldTypeDescription
idstringUnique event identifier. Use this for deduplication.
typestringEvent type using dot notation (e.g., payment.succeeded).
createdintegerUnix timestamp when the event was created.
livemodebooleantrue for production, false for staging.
data.objectobjectThe resource that triggered the event.
data.previous_attributesobjectOptional. May be present on update events (customer.updated, meter.updated, meter_price.updated) with the previous values of changed fields. Do not depend on it.

Large payloads

Oversized payloads can arrive as a signed reference with _truncated: true, objectId, objectType, fetchUrl, and updatedAt. Do not assume data.object exists. Verify the signature, persist the reference, then resolve the event through your configured API origin with the matching merchant credential. Do not blindly fetch an arbitrary URL from a request. See receiving events.

What's next

API reference for this workflow

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

On this page