Refund failed (standalone). Emitted for standalone refunds not tied to a
specific payment (e.g., manual refund operations). Payload is the refund’s
WebhookTransactionData.
Unix timestamp (seconds since epoch) at dispatch. Merchants should
reject the delivery if the skew against their own clock exceeds
5 minutes, to limit replay windows.
Unique delivery ID. Stable across retries of the same logical event
— use it to deduplicate idempotently on receipt.
Example:
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Body
application/json
Base envelope delivered to merchant webhook endpoints. Every webhook
request body has the shape { id, api_version, event, category, data };
concrete event schemas compose this base via allOf and refine event /
category to their const values and data to a specific schema.
Each delivery carries three headers:
CrowdSplit-Signature t={unix-ts},v1={hex-hmac-sha256}
CrowdSplit-Timestamp seconds since epoch
CrowdSplit-Notification-Id unique per delivery (idempotency)
Merchants MUST verify the HMAC of the raw body using the webhook
secret returned at registration, and SHOULD reject the delivery if
CrowdSplit-Timestamp differs from the current time by more than
5 minutes. Duplicate CrowdSplit-Notification-Id values indicate a
retry of a previously dispatched delivery and should be deduplicated.
API version of the payload builder that produced this event
(currently always v1). Reports the version of the code that built
data — not a globally-bumped number — so when one event type later
moves to v2, only that event reports v2. Branch on this field if
you need to handle multiple payload shapes for the same event.