Ir al contenido

facturaBoVerificarWebhook

Comprueba la firma HMAC-SHA256 de una entrega de webhook de factura.bo (cabeceras Webhook-Id, Webhook-Timestamp y Webhook-Signature, estándar Standard Webhooks) y la antigüedad del mensaje (rechaza más de 5 min). Colócalo justo después del disparador Webhook de Floogos: toma solas las cabeceras y el cuerpo crudo. Si la firma no es válida, el nodo da error. Usa el id del evento para deduplicar.

Forma parte del Hub Fiscal de Bolivia como alternativa a la conexión directa con el SIAT: factura.bo (SimplifyIT S.R.L.) es un proveedor que construye y firma el XML y lo envía al SIN. Nodo: «Verificar firma de webhook».

CampoTipoRequeridoDescripción
credentials_idcredentialsNoCredencial facturabo
webhook_secretpasswordNoSecreto del webhook (opcional) — Vacío = el «secreto de webhooks» de la credencial
headersjsonNoCabeceras (JSON, opcional) — Vacío = las de la petición recibida
raw_bodytextareaNoCuerpo crudo (opcional) — Vacío = el cuerpo exacto de la petición recibida. La firma se calcula sobre los bytes originales
tolerance_secondsnumberNoTolerancia de antigüedad (s) — 0 = no comprobar la fecha
fail_on_invalidbooleanNoDar error si la firma no es válida
output_keytextNoClave de salida — El resultado se añade a data[clave] sin perder el resto de datos

Este módulo requiere una credencial de tipo facturabo con los campos:

  • API key: se obtiene en app.factura.bo → Más → API Key
  • Entorno: pruebas (sandbox, SIAT piloto) o producción; la clave no lo delata, lo eliges tú
  • NIT y código de sistema del SIAT: para sincronizar CUIS/CUFD y catálogos
  • Sucursal y punto de venta por defecto: 0 = casa matriz / punto principal
  • Secreto de webhooks (whsec_…): para verificar la firma de los eventos
{
"success": true,
"valid": true,
"reason": null,
"event_id": "msg_9",
"event_type": "factura.emitida",
"timestamp_age_seconds": 2,
"event": {
"evento": "factura.emitida",
"datos": {
"cuf": "ABC"
}
},
"warnings": []
}

La salida se guarda en la clave configurada (output_key, por defecto facturabo) y se conserva el resto de data. En error: error.message, error.type y, si aplica, status y siat_code.

{
"credentials_id": "cred-facturabo",
"fail_on_invalid": true
}
  • Verifica la firma estándar (Standard Webhooks): Webhook-Id, Webhook-Timestamp (se rechaza si tiene más de 5 min) y Webhook-Signature (v1, + HMAC-SHA256 en base64 de id.timestamp.cuerpo, con la parte del secreto tras whsec_ decodificada de base64). No hace ninguna llamada.
  • Lee las cabeceras y el cuerpo crudo del disparador. Si el cuerpo crudo no está disponible se reconstruye desde el JSON y se avisa: puede fallar por diferencias de formato.
  • Usa event_id (Webhook-Id) para deduplicar: una entrega puede llegar más de una vez.