payload of every item of GET /webhook-events, is the same envelope:
In
data, a field with no value is left out, never sent as null: uetr on a deposit with no wire reference, tokenIssuanceId on a transfer. The endpoints, by contrast, always return every field, with null when there is no value.
Event types
The names follow
investor.<resource>.<action>. New types are added as the API covers more of your activity: store an eventType you do not know and keep going. The request body of each event, with examples, is in the API reference under Webhooks.
The order of a subscription
investor.deposit.processed: one for your deposit, and one for its liquidation. A subscription funded by several deposits sends a pair per deposit and one minting for all of them. The issuance transaction and the minting are recorded independently: either can arrive first. See Reconcile a subscription.
The order of a redemption
A reinvested distribution
A distribution you reinvest sendsinvestor.payout.completed with paymentMethod reinvest and the cash value of the distribution, then investor.minting.completed with source reinvest and no deposits, and investor.transaction.processed with processType reinvest. The minting and the transaction share tokenIssuanceId; the payout carries no id that links it to them, so match it by tokenId and time.
Delivery guarantees
- At least once. The same event can arrive more than once, with the same
eventId. - Possibly out of order. Steps recorded by different parts of Securitize arrive independently.
- No failure events. A step that does not complete sends nothing. When an expected webhook does not arrive, check the deposit or transaction, and
GET /webhook-events. - Retried for about a day on anything but a
2xxwithin 15 seconds, then marked failed. Every webhook sent stays readable throughGET /webhook-events.