Skip to main content
Register one or more HTTPS endpoints in the dashboard under App Settings → Webhooks. Jaza POSTs JSON events with a Stripe-style Jaza-Signature header. Verify and parse with @jazadev/node.
Prefer the SDKs for day-to-day balance UI. Use webhooks for your own server workflows (notifications, CRM, reconciliation).

Dashboard setup

  1. Open your app → App SettingsWebhooks
  2. Add an endpoint URL (https://…)
  3. Choose events (Top-up and/or Consumption)
  4. Copy the signing secret once (whsec_…) — shown on create or rotate
  5. Enable or disable endpoints without deleting them
Deliveries appear in the dashboard with status, attempts, payload, and Retry. Failed deliveries retry with exponential backoff, then move to dead-letter after the attempt limit. The legacy single apps.webhookUrl field is deprecated; use multi-endpoint webhooks instead.

Event catalog

Top-up

Consumption

Payload shape (conceptual):

Signature

Header:
Signed string is `${t}.${rawBody}` with your endpoint secret.
Verify against the raw request body string (or Buffer), not a re-serialized JSON object. Use a raw-body middleware in Express/Fastify/etc.

Verify with Node

constructEvent checks the timestamp tolerance (default 5 minutes) and returns a typed { id, type, created, data } object, or throws JazaError. You can also import constructEvent / WEBHOOK_EVENT_TYPES from @jazadev/node directly.

Operational tips

  • Return 2xx quickly; do heavy work async
  • Idempotent handlers: key off event.id
  • Rotate secrets in the dashboard when leaked; update your env var
  • Sandbox (jz_test_*) and live (jz_live_*) apps are isolated — register endpoints per environment as needed