Signed Webhooks
Signed webhooks for verification
Overview
Pave secures webhook payloads using ECDSA (Elliptic Curve Digital Signature Algorithm) signatures.
Each webhook request includes a cryptographic signature in the Pave-Signature header that allows you to verify the authenticity and integrity of the payload.
Header Format
The Pave-Signature header contains a timestamp and signature in the following format:
Where:
timestamp: Unix timestamp of when the signature was generatedsignature: Base64-encoded ECDSA signature of the signed payload
Signature Payload Construction
The signed payload is constructed by concatenating the raw response body with the timestamp:
Example:
- Response body:
{"transaction_id": "123456"} - Timestamp:
1234567890 - Signed payload:
{"transaction_id": "1234556"}1234567890
Important Implementation Notes
Raw Body Requirement
The response body must be processed as a raw buffer to ensure signature verification succeeds.
JSON parsing or other transformations can alter the byte representation of the payload, causing verification to fail