Guides / Webhooks
Payload
Every webhook has the same shape: the event name, when it was sent, and the full resource.
http · request headers
POST /webhooks/weav HTTP/1.1
Host: shop.example
Content-Type: application/json
X-Signature: 9b2f4c…c41ejson · body
{
"event": "PAYMENT_COMPLETED",
"sent_at": "2026-10-26T10:15:42+08:00",
"data": {
"payment": {
"reference_id": "PY7K3Q9M2X4TBA",
"external_reference_id": "ORD-10541",
"channel": "QR_PH",
"currency": "PHP",
"amount": 1250.0,
"fee": 31.25,
"total": 1281.25,
"amount_refunded": 0.0,
"refunds": [],
"status": "COMPLETED",
"completed_at": "2026-10-26T10:15:40+08:00",
"created_at": "2026-10-26T10:12:00+08:00"
}
}
}| Field | Type | Description |
|---|---|---|
event |
string |
One of the event types. |
sent_at |
string |
When Weav sent this delivery. It is inside the body so the signature covers it. |
data |
object |
The full resource under its own key. The payment above is shortened. |
A webhook never contains your signing key, an API key, or any other credential.