trade.updated
Before you receive events
- Register an endpoint, store its signing secret, and verify the receiver.
- Subscribe the endpoint to this event type.
- Verify the timestamp and signature against the raw request body before you parse or acknowledge it. See Webhooks.
POST <your receiver URL>Content-Type: application/jsonSinbad-Webhook-Id: evt_demoSinbad-Webhook-Timestamp: <Unix seconds>Sinbad-Webhook-Signature: v1=<keyId>:<HMAC-SHA256 hex>
Payload examples
Status changed
{"id": "evt_demo","type": "trade.updated","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": "PAID","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": "2026-10-23T10:00:00.000Z","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},"changedFields": ["status","paidAt"],"previousStatus": "CREATED"}}
Proof added
{"id": "evt_demo","type": "trade.updated","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": {"proofId": "proof_demo","uploadedByRole": "customer","uploadedAt": "2026-10-23T10:00:00.000Z","contentType": "image/png","size": 68}},"changedFields": ["proofOfPayment"],"proofChange": {"operation": "added","previousProofId": null,"proofId": "proof_demo"}}}
Proof replaced
{"id": "evt_demo","type": "trade.updated","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": {"proofId": "proof_demo","uploadedByRole": "customer","uploadedAt": "2026-10-23T10:00:00.000Z","contentType": "image/png","size": 68}},"changedFields": ["proofOfPayment"],"proofChange": {"operation": "replaced","previousProofId": "proof_previous","proofId": "proof_demo"}}}
Proof removed
{"id": "evt_demo","type": "trade.updated","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},"changedFields": ["proofOfPayment"],"proofChange": {"operation": "removed","previousProofId": "proof_previous","proofId": 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.