Documentation Index
Fetch the complete documentation index at: https://tracefinance-docs-withdrawal-beneficiary-events.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Every webhook delivery includes aX-Message-Signature header containing an HMAC-SHA256 signature you can verify with your client secret. Verification gives you cryptographic proof that the request originated from Trace and that the message identifier has not been tampered with.
Reject any request whose signature does not match — treat unsigned or mis-signed requests as untrusted.
What is signed
The signature is computed over the concatenation of the message ID and your client ID, separated by a+:
X-Message-Signature header.
The signature covers the message identifier, not the request body. Body integrity is provided by TLS (HTTPS). Always serve your webhook endpoint over HTTPS.
Verify the signature
Reconstruct the signature on your side using theX-Message-Id and X-Company-Id headers (or your stored clientId) plus your client secret. If the recomputed value matches X-Message-Signature, the request is authentic.
- Python
- JavaScript
- Go
hmac.compare_digest, crypto.timingSafeEqual, hmac.Equal) to prevent timing attacks.
Headers Trace sends
| Header | Description |
|---|---|
X-Message-Id | Unique UUID per delivery attempt. Use it for idempotent processing. |
X-Company-Id | Your Trace company identifier. |
X-Event-Type | Event type, e.g., OPERATION_REQUESTED. |
X-Resource-Name | Resource group, e.g., OPERATION. |
X-Message-Signature | Hex-encoded HMAC-SHA256 of messageId+clientId. |
Where to find your client secret
YourclientId and clientSecret are issued during onboarding — the same credentials used to obtain access tokens (see Authentication). Store the secret server-side; never commit it to source control or expose it in client-side code.
Related
- Retry policy — handle failed verifications without losing events
- Authentication — how
clientId/clientSecretare provisioned