SettleMint
API referenceEvents

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

FieldValue
Event typetrading-venue.trade-settled.final
Version1
Lifecycle statefinal
Counter-signed receiptsNo event-specific advice
SDK typeWebhook.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:

  • marketId
  • tradeId

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.

On this page