Package Information
Available Nodes
Documentation generating…
Documentation
n8n-nodes-facturacion-es
Nodos community para n8n: Facturación Electrónica de El Salvador (DTE, Ministerio de Hacienda).
Crea, firma (JWS RS512), envía, consulta e invalida DTEs, genera QR de verificación pública y guarda respaldo local. Incluye modo prueba para desarrollar el flujo sin certificado ni conexión a Hacienda.
Nodos
| Nodo | Qué hace |
|---|---|
Facturación El Salvador (facturacionEs) |
Nodo principal. Recursos: Documento (Crear, Crear + Firmar + Enviar, Firmar, Enviar, Consultar), Eventos (Invalidar, Contingencia, Retorno), Herramientas (Verificar JWS, Generar QR). |
DTE Firmar [Binario] (dteFirmarBinario) |
Firma un DTE con el cert .crt XML que llega como binary (Drive Download / S3 Get / HTTP Request). Sin credenciales; passwordPri va como parámetro. Para rotación externa o multi-emisor. |
Nodos ocultos legacy (compatibilidad con workflows viejos, usar el agrupador): DteBuild, DteSign, MhAuth, MhSend, MhEvents, DteStoreQr.
Tipos DTE soportados
01 FE, 03 CCFE, 04 NRE, 05 NCE, 06 NDE, 07 CRE, 08 CLE, 09 DCLE, 11 FEXE, 14 FSEE, 15 CDE. Validación estructural local (ajv); no sustituye los schemas oficiales de MH.
Credencial: FacturacionES cuenta
Una sola credencial por ambiente (crea una para pruebas y otra para producción):
| Campo | Descripción |
|---|---|
| NIT (user) | NIT del emisor. Se usa como user en /seguridad/auth y como kid del JWS. |
| Cert XML / Cert Path | Contenido XML del .crt de MH, o ruta al archivo. |
| Password certificado | Password de la clave privada (se valida contra SHA512 == <clave> del XML). |
| Password aplicación MH | Clave de aplicación para /seguridad/auth. |
| Base URL | Pruebas: https://apitest.dtes.mh.gob.sv · Producción: https://api.dtes.mh.gob.sv. El ambiente (00/01) se deriva solo de esta URL (apitest → 00). |
| Timeout / Reintentos | Defecto 8000 ms y 2 reintentos. |
Los secretos viven solo en el vault cifrado de n8n; nunca se loguean ni se guardan en el workflow.
Instalación
En tu instancia n8n (local):
cd ~/.n8n
npm install n8n-nodes-facturacion-es
Reinicia n8n. O vía variable de entorno:
N8N_CUSTOM_EXTENSIONS=n8n-nodes-facturacion-es
Con Docker, instala dentro del contenedor o monta ~/.n8n/nodes:
docker exec -u node -it n8n-local npm install -C ~/.n8n n8n-nodes-facturacion-es
docker restart n8n-local
Requiere n8n con community nodes habilitados y Node 20+.
Uso
Flujo típico (nodo Facturación El Salvador):
- Crear — arma el DTE (manual por campos o JSON completo). Emite
{ dte }. No necesita credencial. - Firmar — firma JWS compacto RS512 con el cert de la credencial. Emite
{ dte, jws, payloadCanonico, nit }. - Enviar —
POST /fesv/recepciondte { ambiente, idEnvio, version, tipoDte, documento: jws }. Con timeout consulta antes de reenviar; el rechazo devuelve observaciones (no reenvía igual). - Consultar —
POST /fesv/recepcion/consultadte { ambiente, codigoGeneracion }. - Generar QR (Herramientas) — URL
https://admin.factura.gob.sv/consultaPublica?ambiente=..&codGen=..&fechaEmi=..+ PNG como binaryqr.
Crear + Firmar + Enviar hace todo en un paso. El idEnvio (entero ≥1, correlativo por emisor/ambiente) se autogenera con contador persistente si lo dejas en 0.
Encadenado: cada operación lee por defecto {{ $json.dte }} / {{ $json.jws }} del paso anterior.
Eventos
Recurso Eventos: Invalidar (POST /fesv/anulardte, v2), Contingencia (POST /fesv/contingencia, v3), Retorno (POST /fesv/retorno). El JSON del evento se firma localmente con el cert y se envía como { ambiente, documento: jwsEvento }.
Modo prueba
Colección Options → Modo prueba: en Firmar genera JWS mock alg=none sin cert; en Enviar/Eventos hace dry-run sin llamar a MH. Solo para probar el flujo — MH lo rechazaría. La firma mock nunca sale del equipo.
Respaldo local
Crear/Enviar guardan automáticamente en <base>/dte-store/<codigoGeneracion>/: <codGen>.json (DTE + firma + sello), <codGen>.jws.txt, <codGen>.sello.txt, <codGen>.qr.txt. Base por defecto ~/.n8n en Docker. Conserva 10 años según normativa.
Desarrollo
pnpm install
pnpm run build # tsc → dist/
pnpm test # 18 pruebas (firma con cert de test autofirmado)
pnpm run gen-cert regenera el cert de test (test/fixtures/, password default Test1234!, solo pruebas).
Compatibilidad
n8nNodesApiVersion: 1- Endpoints MH:
https://apitest.dtes.mh.gob.sv(pruebas),https://api.dtes.mh.gob.sv(producción) - Firma: JWS Compact,
alg: RS512,kid: <NIT>, payload = DTE sinfirmaElectronica/selloRecibido
Licencia
MIT — ver LICENSE.