Skip to content

Webhooks

Know the moment money lands

Syntra posts a signed event to your endpoint as each payout changes state. Retries run for 24 hours, and every event can be replayed from the dashboard.

Delivery

What arrives, and how to trust it

Example delivery
POST https://your-app.com/hooks/syntra
Syntra-Signature: t=1773504062,v1=5a3f...c81b

{
  "id": "evt_2Pq8Lm",
  "type": "payout.settled",
  "created_at": "2026-03-14T16:41:02Z",
  "data": {
    "id": "po_4471QxD",
    "status": "settled",
    "reference": "March payroll",
    "received": "1612.90",
    "destination_currency": "USD"
  }
}
Verifying the signature
import crypto from "node:crypto";

export function verify(rawBody, header, secret) {
  const [ts, sig] = header.split(",");
  const timestamp = ts.split("=")[1];
  const expected = crypto
    .createHmac("sha256", secret)
    .update(timestamp + "." + rawBody)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(sig.split("=")[1]),
  );
}

Event types

Events you can subscribe to

  • quote.expiredA held rate lapsed before a payout used it
  • payout.createdA payout was accepted and is being processed
  • payout.settledFunds reached the beneficiary account
  • payout.failedDelivery failed and the amount returned to your balance
  • batch.completedEvery row in a batch reached a final state
  • balance.lowA currency balance fell below your configured floor

Handling rules

Three things to get right

Verify the signature, always

Every request carries a Syntra-Signature header computed over the timestamp and the raw body. Reject anything that does not verify, and reject timestamps older than five minutes.

Respond fast, work later

Return a 2xx within ten seconds and queue the work. If we do not get a 2xx we retry with backoff for 24 hours.

Expect duplicates

A retry can arrive after you already processed the event. Deduplicate on the event id rather than assuming exactly-once delivery.

Open an account today

Apply in under ten minutes. Most businesses are verified within one working day and send their first payout the day after.