Webhooks

List events (the same objects delivered by webhooks)

GET/events

Your events, newest first. An event is written each time a payment, payout, transfer or exchange reaches a new status — from every channel: the API's, the portal's, a batch file's and the legacy /v1 contract's. Its data is the resource exactly as its own GET read at that moment. Use it for reconciliation, or — until webhook delivery ships — as the way to learn outcomes without polling every resource. Events are retained for 30 days.

A status the resource passed through between two observations may not get an event of its own (a transfer can go from pending to completed with only the latter recorded); the terminal ones always do. Payout and transfer events follow the ledger within about a minute. Requires webhooks:read.

Authentication
ApiKeyAuth
Execution
synchronous

Parameters

  • limitintegerquery

    Default: 20

    ≥ 1 · ≤ 100

  • cursorstringquery
    Opaque cursor from a previous page's nextCursor.

    max length 512

  • createdAfterstring (date-time)query
    Inclusive lower bound on createdAt.
  • createdBeforestring (date-time)query
    Exclusive upper bound on createdAt.
  • typestringquery

    Allowed values: payment.pendingpayment.processingpayment.completedpayment.failedpayment.expiredpayment.cancelledpayment.refundedpayout.pendingpayout.processingpayout.completedpayout.failedpayout.cancelledtransfer.pendingtransfer.completedtransfer.failedfx_exchange.pendingfx_exchange.processingfx_exchange.completedfx_exchange.failedfx_exchange.cancelled

  • resourceIdstringquery
    Only events about this resource — its id as its own GET returns it (pay_…, fx_…, or txn_… for a payout or transfer).

    max length 64

Responses

A page of events.

Headers

  • X-Request-Idstring
    The client's X-Request-Id if supplied, otherwise a server-generated id. Equals traceId in problems.
  • RateLimit-Limitinteger
  • RateLimit-Remaininginteger
  • RateLimit-Resetinteger
    Seconds until the window resets.

Schema application/json

  • objectstringrequired

    Allowed values: list

  • dataarray<Event>
    • objectstringrequired

      Allowed values: event

    • idstringrequired
      Stable across retries — deduplicate on this.

      Example: evt_019985c24a6e7c3b9f102d5e8a1b3c4d

      pattern ^evt_[0-9a-f]{32}$

    • typestringrequired

      Allowed values: payment.pendingpayment.processingpayment.completedpayment.failedpayment.expiredpayment.cancelledpayment.refundedpayout.pendingpayout.processingpayout.completedpayout.failedpayout.cancelledtransfer.pendingtransfer.completedtransfer.failedfx_exchange.pendingfx_exchange.processingfx_exchange.completedfx_exchange.failedfx_exchange.cancelled

    • versionstringrequired
      Envelope version. Additive changes — a new field, a new event type, a new enum value — never bump it.

      Allowed values: 1

    • createdAtstring (date-time)required
      RFC 3339, UTC, with millisecond precision.

      Example: 2026-09-18T10:15:30.123Z

    • dataobjectrequired
      The full resource as GET would return it at the time of the event.
    • deliveryobject
      How the event's delivery to your webhook stands. Present in GET /events responses, never in the delivered payload — and absent for an intermediate status (only outcomes are delivered) and when your webhook did not take native v2 events when the event happened. failing is retrying after a failed attempt; exhausted ran out of retries.
  • hasMorebooleanrequired
  • nextCursorstringnullable
    Pass as cursor to fetch the next page. null when hasMore is false.