Saltar al contenido

API de facturación electrónica · El Salvador

Tu factura electrónica, sellada por Hacienda en una sola llamada.

sudte calcula, arma el JSON oficial, lo firma con tu certificado, lo transmite al Ministerio de Hacienda y te devuelve el sello, el PDF y el JSON. Desde tu sistema, tu POS o tu Odoo.

  • Sandbox gratis al instante
  • PDF con QR y correo incluidos
  • Rechazos sin costo
POST /v1/documents
curl https://api.sudte.com/v1/documents \
  -H "Authorization: Bearer $SUDTE_API_KEY" \
  -H "Idempotency-Key: venta-000123" \
  -H "Content-Type: application/json" \
  -d '{
    "emitter_id": "emi_01J9Z8K2QF4T6W3X5Y7A9B1C2D",
    "type": "01",
    "establishment": "M001",
    "point_of_sale": "P001",
    "receiver": { "name": "Ana López", "email": "ana@example.com" },
    "items": [{ "description": "Café molido 1 lb", "quantity": "2",
                "unit_price": "8.50", "tax": "gravada" }],
    "payment": { "condition": "1",
                 "methods": [{ "code": "01", "amount": "17.00" }] }
  }'
const res = await fetch('https://api.sudte.com/v1/documents', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SUDTE_API_KEY}`,
    'Idempotency-Key': 'venta-000123',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    emitter_id: 'emi_01J9Z8K2QF4T6W3X5Y7A9B1C2D',
    type: '01',
    establishment: 'M001',
    point_of_sale: 'P001',
    receiver: { name: 'Ana López', email: 'ana@example.com' },
    items: [
      { description: 'Café molido 1 lb', quantity: '2', unit_price: '8.50', tax: 'gravada' },
    ],
    payment: { condition: '1', methods: [{ code: '01', amount: '17.00' }] },
  }),
});

const dte = await res.json();
console.log(dte.control_number, dte.reception_stamp);
import os
import requests

r = requests.post(
    "https://api.sudte.com/v1/documents",
    headers={
        "Authorization": f"Bearer {os.environ['SUDTE_API_KEY']}",
        "Idempotency-Key": "venta-000123",
    },
    json={
        "emitter_id": "emi_01J9Z8K2QF4T6W3X5Y7A9B1C2D",
        "type": "01",
        "establishment": "M001",
        "point_of_sale": "P001",
        "receiver": {"name": "Ana López", "email": "ana@example.com"},
        "items": [{
            "description": "Café molido 1 lb",
            "quantity": "2",
            "unit_price": "8.50",
            "tax": "gravada",
        }],
        "payment": {"condition": "1", "methods": [{"code": "01", "amount": "17.00"}]},
    },
    timeout=30,
)
dte = r.json()
print(dte["control_number"], dte["reception_stamp"])
Respuesta 201 Created · sellado
{
  "status": "processed",
  "control_number": "DTE-01-M001P001-000000000000042",
  "generation_code": "8C1F7E2A-4B6D-4E3A-9F1C-2D5B7A9E0C34",
  "reception_stamp": "2026A3F9C1D47E8B4F2A9C0D6E1B5A7C3F8D2E4B",
  "totals": { "subtotal": "17.00", "iva": "1.96", "total": "17.00" },
  "pdf_url": "https://api.sudte.com/v1/documents/doc_01JA…/pdf"
}

Documentos tributarios electrónicos

Todos los DTE del MH en un solo endpoint

El mismo POST /v1/documents para cada tipo: cambias el campo type y sudte aplica las reglas de cada documento según la Normativa de Cumplimiento DTE versión 2.0.

Tipos de documento tributario electrónico y su disponibilidad en sudte
Código Documento Estado
01 Factura FE Disponible
03 Comprobante de crédito fiscal CCF Disponible
05 Nota de crédito NC Disponible
06 Nota de débito ND Disponible
04 Nota de remisión NR Próximamente
07 Comprobante de retención CR Próximamente
11 Factura de exportación FEX Próximamente
14 Factura de sujeto excluido FSE Próximamente
08 Comprobante de liquidación CL Próximamente
09 Documento contable de liquidación DCL Próximamente
15 Comprobante de donación CD Próximamente

Deja sin efecto un DTE sellado, con o sin documento de reemplazo.

Evento de contingencia

Próximamente

Reporta al MH los documentos emitidos mientras su sistema no respondía.

Evento de retorno

Próximamente

Devoluciones sobre facturas sin ajuste de crédito fiscal.

Cómo funciona

De la cuenta a producción en tres pasos

  1. 01

    Crea tu cuenta

    Recibe tu API key de pruebas (sk_test_) al instante y emite contra el ambiente de pruebas del Ministerio de Hacienda. Sin tarjeta.

  2. 02

    Integra en una tarde

    Envía datos de negocio: cliente, productos y pago. sudte calcula el IVA y los totales con las reglas de redondeo del MH, arma el JSON oficial, lo valida, lo firma y lo transmite.

  3. 03

    Pasa a producción

    Carga tu certificado y tu contraseña de API del MH, cambia sk_test_ por sk_live_ y listo. Te acompañamos en la autorización como emisor.

Integraciones

Factura desde donde ya vendes

La misma API sirve a tu ERP, tu caja y tus desarrolladores. Toda la lógica fiscal vive en sudte, así que un cambio de la Normativa no te obliga a actualizar cada sistema.

Seguridad y cumplimiento MH

Hecho para que Hacienda no te rechace

Aplicamos las reglas de la Normativa y del manual técnico del MH en cada documento, y protegemos tus credenciales como lo que son: la firma de tu empresa.

Cómo protegemos tus datos

Validado antes de firmar

Cada documento se valida contra el esquema JSON oficial del MH (Factura v2, CCF v4, notas v4) y te devolvemos todos los errores juntos, en español y con la ruta del campo.

Tu certificado, cifrado

Certificado, clave privada y contraseña de la API del MH se guardan cifrados con AWS KMS. Nunca se devuelven ni aparecen en registros.

Números de control sin duplicados

Correlativo atómico por NIT, centralizado o por establecimiento como exige la Normativa, aunque emitas desde varios sistemas o compañías de Odoo.

Reintentar nunca duplica

Idempotency-Key en cada POST. Ante una falla consultamos al MH antes de reenviar y jamás volvemos a firmar un código de generación con otro contenido.

Sello antes de entregar

El receptor recibe el JSON firmado con sello y el PDF con QR de consulta pública solo cuando el MH ya otorgó el sello de recepción.

Redondeo como lo valida el MH

Aritmética decimal (nunca float), 8 decimales por ítem, 2 en el resumen y totales desde valores ya redondeados, dentro de la holgura de ±0.01.

Precios

Pagas por documentos sellados. Nada más.

Sin costo de configuración, sin permanencia y sin cargos ocultos. Recibes tu crédito fiscal de TSA El Salvador por cada cobro.

Ver todos los precios

Sandbox

Gratis para siempre

Ambiente de pruebas del MH sin límite de documentos. Tu API key de pruebas al registrarte.

Crear cuenta

API

$15 por 1,000 DTE

Prepago sin mensualidad, o plan Integrador desde $49/mes con 5,000 DTE. Emisores ilimitados.

Ver planes de API

Odoo

$29 al mes

Módulo Odoo 20, 500 DTE incluidos y libros de IVA por API. Planes hasta multicompañía.

Ver planes Odoo
  • Rechazos sin costo
  • Notas de crédito y débito gratis
  • PDF y correo incluidos
  • Sin costo de configuración
  • Precios sin IVA

FAQ

Preguntas frecuentes

¿Otra duda? Escríbenos a ventas@sudte.com.

¿Qué es sudte?

sudte es una API de facturación electrónica para El Salvador. Tu sistema envía los datos de la venta (cliente, productos, pago) y sudte calcula los totales, arma el JSON oficial, lo valida contra los esquemas del Ministerio de Hacienda, lo firma con tu certificado, lo transmite y te devuelve el sello de recepción, el PDF y el JSON firmado.

¿Necesito estar autorizado por Hacienda para usar sudte?

Para emitir en producción, sí: cada empresa (NIT) debe estar autorizada como emisor de DTE por el Ministerio de Hacienda y tener su certificado de firma y su contraseña de la API del MH. sudte es tu sistema de transmisión: te ayuda a completar las pruebas en el ambiente 00 y, cuando el MH te autoriza, solo cambias tu API key de pruebas por la de producción.

¿Cuánto tarda en obtenerse el sello?

En modo síncrono (el predeterminado) la respuesta trae el sello en cuanto el MH lo otorga, normalmente en pocos segundos. Si el MH tarda más de 20 segundos, recibes un 202 y el resultado llega por webhook, sin que tengas que reintentar.

¿Qué pasa si el sistema del Ministerio de Hacienda no responde?

sudte aplica la política de reintentos del manual técnico del MH y consulta el estado del documento antes de reenviarlo, para no duplicarlo. Si la falla continúa, el documento queda en estado de contingencia y te avisamos por webhook. La gestión automática del evento de contingencia está en desarrollo.

¿Me cobran los documentos rechazados?

No. Solo cuentan los DTE que obtienen sello de recepción en producción. Los rechazados, las notas de crédito y débito, los del sandbox, las validaciones con dry_run y los eventos de invalidación no se cobran.

¿Funciona con Odoo?

Sí. El módulo oficial de sudte para Odoo 20 envía tus facturas al confirmarlas y guarda el número de control, el sello, el PDF y el JSON en la factura. Odoo no calcula ni firma nada: todo lo fiscal ocurre en sudte. Odoo Community y Odoo 18 vienen después.

¿Puedo facturar para varias empresas desde una cuenta?

Sí. Una cuenta puede tener varios emisores (uno por NIT), cada uno con sus establecimientos y puntos de venta. Puedes crear API keys limitadas a ciertos emisores, ideal para casas de software y grupos empresariales.

¿Dónde se guardan mi certificado y mis contraseñas del MH?

Se guardan cifrados con AWS KMS (cifrado de sobre) y nunca se devuelven por la API ni aparecen en registros. Solo el servicio de firma los descifra en memoria al momento de firmar.

¿Cumple con la Normativa de Cumplimiento DTE versión 2.0?

Sí. sudte valida cada documento contra los esquemas JSON oficiales vigentes (Factura v2, CCF v4, notas v4, invalidación v3) antes de firmarlo. La versión 2.0 es obligatoria desde el 1 de diciembre de 2026.

Emite tu primer DTE de prueba hoy

Crea tu cuenta, copia tu API key de pruebas y envía tu primera factura al ambiente de pruebas del Ministerio de Hacienda en minutos. Sin tarjeta.