Async
Webhooks & async delivery
For high-volume jobs — weekly cash checks across hundreds of accounts, nightly batch runs, or alert-triggered checks — Cashytics supports webhook delivery so you do not need to hold open HTTP connections.
How it works
- Register a webhook endpoint URL in your dashboard (Settings → Webhooks).
- POST your envelope to the standard
/api/v1/<slug>route with an additional top-level field:"webhook_url": "https://your-server.com/cashytics-hook" - The API immediately returns HTTP 202 Accepted with a job_id.
- When processing completes (typically <5 seconds), Cashytics POSTs the full structured response to your webhook URL, signed with HMAC-SHA256 using your webhook secret.
Response shape on 202
{
"status": "accepted",
"job_id": "job_abc123",
"estimated_delivery_ms": 4000,
"webhook_url": "https://your-server.com/cashytics-hook"
}Webhook payload shape
Same as synchronous response, plus metadata:
{
"job_id": "job_abc123",
"delivered_at": "2026-04-20T14:00:00Z",
"endpoint": "cashflow-health-score",
"account_id": "acct_123",
"processing": { ... },
"structured": { ... },
"narrative": "..."
}Verifying the signature
The request will include header: X-Cashytics-Signature: sha256=<hmac>
Compute HMAC-SHA256 of the raw request body using your webhook secret (found in dashboard → Settings → Webhooks). Reject any request where the signature does not match.
Retries
If your endpoint returns non-2xx, Cashytics retries up to 3 times with exponential backoff (5s, 30s, 5min). After 3 failures the job is marked as failed and visible in your dashboard.
Batch tip
For batches of 50+ accounts, loop your POST calls server-side and use webhook delivery to collect results asynchronously rather than awaiting each response sequentially.