Ejemplos de XML por tipo de CFE
Referencia técnica para ejemplos de xml por tipo de cfe dentro del cliente local.
Objetivo
Esta guía ofrece ejemplos de arranque para construir XML base a enviar a la bandeja REST local.
Los ejemplos son orientativos y no sustituyen la especificación completa de DGI.
Reglas generales
Todos los ejemplos deben interpretarse con estas reglas:
- son XML base sin firma
- la numeración definitiva normalmente la asigna el cliente local
CAEDatano debería venir completo desde el integrador en el flujo normal- los campos obligatorios exactos dependen del tipo de comprobante y del caso fiscal
Ejemplo 1. eTicket contado
<?xml version="1.0" encoding="UTF-8"?>
<CFE xmlns="http://cfe.dgi.gub.uy" version="1.0">
<eTck>
<Encabezado>
<IdDoc>
<TipoCFE>101</TipoCFE>
<FchEmis>2026-04-29</FchEmis>
<MntBruto>1</MntBruto>
<FmaPago>1</FmaPago>
</IdDoc>
<Emisor>
<RUCEmisor>211111110019</RUCEmisor>
<RznSoc>Empresa Demo SA</RznSoc>
<NomComercial>Empresa Demo</NomComercial>
<GiroEmis>Servicios</GiroEmis>
<Telefono>22000000</Telefono>
<CorreoEmisor>[email protected]</CorreoEmisor>
<EmiSucursal>Casa Central</EmiSucursal>
<CdgDGISucur>1</CdgDGISucur>
<DomFiscal>Av. Demo 1234</DomFiscal>
<Ciudad>Montevideo</Ciudad>
<Departamento>Montevideo</Departamento>
</Emisor>
<Totales>
<TpoMoneda>UYU</TpoMoneda>
<MntNoGrv>0.00</MntNoGrv>
<MntNetoIvaTasaBasica>100.00</MntNetoIvaTasaBasica>
<TasaBasica>22.00</TasaBasica>
<MntIVATasaBasica>22.00</MntIVATasaBasica>
<MntTotal>122.00</MntTotal>
<CantLinDet>1</CantLinDet>
</Totales>
</Encabezado>
<Detalle>
<Item>
<NroLinDet>1</NroLinDet>
<IndFact>3</IndFact>
<NomItem>Servicio mensual</NomItem>
<Cantidad>1.000</Cantidad>
<UniMed>NIU</UniMed>
<PrecioUnitario>100.00</PrecioUnitario>
<MontoItem>100.00</MontoItem>
</Item>
</Detalle>
</eTck>
</CFE>
Ejemplo 2. eFactura crédito
<?xml version="1.0" encoding="UTF-8"?>
<CFE xmlns="http://cfe.dgi.gub.uy" version="1.0">
<eFact>
<Encabezado>
<IdDoc>
<TipoCFE>111</TipoCFE>
<FchEmis>2026-04-29</FchEmis>
<MntBruto>1</MntBruto>
<FmaPago>2</FmaPago>
<FchVenc>2026-05-29</FchVenc>
</IdDoc>
<Emisor>
<RUCEmisor>211111110019</RUCEmisor>
<RznSoc>Empresa Demo SA</RznSoc>
<NomComercial>Empresa Demo</NomComercial>
<GiroEmis>Servicios</GiroEmis>
<Telefono>22000000</Telefono>
<CorreoEmisor>[email protected]</CorreoEmisor>
<EmiSucursal>Casa Central</EmiSucursal>
<CdgDGISucur>1</CdgDGISucur>
<DomFiscal>Av. Demo 1234</DomFiscal>
<Ciudad>Montevideo</Ciudad>
<Departamento>Montevideo</Departamento>
</Emisor>
<Receptor>
<TipoDocRecep>2</TipoDocRecep>
<CodPaisRecep>UY</CodPaisRecep>
<DocRecep>216666660012</DocRecep>
<RznSocRecep>Cliente Demo SA</RznSocRecep>
<DirRecep>18 de Julio 1000</DirRecep>
<CiudadRecep>Montevideo</CiudadRecep>
<DeptoRecep>Montevideo</DeptoRecep>
</Receptor>
<Totales>
<TpoMoneda>UYU</TpoMoneda>
<MntNoGrv>0.00</MntNoGrv>
<MntNetoIvaTasaBasica>1000.00</MntNetoIvaTasaBasica>
<TasaBasica>22.00</TasaBasica>
<MntIVATasaBasica>220.00</MntIVATasaBasica>
<MntTotal>1220.00</MntTotal>
<CantLinDet>1</CantLinDet>
</Totales>
</Encabezado>
<Detalle>
<Item>
<NroLinDet>1</NroLinDet>
<IndFact>3</IndFact>
<NomItem>Servicio profesional</NomItem>
<Cantidad>1.000</Cantidad>
<UniMed>NIU</UniMed>
<PrecioUnitario>1000.00</PrecioUnitario>
<MontoItem>1000.00</MontoItem>
</Item>
</Detalle>
</eFact>
</CFE>
Ejemplo 3. nota de crédito de eTicket
<?xml version="1.0" encoding="UTF-8"?>
<CFE xmlns="http://cfe.dgi.gub.uy" version="1.0">
<eTckNC>
<Encabezado>
<IdDoc>
<TipoCFE>102</TipoCFE>
<FchEmis>2026-04-29</FchEmis>
<MntBruto>1</MntBruto>
<FmaPago>1</FmaPago>
</IdDoc>
<Emisor>
<RUCEmisor>211111110019</RUCEmisor>
<RznSoc>Empresa Demo SA</RznSoc>
<NomComercial>Empresa Demo</NomComercial>
<GiroEmis>Servicios</GiroEmis>
<Telefono>22000000</Telefono>
<CorreoEmisor>[email protected]</CorreoEmisor>
<EmiSucursal>Casa Central</EmiSucursal>
<CdgDGISucur>1</CdgDGISucur>
<DomFiscal>Av. Demo 1234</DomFiscal>
<Ciudad>Montevideo</Ciudad>
<Departamento>Montevideo</Departamento>
</Emisor>
<Totales>
<TpoMoneda>UYU</TpoMoneda>
<MntNoGrv>0.00</MntNoGrv>
<MntNetoIvaTasaBasica>100.00</MntNetoIvaTasaBasica>
<TasaBasica>22.00</TasaBasica>
<MntIVATasaBasica>22.00</MntIVATasaBasica>
<MntTotal>122.00</MntTotal>
<CantLinDet>1</CantLinDet>
</Totales>
</Encabezado>
<Detalle>
<Item>
<NroLinDet>1</NroLinDet>
<IndFact>3</IndFact>
<NomItem>Anulación parcial</NomItem>
<Cantidad>1.000</Cantidad>
<UniMed>NIU</UniMed>
<PrecioUnitario>100.00</PrecioUnitario>
<MontoItem>100.00</MontoItem>
</Item>
</Detalle>
<Referencia>
<ReferenciaCFE>
<NroLinRef>1</NroLinRef>
<TpoDocRef>101</TpoDocRef>
<Serie>A</Serie>
<NroCFERef>123</NroCFERef>
<RazonRef>Devolución</RazonRef>
</ReferenciaCFE>
</Referencia>
</eTckNC>
</CFE>
Recomendaciones de uso
- comenzar por eTicket contado para validar el pipeline
- luego probar eFactura con receptor informado
- recién después incorporar referencias, descuentos, medios de pago y casos fiscales especiales
Qué validar antes de usar un XML en producción
- que el namespace sea correcto
- que el
RUCEmisorcoincida con el perfil local - que el tipo de CFE corresponda al punto de emisión
- que el XML pase
POST /validar-xml - que los totales sean consistentes con el detalle
Referencia complementaria
Para la lógica operativa de envío, revisar: