Webhooks

Receive real-time notifications when events occur on Senddy.

Status: not yet available. Outbound webhooks are still in development and the endpoints listed in Developer Settings are placeholders. This page documents the intended contract so you can design against it. For payment notifications today, poll the API or use client.onPaymentReceived().

Overview#

Webhooks allow your application to receive real-time HTTP notifications when events occur. Instead of polling the API, Senddy sends a POST request to your configured endpoint.

Setting up webhooks#

  1. Go to your Developer Settings
  2. Navigate to the Webhooks section
  3. Enter your endpoint URL (must be HTTPS)
  4. Select the events you want to receive
  5. Save your configuration

Event types#

EventDescription
payment.receivedA payment was received to your address
payment.confirmedA payment has been confirmed on-chain
deposit.completedA deposit has been shielded into the privacy pool
withdrawal.completedA withdrawal has been processed
bridge.completedA cross-chain bridge transfer has arrived

Webhook payload#

All webhooks are delivered as HTTP POST requests with a JSON body:

JSON
{
  "id": "evt_abc123",
  "type": "payment.received",
  "timestamp": "2025-01-15T12:00:00Z",
  "data": {
    "amount": "50000000",
    "currency": "USDC",
    "memo": "Order 123"
  }
}

Verifying webhooks#

Each webhook request includes a signature header for verification:

X-Senddy-Signature: sha256=...

Verify the signature using your webhook secret (available in Developer Settings) to ensure the request is authentic.

Retry policy#

If your endpoint returns a non-2xx status code, Senddy will retry delivery:

  • 1st retry: 1 minute after failure
  • 2nd retry: 5 minutes
  • 3rd retry: 30 minutes
  • 4th retry: 2 hours
  • 5th retry: 24 hours

After 5 failed attempts, the webhook is marked as failed and no further retries are attempted.

Requirements#

  • Webhooks are available on the Growth plan ($49/mo) and above
  • Endpoint must accept HTTPS POST requests
  • Endpoint must respond within 10 seconds
  • Maximum payload size: 64 KB