POST to your endpoint with the event payload.
Available events
| Event | When it fires |
|---|---|
settlement.converting | Settlement fiat-to-stablecoin conversion started |
settlement.transmitting | Stablecoin in transit on-chain |
settlement.completed | Settlement completed, destination credited |
settlement.failed | Settlement failed |
payin.completed | A pay-in has been received and confirmed |
payout.completed | A payout has been delivered |
payout.failed | A payout failed |
compliance.approved | A KYB submission has been approved. |
compliance.rejected | A KYB submission was rejected. |
account.created | A new account was created. |
account.funded | Funds arrived at an account. |
Set up a webhook endpoint
Create a public HTTPS endpoint
Your endpoint must:
- Accept
POSTrequests - Be reachable over the public internet via HTTPS
- Return a
2xxstatus code within 10 seconds to acknowledge receipt
2xx range — or no response within 10 seconds — is treated as a delivery failure and triggers the retry policy.Register your endpoint in the dashboard
- Log in to the Thiqwave Dashboard.
- Navigate to Settings → Webhooks.
- Click Add endpoint.
- Enter your endpoint URL.
- Select the events you want to receive (or choose All events).
- Click Save.
Verify webhook signatures
Every webhook request includes a
X-Thiqwave-Signature header. Verify this signature before processing the payload to ensure it came from Thiqwave and was not tampered with.The signature is an HMAC-SHA256 hex digest of the raw request body, computed using your webhook secret as the key.Process the event payload
After verifying the signature, parse the JSON body and handle the event based on the
Respond with a
event field:| Field | Type | Description |
|---|---|---|
event | string | The event type (e.g., transaction.completed). |
id | string | Unique identifier for this event delivery. |
timestamp | string | ISO 8601 timestamp of when the event occurred. |
signature | string | HMAC-SHA256 signature for verification (also in the header). |
data | object | The full resource object that triggered the event. |
2xx status as quickly as possible. Move any slow processing (database writes, downstream API calls) to a background job to avoid timeouts.Retry policy
If your endpoint does not return a2xx response within 10 seconds, Thiqwave retries the delivery with exponential backoff:
| Attempt | Delay |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 10 minutes |
| 3rd retry | 1 hour |
Make your webhook handler idempotent. Because retries can deliver the same event more than once, use the
id field to deduplicate events before processing them.Testing webhooks
Use the Send test event button in the dashboard to fire a sample payload to your endpoint at any time. This lets you verify your handler logic without waiting for a real transaction. You can also replay any past delivery from Settings → Webhooks → Delivery logs, which is useful for debugging failed handlers.Next steps
- Settling with Stablecoins — track settlement progress with webhook events
- Receiving Payments — listen for
payin.completedto react when customers pay - KYB Verification — handle
compliance.approvedfor onboarding flows