Outgoing delivery logs & manual resend: To list stored deliveries, view attempt history for one event, or trigger a one-off resend by trade/withdrawal reference, use the Webhooks group in the API reference tab (endpoints under
/transactions/webhooks). This guide covers incoming payloads and verification on your server.Crypto wallet deposit webhooks
These webhooks fire whenever a wallet address receives crypto assets. You will receive events for the following transaction states:Payload example
Payload fields
Auto-settlement fields
When a bank account is linked to a wallet address and auto-settlement is enabled, the webhook payload includes additional fields. For a full explanation of how auto-settlement works, see the Auto-settlement guide.If a markup percentage is set, it is deducted from the transaction amount before the final payout is calculated. For example, if a trade amount is 1,000 USD and a 5% markup is applied, 50 USD is deducted and the settlement is calculated based on 950 USD.
Behavior notes
- The webhook may send multiple events for the same transaction as its status changes. For example, a transaction may first trigger
trade.pending, then latertrade.completed. - The
confirmationsfield indicates how many blockchain confirmations the transaction has received. This is especially important fortrade.completedevents. - For auto-settlement trades, withdrawal events are also sent and the related trade ID is included in the notification response.
Address creation webhook
This webhook fires as a fallback when a wallet address is successfully generated. It confirms the address is live and ready to receive deposits.Payload example
Payload fields
Fiat/Crypto withdrawal webhooks
These webhooks fire whenever a withdrawal is created or when its status changes.Payload example
Payload fields
Behavior notes
- A single withdrawal may trigger multiple webhook events as its status progresses.
withdrawal.pendingis always sent first.txHashwill not be present until the withdrawal is completed.- Always rely on the
eventandstatusfields to determine the current state of a withdrawal.
Webhook verification
To ensure the security and authenticity of incoming webhook notifications, Breet provides multiple layers of verification.IP whitelisting
All webhook requests originate from Breet’s secure servers. Verify that incoming requests come from one of the following IP addresses:Webhook secret
Each webhook endpoint is configured with a webhook secret, visible in your dashboard (Go to Settings → For Developer) under the Webhook Verification Secret Key. The secret is included in every webhook request as a header:- Retrieve the
x-webhook-secretheader from the incoming request. - Compare it against the secret configured in your dashboard.
- Only process the request if the secrets match.
Recommended verification flow
- Check the request IP against the allowed Breet IPs.
- Validate the
x-webhook-secretheader against the configured secret. - Only process the payload if both checks pass.
- As an extra check, call Fetch Transaction by ID or Fetch Withdrawal by ID to confirm the transaction exists on Breet before taking any action.
Webhook retries
If your server does not respond with a successful 2xx status code, Breet automatically retries delivering the webhook using an exponential backoff schedule:
After the final retry (24 hours), the webhook attempt is marked as permanently failed.
Retry conditions
Retries occur when:- Your webhook endpoint returns any non-2xx HTTP status code (including 3xx, 4xx, or 5xx).
- Your webhook endpoint times out.
- Your server is unreachable.
Best practices
- Return a 2xx status code as soon as your server receives and accepts the webhook.
- Handle duplicate deliveries. Breet may deliver the same event more than once during retries. Use the
idandeventfields together to detect duplicates and ensure your processing logic is idempotent. - Log all received events and failures to aid debugging.
Resending webhooks
If your server missed a webhook or you need to replay events for debugging, Breet lets you inspect delivery history and trigger manual resends. All outgoing webhook events are persisted for 7 days. You can resend webhooks in two ways:- From the dashboard — Go to Settings → For Developer → Webhook Logs to view all outgoing events, inspect delivery statuses, and resend any event with a single click.
- Via the API — Use the endpoints below to programmatically list, inspect, and resend webhook events.
The API endpoints below require an active integration with API access (VIP partners). For full request/response schemas, see the Webhooks API reference.
List delivery history
Retrieve a paginated list of all outgoing webhook events sent to your endpoint.View a single event
Fetch full details for a specific webhook event, including every delivery attempt with timestamps and HTTP status codes.attempts array, which records each delivery try with the response status code and timestamp — useful for diagnosing endpoint failures.
Resend by reference
Trigger an immediate redelivery of all webhook events associated with a given trade or withdrawal reference.reference is the trade or withdrawal document ID (the same value as id in your webhook payloads). The response returns the result of each resend attempt:
When to resend
- Your server was down during the original delivery and all automatic retries have been exhausted.
- You deployed a bug fix and need to replay events that previously failed processing.
- You want to verify your webhook handler is working correctly in a staging environment.