RAUDACLOUD·DTEEl Salvador
API DTE MH · Manual Tecnológico V2.0 · REST + JSON + JWS

API de facturación electrónica del Ministerio de Hacienda

Del token a la consulta del lote: el circuito completo que su Gestor de Facturación Electrónica debe implementar, con los endpoints, tiempos y reglas operativas exactas del manual oficial.

Paso 0

Ambientes y autenticación

Existen dos ambientes estrictamente separados — pruebas (apitest.dtes.mh.gob.sv, ambiente 00) y producción (api.dtes.mh.gob.sv, ambiente 01). Los documentos de prueba carecen de valor legal y jamás deben enviarse a producción.

La autenticación es un POST con user y pwd (credenciales de tipo aplicación) en application/x-www-form-urlencoded, que devuelve un JWT Bearer. El token vige 24 horas en producción (48 en pruebas): autentíquese una vez al día, no por cada envío. El usuario se bloquea cuando los intentos fallidos superan los tres (al cuarto error de credenciales).

La contraseña — de 13 a 25 caracteres con letras, números y un carácter especial — no vence, pero puede rotarse desde la Consola de Administración de Facturación Electrónica.

# 1. Obtener token
POST https://api.dtes.mh.gob.sv/seguridad/auth
Content-Type: application/x-www-form-urlencoded
User-Agent: mi-gestor/1.0

user=<usuario>&pwd=<contraseña>

# Respuesta
{ "status": "OK",
  "body": {
    "token": "Bearer eyJhbGciOiJIUzUxMiJ9…",
    "tokenType": "Bearer", "roles": ["ROLE_USER"]
  } }
Paso 1

El firmador oficial

La Administración Tributaria distribuye una solución de firma basada en Java, standalone — no necesita conectividad fuera de la infraestructura del contribuyente — que produce el JWS (RSA512) exigido. Tres formas de desplegarla:

svfe-api-firmador.zip

Proyecto Java Spring Boot

Código fuente personalizable para agregar controles propios e integrarlo a la arquitectura corporativa.

dte-firmador.zip

Contenedor Docker

Imagen lista para ejecutar, con y sin SSL. Requiere Docker Desktop en Windows o Linux y el certificado en la carpeta indicada.

Windows

Servicio de Windows

Instalación como servicio local para infraestructuras basadas en servidores Windows.

Paso 2

Endpoints del Sistema de Transmisión

Servicios REST. Base de pruebas https://apitest.dtes.mh.gob.sv · base de producción https://api.dtes.mh.gob.sv. Las rutas se consumen sin barra final (trailing slash) y todo en UTF-8.

Manual Tecnológico V2 — sección 4
ServicioMétodoRuta
AutenticaciónPOST/seguridad/auth
Recepción uno a unoPOST/fesv/recepciondte
Recepción por lotesPOST/fesv/recepcionlote
Consulta de DTEPOST/fesv/recepcion/consultadte
Consulta de loteGET/fesv/recepcion/consultadtelote/{codigoLote}
Evento de ContingenciaPOST/fesv/contingencia
Evento de InvalidaciónPOST/fesv/anulardte
Recepción por lotes

Máximo 100 DTE por lote y hasta 400 lotes; procesamiento asíncrono de 1 a 3 minutos por lote en producción (2 a 3 minutos en pruebas). La respuesta inmediata entrega un codigoLote con el que se consulta el resultado. Horario de recepción de lotes en producción: 10:00 pm a 05:00 am (08:00 am a 05:00 pm en pruebas) — restricción pensada para facturación cíclica. Los lotes por contingencia se reciben 24/7, los 365 días.

Paso 3

Política de reintentos

Umbral de espera: 8 segundos. Si el servicio no responde, o si su sistema falla al procesar la respuesta:

  1. Consultar el estado del documento transmitido (consultadte) para verificar si fue recibido.
  2. Si no fue recibido, reenviar la solicitud de recepción — máximo 2 veces más.
  3. Si tras los reintentos no hay recepción, iniciar operación en contingencia, reintentando la conectividad como mínimo cada 15 minutos.

Evite la redundancia: una vez obtenida la respuesta de recepción o rechazo, no retransmita el mismo documento.

Holgura de fechas en la transmisión

Se aceptan documentos con hasta un día posterior a la fecha de transmisión — excepto el último día del período tributario, donde la tolerancia se reduce a 30 minutos respecto de la hora del servicio de recepción.

Paso 4

QR de consulta pública

Toda Representación Gráfica integra un código QR (o URL) hacia la consulta pública del Ministerio de Hacienda:

https://admin.factura.gob.sv/consultaPublica
  ?ambiente={00|01}
  &codGen={UUID del DTE}
  &fechaEmi={AAAA-MM-DD}

Lineamientos no negociables

  • JSON limpio: sin ; residuales ni caracteres inválidos al final de cadenas o del documento.
  • Los JSON Schema de factura.gob.sv son referenciales: no eximen de las reglas lógicas y cálculos fiscales.
  • TLS 1.2 o superior y gestión cifrada de tokens y credenciales.
  • Infraestructura desplegada solo en jurisdicciones con tratados de extradición y convenios de asistencia legal mutua por delitos informáticos vigentes con El Salvador.
  • Validaciones matemáticas, lógicas y de catálogo propias del rubro implementadas antes de emitir.
Arquitectura exigida

Lo que el Anexo I espera de su plataforma

El gestor debe implementar cuatro módulos — Generación, Firmado, Transmisión y Entrega — y, según el volumen transaccional: alta disponibilidad, plan de recuperación ante desastres, balanceadores de carga, autoescalado, respaldos, trazabilidad, monitoreo de transacciones y reportes. En seguridad: control de accesos, logs de usuarios y administradores, cifrado de información sensible, plan de continuidad y gestión de incidentes. Además, copia de respaldo de la base de datos de los JSON transmitidos con su Sello de Recepción.

De la guía al cumplimiento

La integración con Hacienda, ya resuelta

Autenticación JWT, firmador, reintentos, lotes y QR son semanas de desarrollo antes de emitir la primera factura. Con RaudaCloud DTE esa capa ya está construida y probada: usted emite desde la aplicación y no escribe una línea contra el Sistema de Transmisión. Hoy no publicamos una API REST para que su ERP emita por su cuenta — puede ver todo lo que el sistema sí hace, y lo que no.