Skip to main content
ZBX signs outbound webhook POST bodies with your organisation’s RSA private key. The corresponding public key is available in the merchant dashboard. Verifying the signature proves authenticity and integrity; checking the timestamp reduces replay risk.

Headers

Every signed delivery includes: These header names are platform-level (the same string across white-label deployments).

Message format

  • Use the raw body bytes as received (the exact JSON posted). Do not re-serialise the parsed object.
  • The body already includes the event field (for example Payment.Updated) at send time.

Algorithms

  1. SHA-256 hash the message
  2. Verify with RSA PKCS#1 v1.5 against your org PEM public key
  3. Decode signature as standard Base64
Reference implementation matches Merchants API event signing (VerifySignature / SignMessage using PKCS#1 private/public keys).

Steps

  1. Read X-BoomFi-Timestamp and X-BoomFi-Signature
  2. Reject if the timestamp is outside your freshness window (for example ±5 minutes)
  3. Build message = timestamp + "." + rawBody
  4. Verify RSA signature with the public key from Configure Webhooks
  5. Parse JSON only after verification succeeds
  6. Confirm org_id (or org.id) matches your organisation

Code examples

TypeScript (Node.js)

Python

Go

Rotate keys

Rotate from Business settings or PATCH https://mapi.zbx.boomfi.xyz/v1/orgs/webhook-secret. Deploy the new public key to all verifiers before or during rotation, depending on your dual-key window.