Skip to navigation

trade.created

Before you receive events

POST <your receiver URL>
Content-Type: application/json
Sinbad-Webhook-Id: evt_demo
Sinbad-Webhook-Timestamp: <Unix seconds>
Sinbad-Webhook-Signature: v1=<keyId>:<HMAC-SHA256 hex>

Payload examples

Trade created

{
"id": "evt_demo",
"type": "trade.created",
"apiVersion": "2026-10-22",
"environment": "sinbad-staging-env",
"partnerId": "partner_demo",
"integrationId": "integration_demo",
"partnerUserId": "customer_demo",
"tradeId": "trade_demo",
"sequence": 3,
"occurredAt": "2026-10-23T10:00:00.000Z",
"sourceCommittedAt": "2026-10-23T10:00:00.000Z",
"recordedAt": "2026-10-23T10:00:00.000Z",
"data": {
"trade": {
"dispute": null,
"tradeId": "trade_demo",
"transferNumber": "B2B-DEMO",
"tradeRef": "0xabababababababababababababababababababababababababababababababab",
"status": "CREATED",
"side": "BUY",
"chainId": 80002,
"tokenAddress": "0x4444444444444444444444444444444444444444",
"escrowAddress": "0x3333333333333333333333333333333333333333",
"escrowId": "42",
"transactionHash": "0xabababababababababababababababababababababababababababababababab",
"settlementTransactionHash": null,
"disputeTransactionHash": null,
"settlementOutcome": null,
"fiatCurrencyId": "usd",
"paymentMethodId": "bank_transfer",
"createdAt": "2026-10-23T10:00:00.000Z",
"displayLabel": "Bank transfer",
"fundedAt": "2026-10-23T10:00:00.000Z",
"paidAt": null,
"releasedAt": null,
"canceledAt": null,
"disputedAt": null,
"resolvedAt": null,
"fundingExpiresAt": null,
"pricing": {
"usdtAmount": "100",
"customerFiatAmount": "100",
"subtotalFiat": "100",
"makerFeeUsdt": "0",
"platformFeeUsdt": "0",
"partnerFeeUsdt": "0",
"lockAmountUsdt": "100",
"recipientAmountUsdt": "100"
},
"proofOfPayment": null
}
}
}

Your response

Return a 2xx response once you have durably stored the event. Deduplicate on the signed event ID: retries and manual replays keep the same ID.

Trade and message events share one sequence counter, so gaps are normal if you subscribe to only some event types. A message can arrive after a newer trade update, so do not treat arrival order as the complete history of a trade. List the trades to reconcile.

These payloads are synthetic examples.