Webhook Security

The Zero Hash Webhook uses request headers to ensure security on message transport. RSA security method is Zero Hash’s recommended form of webhook security as it does not require passing secret keys back and forth. We also support token method signing of payload, you may provide a secret token to us during configuration. If you’ve done so, we will include the x-zh-hook-signature-256 header with the webhook.

NameDescription
x-zh-hook-notification-idNotification ID, can be used for idempotency checks
x-zh-hook-payload-typePayload type string. The following values are available:
participant_status_changed
participant_updated
payment_status_changed
deposit_fund_complete
external_account_status_changed
unspecified

Depending on your security configuration, additional headers may also be included:

NameDescription
x-zh-hook-signature-256to_hex(hmac(sha_256(payload), your-secret))
x-zh-hook-rsa-signature-256to_hex(rsa(sha_256(payload), zh-sec-key))

Zero Hash’s webhook requests will originate from the following IP addresses, should you need an allow-list:

  • 18.189.25.175/32
  • 3.18.218.32/32
  • 3.22.145.85/32

Integration Tips

  • If using the RSA security method, when creating a sha256 hash of the webhook body & payload, ensure the hash is decoded to binary to validate the webhook signature
    • Be sure to also decode the the RSA signature found in the header of the webhook back to binary prior to webhook validation (see recipes below for examples)

Sample Webhook Signatures