Faktur

Webhooks

Scope: webhooks:manage

Registra y gestiona URLs para recibir notificaciones HTTP cuando un comprobante cambia de estado. Los webhooks se disparan para todos los documentos de la empresa.

Eventos disponibles

EventoCuándo se dispara
document.authorizedEl SRI autoriza el comprobante.
document.rejectedEl SRI rechaza el comprobante.
document.errorError de sistema al procesar (red, certificado, etc.).

POST /v1/webhooks/endpoints — Registrar endpoint

CampoTipoObligatorioDescripción
urlstringURL a la que se enviará el POST. Máx. 2048 chars.
eventsarrayAl menos 1: document.authorized, document.rejected, document.error.
secretstringNoSecret para firmar el payload (HMAC-SHA256). Header X-Webhook-Signature: sha256=<firma>.
descriptionstringNoDescripción interna. Máx. 255 chars.

Errores: 400 EVENTS_REQUIRED, INVALID_EVENTS · 401 INVALID_API_KEY.

GET /v1/webhooks/endpoints — Listar

Lista los endpoints de la empresa. El campo secret nunca se devuelve.

GET /v1/webhooks/endpoints/:id — Detalle

Mismo objeto que en el listado. 404 WEBHOOK_ENDPOINT_NOT_FOUND.

PATCH /v1/webhooks/endpoints/:id — Actualizar

Campos opcionales: url, events, secret (o null para eliminar firma), description, active (false para pausar).

Errores: 400 INVALID_EVENTS · 404 WEBHOOK_ENDPOINT_NOT_FOUND.

DELETE /v1/webhooks/endpoints/:id — Eliminar

Elimina permanentemente el endpoint. Respuesta 200: { "success": true, "data": null }.

Formato del payload de notificación

La API envía un POST a la URL registrada con un body como:

{
  "event": "document.authorized",
  "deliveryId": "uuid-de-entrega",
  "timestamp": "2026-03-08T20:00:05.000Z",
  "data": {
    "documentId": "uuid",
    "accessKey": "07032...",
    "documentNumber": "001-001-000000001",
    "status": "AUTHORIZED",
    "documentType": "INVOICE",
    "companyId": "uuid",
    "authorizedAt": "2026-03-08T20:00:05.000Z",
    "errorDetail": null,
    "sriResponse": { "authorizationNumber": "...", "authorizedAt": "...", "environment": "1" }
  }
}

Verificación de firma

Si el endpoint tiene secret, cada entrega incluye X-Webhook-Signature: sha256=<hmac-sha256-hex>. Verifica con HMAC-SHA256 del body y timingSafeEqual. Responde con HTTP 2xx para confirmar la entrega.