Omnibus webhooks notify your platform when an order or model order changes state, when a third-party custodian needs to fund buys, and when a dividend is allocated. Use them to keep your order management, reconciliation and investor-facing systems in sync without polling the order APIs.
Monark sends a webhook when an individual order or model order is created, accepted, rejected, sent to the transfer agent (TA), updated, cancelled, settled or failed. It also sends one when a third-party custodian needs to fund buys at Monark's cutoff (OmnibusOrderFundingInstruction), and one for each dividend allocated to a client's tax lot (OmnibusDividendCreated).
For registration, signature verification, retries and the event log, see Webhooks. For how to act on each event, see the Omnibus Webhooks guide.
Envelope
Each delivery is a signed JSON POST. The body holds the event type and a data object whose shape depends on the event:
{
"eventType": "OmnibusOrderSettled",
"data": { }
}Fields are camelCase and enums are sent as strings. The body has no event ID or timestamp of its own: use the X-Webhook-Event-Id header to skip events you have already processed.
Asynchronous Processing
Cancellation and update requests may be accepted as Pending before the order changes. This holds for both individual and model orders. Rely on the Cancelled, Updated or rejection webhook as confirmation that the request has completed.
Rejections returned directly in an API response (for example a create that comes back as 201 with a status of Rejected, or a cancel refused with 409) do not send a webhook. The response is the only notification.
Completing a model order works differently. POST /primary/v1/omnibus/model-order/complete returns 202 with a status of Processing, and the outcome follows as OmnibusModelOrderCreated, OmnibusModelOrderRejected or OmnibusModelOrderFailed.
Events & Payloads
| Event | Data object | Details |
|---|---|---|
OmnibusOrderCreated, OmnibusOrderAccepted, OmnibusOrderRejected, OmnibusOrderSent, OmnibusOrderUpdated, OmnibusOrderCancelled, OmnibusOrderSettled, OmnibusOrderFailed | OmnibusOrderResponse | Individual Order Events |
OmnibusOrderUpdateRejected | UpdateOmnibusOrderResponse | Individual Order Events |
OmnibusOrderCancelRejected | CancelOmnibusOrderResponse | Individual Order Events |
OmnibusModelOrderCreated, OmnibusModelOrderAccepted, OmnibusModelOrderRejected, OmnibusModelOrderSent, OmnibusModelOrderCancelled, OmnibusModelOrderSettled, OmnibusModelOrderFailed | OmnibusModelOrderResponse | Model Order Events |
OmnibusModelOrderCancelRejected | CancelOmnibusModelOrderResponse | Model Order Events |
OmnibusOrderFundingInstruction | OmnibusOrdersWireInstruction | Funding Instruction Event |
OmnibusDividendCreated | OmnibusDividend | Dividend Event |
OmnibusOrderPartiallyFilled, OmnibusModelOrderPartiallyFilled | — | Retired and never sent. Fills in the netting queue don't send an event of their own; read them with GET /primary/v1/omnibus/order/{id} |
OmnibusCancelOrderFundingInstruction | — | Reserved. Not currently sent |
Order payloads are the same projection returned by the Omnibus order APIs: identifiers, your referenceId, side, fund and share class IDs, amounts and fees, distribution and tax lot elections, routing, status and status reason, timestamps, and fills and settlement items once the order settles.
Who Receives Each Event
Each webhook you register receives every event type sent to your platform. There is no per-event subscription.
| Event | Sent to |
|---|---|
| Individual order events | The platform that submitted the order |
| Model order events | The platform that submitted the model order and, if different, the platform the third-party custodian is set up under |
| Update and cancel rejections | The platform that made the request |
| Funding instructions | The platform the third-party custodian is set up under. Model order lines are also sent to the platform that submitted the model order. Each platform receives only its own orders |
| Dividends | The platform the third-party custodian is set up under |