Skip to Content
v1.5Official documentation for the LX CloudPos API · stable in production
v1.5 (current)WebhooksWebhook retries

Webhook retries

LX CloudPos aggressively retries failed deliveries in order to avoid losing relevant events. There are two layers: in-process retries (in-memory, immediate) and persistent retries (cron, spaced out over time).

In-process (synchronous)

Right after the original delivery, LX CloudPos makes up to 3 attempts with linear backoff:

AttemptWait before
10 s
22 s
38 s

Persistent (cron)

If the 3 in-process attempts fail, the delivery is placed in a persistent queue, with the last known Hacienda status saved so the same payload can be resent. A cron job every 10 minutes drains that queue, up to a total of 5 attempts (3 in-process + 2 by cron).

This means that if the receiver was down for a few minutes, the event is still delivered afterward: the receiver does not need to be online at the exact instant Hacienda resolves the document.

When it is retried

Receiver responseRetried?
2xx (200, 201, 204)No (success)
4xx except 429No (definitive receiver error)
429Yes (rate limited)
5xxYes (transient failure)
Timeout (>10 s)Yes
Connection refusedYes

When retries stop

  • After the total of 5 attempts (3 in-process + 2 by cron).
  • If a 4xx other than 429 is received on any attempt (definitive error).
  • If the webhookUrl fails SSRF validation (forbidden URL).

Each delivery includes the intento field in the payload and a nonce unique per attempt. The deduplication logic must tolerate redelivery of the same event.