Back to API Reference
Event Streaming

Webhooks & Settlement Callbacks

Listen for sub-second on-chain blockchain confirmations and real-time FedNow/RTP interbank credit transfers.

payout.settled.solana

Sub-Second Crypto Finality

Emitted the millisecond Solana slot confirmation (~400ms) or XRPL ledger closing validation (~3.5s) completes.

{
  "event": "payout.settled.solana",
  "id": "evt_99812401",
  "timestamp": "2026-09-07T18:04:12.410Z",
  "data": {
    "payoutId": "pay_sol_001928",
    "workerId": "wrk_982401",
    "rail": "solana",
    "amount": "85.50",
    "currency": "USDC",
    "txHash": "5KkL2...8VnZp9",
    "slot": 284102941,
    "finalityMs": 420,
    "status": "confirmed"
  }
}
payout.settled.instant_bank

FedNow / RTP Network Acknowledgment

Emitted upon receiving the ISO 20022 pacs.002 acceptance confirmation from the Federal Reserve or TCH clearing house.

{
  "event": "payout.settled.instant_bank",
  "id": "evt_99812402",
  "timestamp": "2026-09-07T18:04:15.120Z",
  "data": {
    "payoutId": "pay_fn_004910",
    "workerId": "wrk_982401",
    "rail": "instant_bank",
    "amount": "150.00",
    "currency": "USD",
    "endToEndId": "IPX20260907FN881029",
    "clearingNetwork": "FedNow",
    "isoStatusCode": "ACCP", // pacs.002 Accepted Settlement Completed
    "finalityMs": 2100,
    "status": "cleared"
  }
}

Cryptographic Webhook Verification

Every webhook request includes an X-InstaPay-Signature header computed as an HMAC-SHA256 hash using your webhook endpoint signing secret.

// Node.js Verification Example
import crypto from "crypto";

function verifyWebhook(payloadRaw, signatureHeader, secret) {
  const hmac = crypto.createHmac("sha256", secret);
  const expected = hmac.update(payloadRaw).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
}