01 The request
What does a delivery look like?
A JSON body with four keys: id, type, created_at and data. Ids are prefixed strings. Money is an integer in minor units with a currency beside it. Times are ISO 8601 in UTC.
The headers carry the signature, the event type, the event id and the attempt number. The same event keeps the same id across retries and replays. The three Standard Webhooks headers are there too, so an off-the-shelf library can verify it.
POST /your/endpoint HTTP/1.1
Content-Type: application/json
Rail-Signature: t=1756728000,v1=5f1c6c...e2a9
Rail-Event: commission.created
Rail-Event-Id: evt_4Kp2Qw9eRt7YuIoP1aSdFg
Rail-Attempt: 1
webhook-id: evt_4Kp2Qw9eRt7YuIoP1aSdFg
webhook-timestamp: 1756728000
webhook-signature: v1,g0hM9SsE...JEE=
{"id":"evt_4Kp2Qw9eRt7YuIoP1aSdFg",
"type":"commission.created",
"created_at":"2026-09-01T12:00:00.000Z",
"data":{...}}