POST request to it.
Use webhooks when you need to:
- Trigger fulfillment after a payment succeeds
- Update order status in your database
- Notify customers of payout delivery
- Reconcile transactions in real time
Syncgram Pay delivers webhooks in both test and live environments. Use your test API key to receive test events before going live.
Setting up a webhook endpoint
Create a public HTTPS endpoint
Your endpoint must be publicly reachable over HTTPS and must return an HTTP
200 response to acknowledge delivery. Any non-2xx response is treated as a failure and triggers a retry.Register your URL
Call Request body
Response
PUT /api/v1/notifications/webhooks/configuration with your endpoint URL and an optional secret for signature verification.| Field | Type | Required | Description |
|---|---|---|---|
webhook_url | string | Yes | Your HTTPS endpoint URL. Set to null to disable webhooks. |
webhook_secret | string | No | 8–64 character secret used to sign requests. Strongly recommended. |
Verify your configuration
Retrieve your current webhook configuration at any time.
has_secret indicates whether a secret is stored. The secret value itself is never returned.Send a test event
Trigger a test delivery to confirm your endpoint is reachable and handling requests correctly.This sends a
collection.succeeded event with test data to your configured URL. See the test payload below for the exact shape.Payload structure
Every webhook is a JSONPOST body with the following top-level fields:
| Field | Type | Description |
|---|---|---|
id | string | Unique event ID, prefixed with evt_. |
type | string | Event type (e.g., collection.succeeded). |
created_at | string | ISO 8601 timestamp of when the event was created. |
data | object | Event-specific data. Shape varies by event type — see Events. |
Test payload
When you call the test endpoint, your URL receives this payload:Webhook security
When you configure awebhook_secret, Syncgram Pay signs every request using HMAC-SHA256. Verifying the signature ensures the request genuinely came from Syncgram Pay and that the payload was not tampered with in transit.
Signature headers
Each webhook request includes two headers:| Header | Description |
|---|---|
X-Syncgram-Timestamp | Unix timestamp (seconds) when the request was sent. |
X-Syncgram-Signature | HMAC-SHA256 hex digest of the signed message. |
How the signature is constructed
The signed message is:HMAC-SHA256(secret, signed_message) encoded as a hex string.
Verifying the signature
Retries
If your endpoint returns a non-2xx status code or is unreachable, Syncgram Pay retries delivery automatically using an exponential backoff schedule:
| Attempt | Delay after previous failure |
|---|---|
| 2 | 1 minute |
| 3 | 5 minutes |
| 4 | 15 minutes |
| 5 | 1 hour |
Disabling webhooks
Setwebhook_url to null to disable webhook delivery: