trading-venue.trade-settled.final
A matched trade settled on chain and the venue recorded it. Sent once per trade after the settlement transaction is confirmed; delivery says whether the market's holding period still holds the tokens. A later trading-venue.trade-settled.retracted names a trade a bust reversed.
Delivery contract
| Field | Value |
|---|---|
| Event type | trading-venue.trade-settled.final |
| Version | 1 |
| Lifecycle state | final |
| Counter-signed receipts | No event-specific advice |
| SDK type | Webhook.TradingVenueTradeSettledFinalV1 |
The receipt recommendation does not change delivery behavior. DALP waits for a counter-signed receipt only if the webhook endpoint's counterSignedReceipts value is true when DALP queues the delivery. When the value is false, a normal 2xx response completes the delivery.
Related references:
marketIdtradeId
Payload schema
The schema and examples describe the full payload. Thin delivery omits personal data fields. Use the payload-shape guidance to choose the endpoint configuration.
{
"type": "object",
"properties": {
"marketId": {
"type": "string",
"minLength": 1
},
"tradeId": {
"type": "string",
"minLength": 1
},
"chainId": {
"type": "integer",
"exclusiveMinimum": 0
},
"buyOrderId": {
"type": "string",
"minLength": 1
},
"sellOrderId": {
"type": "string",
"minLength": 1
},
"priceTick": {
"type": "string",
"pattern": "^(?:0|[1-9]\\d*)$"
},
"quantity": {
"type": "string",
"pattern": "^(?:0|[1-9]\\d*)$"
},
"settlementTxHash": {
"type": "string",
"pattern": "^0x[a-fA-F0-9]{64}$"
},
"delivery": {
"type": "string",
"enum": ["pending-delivery", "delivered"]
},
"sequence": {
"type": "string",
"pattern": "^(?:0|[1-9]\\d*)$"
},
"executedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
},
"occurredAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
}
},
"required": [
"marketId",
"tradeId",
"chainId",
"buyOrderId",
"sellOrderId",
"priceTick",
"quantity",
"settlementTxHash",
"delivery",
"sequence",
"executedAt",
"occurredAt"
],
"additionalProperties": true
}TypeScript SDK example
Use the request's raw body and headers with your endpoint's webhook secret. This handler illustrates verification and event selection. Before writing downstream state, deduplicate deliveries by evt_id and recognize replayed outcomes by their domain identifiers.
const result = await verifyWebhook({
rawBody,
headers,
secret: process.env.DALP_WEBHOOK_SECRET!,
});
if (!result.ok) {
throw new Error(`Webhook verification failed: ${result.code}`);
}
if (result.event.type === "trading-venue.trade-settled.final") {
const event: Webhook.Event<"trading-venue.trade-settled.final"> = result.event;
console.log(event.payload);
}HTTP delivery example
This illustrative request shows the delivery shape. Its timestamp and signature are placeholders; a verifier rejects them. Use a signed platform delivery to verify your endpoint.
curl -X POST https://consumer.example.com/dalp/webhooks \
-H "content-type: application/json" \
-H "webhook-id: evt_7d007dfea4258a1ef49e3c492bb6efef" \
-H "webhook-timestamp: 1778112000" \
-H "webhook-signature: v1,docs-example-signature" \
--data '{"evt_id":"evt_7d007dfea4258a1ef49e3c492bb6efef","source_id":"example:trading-venue.trade-settled.final@1:0","lifecycle_state":"final","payload":{"marketId":"mkt_01J9ZQ4F3K8V2N6T0R5W7Y1B3D","tradeId":"trd_01J9ZQ6B7D9F1H3K5M7P9S2V4X","chainId":537001,"buyOrderId":"ord_01J9ZQ5A2C4E6G8J0L2N4P6R8T","sellOrderId":"ord_01J9ZQ5C4E6G8J0L2N4P6R8T0V","priceTick":"1250","quantity":"40","settlementTxHash":"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","delivery":"delivered","sequence":"1843","executedAt":"2026-09-28T09:15:02.417Z","occurredAt":"2026-09-28T09:15:41.902Z"},"related":{"marketId":"marketId_example","tradeId":"tradeId_example"},"type":"trading-venue.trade-settled.final","version":1,"request":{"idempotency_key":"idem_01JZP7R5W8M9N0P1Q2R3S4T5"}}'Version and manifest
This page documents version 1 of trading-venue.trade-settled.final. This event type is not deprecated. The DALP events manifest contains the machine-readable AsyncAPI entry.
trading-venue.price-alert.triggered
A trade print crossed a client's price alert: an above alert fires at or over its threshold tick, a below alert at or under it. An alert fires once. The print is a matched trade that may still settle later or be busted.
trading-venue.trade-settled.retracted
A settled trade was busted after its settlement event. Sent only once the reversal is complete on chain, through every reversal transfer of the bust or the venue's own undo of the trade, never while a reversal is only queued, after it reverts, or when it does not settle in time. supersedes names the trading-venue.trade-settled.final event when this endpoint received it.