Skip to content

balance.low ​

POSTyour webhook address

Balance 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 ​

FieldTypeDescription
typestringAlways balance.low.
timestampstring (date-time)When the event happened, UTC.
dataobject
data.availableobjectThe available balance now.
data.available.amountstringA decimal with 6 digits after the point.
data.available.currencystringISO 4217 code of the account currency.
data.thresholdobjectThe low balance threshold of the account.
data.threshold.amountstringA decimal with 6 digits after the point.
data.threshold.currencystringISO 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 ​

HeaderDescription
webhook-idThe delivery, whd_…. The same on every attempt of one delivery: use it to drop a repeated delivery.
webhook-timestampUnix time of the attempt, in seconds. Refuse deliveries older than 5 minutes.
webhook-signaturev1, and the base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body}, keyed with the secret (the part after whsec_, base64-decoded).
content-typeapplication/json
user-agentACE-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.

ACE SEND API v1