| Property | Value |
|---|---|
| Algorithm | RSA-SHA256 |
| Signature Encoding | Base64 |
| Header | Description | Example |
|---|---|---|
X-Signature-Timestamp | Unix timestamp (10 digits, seconds since epoch) | 1713982800 |
X-Signature | Base64-encoded RSA signature of the signed payload | dGhpcyBpcyBhbiBleGFtcGxlIHNpZ25hdHVyZSE... |
X-Signed-By | Public key identifier (used to fetch the correct certificate from /certificates) | 5ac5ae43-01d2-4c70-8a5b-b69a34d11c62 |
signed_payload = timestamp + "." + raw_body_bytestimestamp is the value from X-Signature-Timestamp header (as a string). is a literal period character (ASCII 46)raw_body_bytes is the raw, unmodified HTTP request body (as bytes, not parsed JSON)X-Signature-Timestamp: 1713982800{"transaction_id":"20260424-2333-4543-bbc8-482d90a8a960","status":"Error","merchant_id":"2f585060-092c-43af-9efe-2db5439c8448","transaction_type":"Payout","merchant_transaction_reference":"3342798"}1713982800.{"transaction_id":"20260424-2333-4543-bbc8-482d90a8a960","status":"Approved","merchant_id":"2f585060-092c-43af-9efe-2db5439c8448","transaction_type":"Payout","merchant_transaction_reference":"3342798"}Important: Do not parse, format, or modify the JSON body before verification. Use the raw bytes exactly as received.
X-Signature-Timestamp, X-Signature, and X-Signed-By from the request headerstimestamp + "." + raw_bodyX-Signature headerexpires_at field of the latest certificate as TTL.X-Signed-By identifier will be used.