Webhooks

Webhooks notify your application when objects change in Rollo. You register an HTTPS endpoint and subscribe to specific event types. Only subscribed events are delivered to that endpoint.

Subscribe in the dashboard

Open Dashboard → Webhooks, enter your endpoint URL, and select the event types your integration handles. You can edit subscriptions later, disable an endpoint temporarily, or roll the signing secret if it is compromised. The signing secret is shown once at creation—store it in your secrets manager.

Prefer the narrowest set of events that meets your needs. Subscribing to every event increases noise and processing cost without improving reliability.

Event types

  • checkout_session.completedCheckout finished successfully
  • checkout_session.expiredSession expired unpaid
  • payment.succeededCharge succeeded
  • payment.failedCharge failed
  • payment.refundedRefund issued
  • customer.createdCustomer record created
  • subscription.createdSubscription created
  • subscription.updatedSubscription changed
  • subscription.trial_will_endTrial ending soon
  • subscription.canceledSubscription canceled
  • invoice.paidSubscription invoice paid
  • invoice.payment_failedInvoice payment failed
  • dispute.createdDispute opened
  • payout.paidPayout deposited

Payload & verification

Each delivery includes a JSON body and a Rollo-Signature header. Compute an HMAC-SHA256 over the raw request body with your endpoint secret and compare it to the signature. Reject invalid or replayed requests. Respond with HTTP 2xx quickly; Rollo retries failed deliveries. Design handlers to be idempotent using the event id.

{
  "id": "evt_...",
  "type": "payment.succeeded",
  "created": 1723000000,
  "data": {
    "object": {
      "id": "pay_...",
      "amount": 4900,
      "currency": "usd",
      "checkout_session": "cs_..."
    }
  }
}