One endpoint, every event
A business has one active webhook endpoint per environment, and it receives every event for that business. There is no per-event subscription and no filtering — route on theevent field and ignore what you do not handle.
The endpoint is configured in the dashboard. There is no /v1 endpoint for managing it.
The envelope
Every request body has exactly two fields.id, no version, no environment, and no createdAt in the body. Everything else travels as headers:
Two payload families
A financial payload tells you money moved and what it was for. A resource payload is a snapshot of an object, identical to what a
GET would give you.
See webhook events for the full catalog and both shapes.
One attempt
This is the most important operational fact about Sakawave webhooks. That has a direct consequence: webhooks are a latency optimisation, not a source of truth. Any flow where missing an event would cost money needs a reconciliation job reading the REST resources.The delivery contract
- Read the raw body. Do not parse it first.
- Verify the signature and a narrow timestamp window.
- Deduplicate on
Sakawave-Webhook-Id, atomically with recording receipt. - Queue the work.
- Return any
2xxwithin ten seconds.
Next
Introduction
What to use webhooks for, and what not to.
Get started
A receiver that verifies, deduplicates, and acknowledges.
Events
The catalog and both payload shapes.
Verify signatures
Complete handlers in Node and Python.