balance.low
POST
your webhook addressBalance is low. The available balance (the balance minus the reserves of messages and campaigns in progress) fell below the threshold of the account. Top it up in the console to keep sending.
Body
| Field | Type | Description |
|---|---|---|
type | string | Always balance.low. |
timestamp | string (date-time) | When the event happened, UTC. |
data | object | |
data.available | object | The available balance now. |
data.available.amount | string | A decimal with 6 digits after the point. |
data.available.currency | string | ISO 4217 code of the account currency. |
data.threshold | object | The low balance threshold of the account. |
data.threshold.amount | string | A decimal with 6 digits after the point. |
data.threshold.currency | string | ISO 4217 code of the account currency. |
json
{
"type": "balance.low",
"timestamp": "2026-11-02T12:00:04+00:00",
"data": {
"available": {
"amount": "4.200000",
"currency": "USD"
},
"threshold": {
"amount": "5.000000",
"currency": "USD"
}
}
}Headers
| Header | Description |
|---|---|
webhook-id | The delivery, whd_…. The same on every attempt of one delivery: use it to drop a repeated delivery. |
webhook-timestamp | Unix time of the attempt, in seconds. Refuse deliveries older than 5 minutes. |
webhook-signature | v1, and the base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body}, keyed with the secret (the part after whsec_, base64-decoded). |
content-type | application/json |
user-agent | ACE-SEND-Webhooks/1 |
Check the signature before you trust the body, answer 2xx within 5 seconds and do the work afterwards. See Webhooks for the signature check, retries and duplicates.