Skip to main content
All docs

Webhooks

Subscribe to events with signed HTTPS callbacks.

Latest
6 min
Updated 2026-07-09

Webhooks

Subscribe to events at Admin → Integrations → Webhooks.

Events

  • payment.succeeded
  • payment.failed
  • report_card.issued
  • certificate.issued
  • student.enrolled

Signature

Every webhook carries an X-EduWallet-Signature header computed as:

text
HMAC_SHA256(secret, timestamp + "." + raw_body)

Verify with:

ts
import { createHmac, timingSafeEqual } from "crypto";

function verify(sig: string, ts: string, body: string, secret: string) {
  const expected = createHmac("sha256", secret)
    .update(ts + "." + body)
    .digest("hex");
  return timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}
Was this article helpful?