E-invoicing in El Salvador: the JSON-based DTE
El Salvador made a choice that sets it apart from almost all of its Latin American neighbours: its Documento Tributario Electrónico (DTE) is built in JSON, not XML. Each document is generated as JSON conforming to the esquemas published by the Dirección General de Impuestos Internos (DGII), digitally signed, then transmitted in real time to the Ministerio de Hacienda (Ministry of Finance), which returns a sello de recepción (receipt stamp) — without that stamp, the document has no fiscal validity. It is a classic clearance model, but with a distinctive technical grammar.
Context & legal framework
El Salvador's electronic invoicing system is built on the Documento Tributario Electrónico (DTE), run by the Ministerio de Hacienda through the Dirección General de Impuestos Internos (DGII) — the Internal Revenue Directorate.
The legal foundation is Legislative Decree No. 487, approved on 30 August 2022, which amended 14 articles of the Código Tributario (Tax Code) to govern the issuance, transmission, receipt and invalidation of DTEs. On top of this sit the technical guides and JSON schemas published by the DGII, plus a mandate calendar notified taxpayer by taxpayer.
- Regulator: Ministerio de Hacienda — DGII.
- Scope: every VAT-liable transaction (IVA) must produce a DTE — B2B, B2C and to the public sector.
- Fiscal validity: a DTE is valid only once it carries the sello de recepción applied by the tax authority; paper disappears in favour of a graphic representation (PDF/QR) that merely represents the authoritative JSON version.
- Digital identity: every issuer must hold a firma electrónica certificate and register in the MH system before issuing.
El Salvador passed the one-billion-DTE-processed mark in 2024–2025, a sign that the rollout is now structural rather than a pilot.
Regulatory timeline
The obligation did not come into force all at once: the MH proceeded in waves (grupos), starting with the largest taxpayers and notifying each company individually of its switch-over date.
| Date | Milestone |
|---|---|
| 30 Aug 2022 | Legislative Decree No. 487 — DTE legal basis in the Tax Code. |
| 1 Jul 2023 | Group 1 — first large taxpayers mandated. |
| 1 Oct 2023 | Group 2. |
| 1 Jan 2024 | Group 3 — broader rollout. |
| 1 Apr 2024 | Group 4. |
| 1 Jun 2024 | Group 5. |
| 1 Jul 2024 | Group 6. |
| 2025 | Extension to notified medium and small taxpayers; switch to exclusively electronic documents for notified companies. |
Note: the dates above reflect the published waves; the MH has at times deferred or added grupos. The practical rule is that a company becomes mandated on the date stated in its individual notification, viewable on the Ministry of Finance portal. Dates from 2025 onward are indicative and subject to adjustment.
Format & technical schema
The DTE is a JSON object — the Salvadoran singularity against the XML/UBL models dominant across Latin America. The DGII publishes a distinct JSON Schema per document type; using the wrong schema version triggers immediate rejection.
The 11 DTE types (tipoDte):
| Code | Document |
|---|---|
| 01 | Factura Electrónica — invoice to a final consumer (no NRC) |
| 03 | Comprobante de Crédito Fiscal — tax-credit voucher (client with NRC, VAT credit) |
| 04 | Nota de Remisión — remittance note |
| 05 | Nota de Crédito — credit note |
| 06 | Nota de Débito — debit note |
| 07 | Comprobante de Retención — withholding voucher |
| 08 | Comprobante de Liquidación — settlement voucher |
| 09 | Documento Contable de Liquidación — accounting settlement |
| 11 | Factura de Exportación — export invoice |
| 14 | Factura de Sujeto Excluido — excluded-subject invoice |
| 15 | Comprobante de Donación — donation voucher |
Common structure — every DTE shares the same blocks: identificacion (metadata), emisor (issuer), receptor (recipient), cuerpoDocumento (line items), resumen (totals), plus optional blocks (documentoRelacionado, extension, apendice).
Key identificacion fields: ambiente (00 = test, 01 = production), tipoModelo (1 = previo/normal, 2 = deferred/contingency), tipoOperacion, numeroControl and codigoGeneracion (UUID v4).
{
"identificacion": {
"version": 3,
"ambiente": "01",
"tipoDte": "01",
"numeroControl": "DTE-01-00000001-000000000000001",
"codigoGeneracion": "A1B2C3D4-E5F6-4789-A0B1-C2D3E4F5A6B7",
"tipoModelo": 1,
"tipoOperacion": 1,
"tipoContingencia": null,
"fecEmi": "2026-06-23",
"horEmi": "14:32:05",
"tipoMoneda": "USD"
},
"emisor": {
"nit": "06140101901011",
"nrc": "123456",
"nombre": "Comercial Cuscatlan, S.A. de C.V.",
"codActividad": "46900"
},
"receptor": {
"tipoDocumento": "36",
"numDocumento": "06142803901012",
"nombre": "Distribuidora Pacifico, S.A. de C.V."
},
"cuerpoDocumento": [
{
"numItem": 1,
"descripcion": "Consulting service",
"cantidad": 1,
"precioUni": 100.00,
"ventaGravada": 100.00
}
],
"resumen": {
"totalGravada": 100.00,
"totalIva": 13.00,
"totalPagar": 113.00,
"totalLetras": "ONE HUNDRED THIRTEEN 00/100"
},
"selloRecibido": "2025AB12CD34EF56..."
}The selloRecibido is not produced by the issuer: it is returned by the MH after acceptance (see next section). Note: the currency is the US dollar (USD), El Salvador's legal tender.
Transmission flow
The DTE follows a real-time clearance model. The canonical flow (modelo previo, tipoModelo = 1):
- Generation of the JSON in the issuer's billing system, conforming to the schema of the target
tipoDte, with acodigoGeneracion(UUID v4) and anumeroControl(formatDTE-NN-XXXXXXXX-NNNNNNNNNNNNNNN: type, establishment/point-of-issue code, then a correlative). - Digital signature of the document with the issuer's firma certificate — guarantees authenticity and integrity.
- Transmission to the Ministry of Finance reception service.
- Validation and stamp: the MH validates structure and business rules, then returns the
selloRecibido(sello de recepción). The DTE only becomes fiscally valid at this moment. - Delivery to the recipient (JSON + a graphic representation with a QR code enabling public lookup of the DTE).
Contingencia (degraded mode) — if the connection to the MH drops, the issuer can generate DTEs in contingency (tipoModelo = 2, with a tipoContingencia reason) and keep invoicing offline. Once the connection is restored:
- the issuer must transmit the “Evento de Contingencia” within a maximum of 24 hours;
- then transmit the accumulated DTEs to the tax administration within a maximum of 72 hours.
This mechanism prevents commercial activity from halting during an outage while ensuring after-the-fact regularisation.
Validation & compliance
A DTE's compliance is checked by the MH automatically on receipt, across several layers:
- Schema validation: the JSON must match the exact JSON Schema of the document's type and version. A stale schema version or a mistyped field means rejection.
- Valid signature: the firma electrónica certificate must be active and match the registered issuer.
- Business consistency: totals (
resumen) consistent with line items (cuerpoDocumento), VAT (IVA 13%) correctly computed, valid NIT/NRC identifiers, non-duplicatednumeroControl. - Sello de recepción: proof of acceptance. Public DTE lookup (by
codigoGeneracion+ issuer NIT) lets a recipient verify that a document was actually stamped by the MH.
Cancellation: a stamped DTE is not “deleted” — it is invalidated via an evento de invalidación sent to the MH, or corrected with a credit/debit note as appropriate. Businesses must retain DTEs (signed JSON) for the statutory retention periods of the Tax Code.
Common pitfalls
- Assuming it's XML. The LATAM reflex (UBL/XML) does not apply here: everything is JSON, with bespoke JSON Schemas. Reusing an XML connector from a neighbouring country will not work.
- Wrong schema version. Each
tipoDtehas its own schema version, and the DGII evolves them. Issuing against an obsolete version means instant rejection. Watch for schema-update announcements (schema changes are expected for 2026). - Confusing
codigoGeneracionandnumeroControl. The first is a unique, random UUID v4; the second is a structured, sequential correlative per point of issue. Both are mandatory and distinct. - Forgetting the sello. A DTE that is generated and signed but not stamped by the MH has no fiscal value, even if the customer received a PDF. The PDF/QR is only a representation; the source of truth is the stamped JSON.
- Missing contingency deadlines. During an outage, failing to transmit the contingency event (24 h) and then the DTEs (72 h) within the deadlines exposes you to penalties.
- Expired or unregistered certificate. Without a valid firma certificate and a duly registered issuer with the MH, no issuance is possible.
- Ignoring your mandate date. The obligation is notified individually; relying on a “general” date instead of checking your notification on the MH portal can lead to issuing late.
Cross links
Because El Salvador's DTE is natively JSON, it diverges from the most widespread standard families — useful to know in order to place the model:
- El Salvador's JSON format contrasts with UBL, the XML language underpinning most of the world's e-invoicing models.
- It does not use the Peppol network, nor EDIFACT or ISO 20022 profiles; transmission goes directly to the Ministry of Finance API.
- To compare with other jurisdictions and their clearance models, see the countries index.
- For terminology (clearance, sello, NRC, NIT…), see the glossary.
Official source: Ministerio de Hacienda — Facturación Electrónica and the factura.gob.sv portal (JSON schemas, integration guides, public DTE lookup).