Payload del webhook
Cada vez que LX CloudPos dispara un webhook, hace un POST con Content-Type: application/json y los headers de identificación y firma. Este es el formato completo de la request entrante a tu endpoint:
POST https://tu-app.com/webhooks/lxs HTTP/1.1
Content-Type: application/json
X-Lxs-Signature: sha256=a1b2c3d4e5f6...
User-Agent: LxCloudPos-Webhook/1.0{
"evento": "hacienda.estado",
"clave": "50615012600310112345600100001010000000123456789012",
"numero_consecutivo": "00100001010000000123",
"tipo_documento": "01",
"ind_estado": "aceptado",
"mensaje": "",
"timestamp": "2026-05-15T14:32:45.1234567Z",
"intento": 1,
"nonce": "9f8a2b3c4d5e6f70a1b2c3d4e5f60718"
}El cuerpo es un JSON con los campos del evento. Notá el header X-Lxs-Signature con la firma HMAC-SHA256 en formato sha256=<hex>: validarlo es obligatorio (ver verificación HMAC).
Campos
| Campo | Tipo | Significado |
|---|---|---|
evento | string | Tipo de evento. Actualmente solo "hacienda.estado". |
clave | string | Clave de 50 dígitos del comprobante. |
numero_consecutivo | string | Consecutivo de 20 dígitos. |
tipo_documento | string | "01" FE, "02" ND, "03" NC, "04" TE. |
ind_estado | string | "aceptado", "rechazado", etc. (de Hacienda). |
mensaje | string | Mensaje opcional de Hacienda (errores en rechazo). |
timestamp | string | ISO 8601 UTC del momento del webhook. |
intento | number | Número de intento (1-based). |
nonce | string | Hash hex aleatorio único por intento. Para dedup. |