Skip to main content
One payload per event, grouped by resource. Every delivery has the same envelope — event names what happened, data carries it — so the objects below are what arrives in data. Every payload carries an event_id. Use it to make your handler idempotent: record what you have already processed and ignore a repeat.

Sub-client

Fires on every transition. It is the one to subscribe to.
reasons exists only here. No read of the sub-client returns it.
person_reference_id is null when the check was for the sub-client rather than one of its people.

Virtual account and deposits

The funds-ready signal. Nothing before it can receive money.
The rail-independent signal that money arrived.

Payouts

Subscribe to this one. IN_REVIEW and KYT_PENDING arrive here and nowhere else.
Amounts are strings. amount and recipient_amount differ by the fees and any conversion.

Requests for information

These reach a URL with no event filter, or one whose filter names them.
to_status here is the item’s, not the request’s.
resolution_reason rides along only on this one — it is the difference between a deadline that ran out and an answer that was refused.
Every payload carries to_status read off the row that moved, rather than inferred from the event name. A handler that stores the event can reconstruct state without knowing which events existed on the day it was written.