Skip to main content
Set webhook in your manifest to an https URL. Zend POSTs JSON to it:
Headers:

Events

from, to and by are appUserIds. by on link.claimed is null if the collector has never connected your app. price_ngn, ngn_per_usd and rate_id are null unless the payment was priced in Naira.

Verify signatures

v1 = hex(HMAC-SHA256(webhook_secret, "<t>.<raw body>")). Use the raw request body, before JSON parsing.
verifyWebhook rejects signatures older than 5 minutes. Rotate the secret with zend apps rotate-key --webhook-secret.

Delivery

  • Any 2xx response is success. Anything else, or no response within 10 seconds, is retried.
  • Retries back off from 30 seconds, doubling, for up to 12 attempts (about a day), then stop.
  • Events can arrive more than once and out of order. Dedupe on id, and use the interaction’s version to ignore stale updates.

Catch up

Returns the last 100 events with delivered_at, so you can replay what you missed.