Webhooks

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

EventData objectDetails
OmnibusOrderCreated, OmnibusOrderAccepted, OmnibusOrderRejected, OmnibusOrderSent, OmnibusOrderUpdated, OmnibusOrderCancelled, OmnibusOrderSettled, OmnibusOrderFailedOmnibusOrderResponseIndividual Order Events
OmnibusOrderUpdateRejectedUpdateOmnibusOrderResponseIndividual Order Events
OmnibusOrderCancelRejectedCancelOmnibusOrderResponseIndividual Order Events
OmnibusModelOrderCreated, OmnibusModelOrderAccepted, OmnibusModelOrderRejected, OmnibusModelOrderSent, OmnibusModelOrderCancelled, OmnibusModelOrderSettled, OmnibusModelOrderFailedOmnibusModelOrderResponseModel Order Events
OmnibusModelOrderCancelRejectedCancelOmnibusModelOrderResponseModel Order Events
OmnibusOrderFundingInstructionOmnibusOrdersWireInstructionFunding Instruction Event
OmnibusDividendCreatedOmnibusDividendDividend 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.

EventSent to
Individual order eventsThe platform that submitted the order
Model order eventsThe platform that submitted the model order and, if different, the platform the third-party custodian is set up under
Update and cancel rejectionsThe platform that made the request
Funding instructionsThe 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
DividendsThe platform the third-party custodian is set up under