# Webhooks

> Receive real-time notifications when events occur on Senddy.

Source: https://www.senddy.com/docs/developers/webhooks
Last modified: 2026-08-01T23:49:54.000Z

---

> **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](/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

| Event | Description |
|---|---|
| `payment.received` | A payment was received to your address |
| `payment.confirmed` | A payment has been confirmed on-chain |
| `deposit.completed` | A deposit has been shielded into the privacy pool |
| `withdrawal.completed` | A withdrawal has been processed |
| `bridge.completed` | A 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
