MH El Salvador — Facturación electrónica (Hacienda, DTE)
Descripción
Sección titulada «Descripción»Los nodos MH conectan tus workflows con la facturación electrónica de El Salvador (Ministerio de Hacienda, DTE). A diferencia de otros países, el DTE de El Salvador es un documento JSON que se firma con JWS (RS512) y se envía por REST con un token de autenticación previo. Floogos arma el JSON, lo firma, obtiene el token y hace la recepción ante Hacienda, devolviendo el Sello de Recepción.
| Nodo | Qué hace |
|---|---|
MH: Emitir factura (mhEmitirFactura) | Emite una Factura de consumidor (tipo 01), IVA incluido |
MH: Crédito fiscal / Nota (mhEmitirComprobante) | Emite Crédito Fiscal (03), Nota de Crédito (05) o Débito (06) |
MH: Anular DTE (mhAnular) | Invalida un DTE recibido por su Código de Generación |
MH: Representación / QR (mhRepresentacion) | Genera la representación impresa con QR |
Credencial
Sección titulada «Credencial»Los nodos usan una credencial de tipo MH. Creala en Credenciales → Agregar → El Salvador / Hacienda con:
| Campo | Descripción |
|---|---|
| NIT del emisor | La identificación tributaria (sin guiones). |
| NRC | Número de Registro de Contribuyente. |
| Usuario y contraseña de API | Credenciales del portal de Hacienda para obtener el token. |
| Clave privada (.p12 o PEM) | Para firmar el DTE (JWS). |
| Nombre / Nombre comercial | Datos del emisor. |
| Actividad económica | Código y descripción. |
| Establecimiento y ubicación | Código de establecimiento, punto de venta, dirección, municipio, departamento. |
| Ambiente | Pruebas (00) o Producción (01). |
Emitir una factura (tipo 01)
Sección titulada «Emitir una factura (tipo 01)»Nodo: MH: Emitir factura. Para consumidor final el receptor es opcional. Ejemplo:
{ "items": [ { "descripcion": "Producto", "cantidad": 1, "precioUnitario": 113 } ]}En la Factura (01) el precioUnitario va con IVA incluido; Floogos calcula el gravable y el IVA (13%).
Crédito fiscal y notas (03 / 05 / 06)
Sección titulada «Crédito fiscal y notas (03 / 05 / 06)»Nodo: MH: Crédito fiscal / Nota. En el Comprobante de Crédito Fiscal (03) y las notas, el IVA va como tributo (código 20, 13%) y no se incluye en el precio: el precioUnitario es sin IVA. El receptor debe ser un contribuyente (con NIT y NRC).
{ "tipo": "03", "receptor": { "nit": "06140101801011", "nrc": "1234567", "nombre": "Cliente B2B S.A." }, "items": [ { "descripcion": "Servicio de consultoría", "cantidad": 1, "precioUnitario": 100 } ]}Las notas (05 crédito, 06 débito) referencian el documento de origen con documentoRelacionado (el Código de Generación del CCF original):
{ "tipo": "05", "receptor": { "nit": "06140101801011", "nrc": "1234567", "nombre": "Cliente B2B S.A." }, "documentoRelacionado": { "codigoGeneracion": "ABCD1234-...", "fecha": "2026-07-29" }, "items": [ { "descripcion": "Devolución", "cantidad": 1, "precioUnitario": 20 } ]}Anular un DTE
Sección titulada «Anular un DTE»Nodo: MH: Anular DTE. Invalida un DTE recibido por su Código de Generación (con un motivo obligatorio). Floogos recupera los datos del DTE original de la base, arma el evento de invalidación, lo firma con JWS y lo envía.
Representación impresa (QR)
Sección titulada «Representación impresa (QR)»Nodo: MH: Representación / QR. Genera la representación imprimible en HTML (exportable a PDF), con el Código de Generación, el Número de Control, el Sello de Recepción y el QR que apunta a la consulta pública de Hacienda (admin.factura.gob.sv/consultaPublica).
Manejo de errores
Sección titulada «Manejo de errores»| Situación | Reintentable | Qué hacer |
|---|---|---|
| Hacienda rechaza (RECHAZADO) | No | El nodo devuelve las observaciones. Corregí el DTE. |
| Token inválido / auth | No | Revisá el usuario y la contraseña de API. |
| Clave vencida | No | Renová el .p12 / la clave y actualizá la credencial. |
| Red / Timeout | Sí | Problema pasajero; se reintenta automáticamente. |
Ver también
Sección titulada «Ver también»- Cola de reintentos (DLQ) — cómo se reintentan las ejecuciones que fallan.
- Nodo HTTP — para servicios no cubiertos por estos nodos.