Skip to main content
This page lists every event you can pass in subscribedEvents when registering a webhook endpoint. Event names follow the {resource}.{subject} convention. Events fire on transitions of the resource’s publicly observable status — internal-only states never produce webhook events.

Wildcards

In addition to individual event names, subscribedEvents accepts:

Customer events

Fired as a customer’s verification profile moves through its status lifecycle. One event fires per verification profile per transition — a customer with multiple profiles produces an independent event stream per profile. Example — customer.approved:
The cause field is reserved for a machine-readable rejection reason. It is currently always null, including on customer.rejected — structured rejection reasons ship in an upcoming release.

Transfer events

Fired as a transfer moves through its status lifecycle. Webhooks are now the recommended way to track transfer progress. Example — transfer.succeeded:
Transfer event names use the public API resource name (transfer.*), while data.id uses the payout_ prefix — matching the IDs returned by the /v2/transfer API today. transferType is staticTransfer for on-ramper accounts and offloader wallets, oneTimeTransfer otherwise. The deprecated undeliverable status does not produce events.
The cause field is reserved for a machine-readable failure reason on terminal failure events (transfer.failed, transfer.returned, transfer.expired, transfer.canceled, transfer.failedPrecondition, transfer.unexpectedError). It is currently always null — structured failure reasons ship in an upcoming release.
Last modified on August 11, 2026