Retención en la Fuente en Factura Electrónica Colombia: Campos XML y Reglas DIAN
Cómo declarar correctamente la retención en la fuente (TaxScheme ID 06) en el XML UBL 2.1 de la DIAN: base imponible, porcentajes por concepto y cálculo de PayableAmount.

Ing. Carlos Méndez | Septiembre 2026
Ing. Carlos Méndez es arquitecto de software con más de 10 años integrando sistemas fiscales en América Latina. Ha liderado implementaciones de facturación electrónica en Colombia, México y Centroamérica para ISVs de mediana y gran escala.
La retención en la fuente sobre factura electrónica es el campo que más rechazos genera en produccion después de una migración desde facturación en papel. En papel, el concepto tributario y la tarifa se acordaban por canales informales. En la factura electrónica, cada peso de retención debe ir justificado con el TaxScheme ID correcto, la base gravable exacta y el porcentaje válido según la normativa DIAN vigente. Si alguno de los tres no cuadra, la DIAN rechaza el documento completo.
Este artículo desglosa en detalle el funcionamiento de la retención en la fuente (reteRenta) en la factura electrónica colombiana: cuándo aplica, cómo se calcula la base, qué conceptos tributarios y tarifas define la DIAN, y cómo se mapea correctamente al bloque WithholdingTaxTotal con TaxScheme ID 06 en el XML UBL 2.1.
Cuándo aplica la retención en la fuente en una factura electrónica
La retención en la fuente sobre bienes y servicios aplica cuando el comprador (pagador) es un agente retenedor designado por la DIAN. Son agentes retenedores de forma general: las personas jurídicas, las sociedades de hecho, las empresas unipersonales, las entidades del Estado, los grandes contribuyentes, los autorretenedores y los consorcios. El ISV debe identificar en el perfil de cada cliente comprador si está marcado como agente retenedor, y solo entonces incluir el bloque WithholdingTaxTotal con ID 06 en el XML de la factura.
Cuando el emisor mismo está clasificado como autorretenedor ante la DIAN, la lógica cambia: el emisor practica su propia retención y la declara en su liquidación periódica, pero sigue incluyendo el bloque de autorretención en el XML de la factura electrónica con TaxScheme ID 06. La diferencia es que el agente retenedor es el propio emisor, no el comprador.
La base gravable: qué se incluye y qué no
La base gravable de la retención en la fuente es el valor del bien o servicio antes de impuestos (sin IVA). En términos del XML, la base es el LineExtensionAmount o TaxableAmount del ítem correspondiente. Lo que no entra en la base: el IVA, las retenciones de otros conceptos (reteIVA, reteICA), descuentos que ya fueron aplicados antes del IVA. Un error frecuente es calcular la retención sobre el total con IVA incluido, lo que produce una base incorrecta y un rechazo DIAN por inconsistencia matemática.
Cuando la factura incluye líneas con tarifas de IVA distintas (por ejemplo, 19% para servicios y 5% para ciertos bienes), la base de reteRenta sigue siendo la suma de todos los LineExtensionAmount, sin importar la tarifa de IVA de cada línea. La retención se aplica sobre el total gravable del documento, no línea por línea.
Conceptos tributarios y tarifas según la DIAN
La DIAN clasifica la retención en la fuente según el concepto tributario del pago, y cada concepto tiene una tarifa diferente. Los más frecuentes en contextos de facturacón electrónica entre empresas son: compras en general de bienes y productos al 2.5% sobre la base gravable; servicios en general al 4%; honorarios de personas jurídicas al 11%; honorarios de personas naturales al 10% u 11% según el monto acumulado anual; arrendamiento de bienes inmuebles al 3.5%; transporte de carga al 1%. El concepto tributario debe coincidir con la actividad descrita en la factura; incluir el concepto incorrecto genera inconsistencia en la declaración tributaria del comprador.
Para ISVs que manejan clientes en diferentes sectores, la recomendación es implementar un catálogo de conceptos tributarios configurable por tipo de cliente o por línea de negocio, en lugar de hard-codear una tarifa única. La DIAN puede actualizar las tarifas mediante decreto, y un catálogo parametrizable permite actualizar sin modificar el código.
Mapeo al XML UBL 2.1: estructura WithholdingTaxTotal para reteRenta
El bloque XML para la retención en la fuente se ubica como hijo directo de Invoice, después de los bloques TaxTotal. La estructura mínima requerida por la DIAN tiene los siguientes campos: cbc:TaxAmount con currencyID (el monto total retenido), cac:TaxSubtotal que contiene cbc:TaxableAmount (la base), cbc:TaxAmount (igual al TaxAmount del nivel raíz), y cac:TaxCategory que a su vez contiene cbc:Percent (la tarifa como número decimal), cbc:TaxExemptionReasonCode (opcional, para casos de exención), y cac:TaxScheme con cbc:ID igual a '06' y cbc:Name igual a 'RETEFUENTE'.
El campo cbc:TaxAmount en el nivel de WithholdingTaxTotal debe expresar el monto con la misma moneda que el resto del documento (COP). El uso de decimales sigue la regla general del Anexo Técnico DIAN: máximo 2 decimales para moneda funcional COP. Para facturas en moneda extranjera (exportación), los montos de retención deben expresarse también en la divisa del documento, y existe un campo de tipo de cambio que la DIAN usa para validar la equivalencia en COP.
Impacto en LegalMonetaryTotal: cómo afecta el PayableAmount
La retención en la fuente reduce el valor neto a pagar. El campo LegalMonetaryTotal/PayableAmount debe calcularse así: PayableAmount = LineExtensionAmount + AllowanceTotalAmount (descuentos negativos) + TaxInclusiveAmount (IVA) - suma de todos los WithholdingTaxTotal/TaxAmount. Si el documento tiene reteRenta de $35,000, reteIVA de $28,500 y reteICA de $9,000, el PayableAmount se reduce en $72,500 respecto al total con impuestos. La DIAN verifica esta aritmética y produce rechazo si hay discrepancia mayor a 1 peso.
Un punto que genera errores sutiles: el campo LegalMonetaryTotal/TaxInclusiveAmount incluye el IVA pero NO descuenta las retenciones. Es decir, TaxInclusiveAmount = LineExtensionAmount + IVA. Solo PayableAmount refleja el descuento de las retenciones. Los dos campos coexisten en el mismo bloque LegalMonetaryTotal con valores distintos, y la DIAN los valida de forma independiente.
Casos especiales: régimen simple y grandes contribuyentes
Los contribuyentes del Régimen Simple de Tributación (SIMPLE) no son sujetos a retención en la fuente a título de renta. Si el emisor está en el régimen SIMPLE, el bloque WithholdingTaxTotal con ID 06 no debe incluirse en su XML, aunque el comprador sea agente retenedor. El ISV debe verificar el régimen tributario del emisor antes de incluir el bloque. Esta información está disponible en el RUT del emisor bajo la responsabilidad 47 (régimen SIMPLE).
Los grandes contribuyentes que son compradores pueden tener tarifas de retención diferenciadas o acuerdos de autorretención. En estos casos, el ISV debe implementar lógica de configuración por cliente para evitar aplicar la tarifa genérica del concepto cuando existe una tarifa especial acordada o autorizada por la DIAN para ese contribuyente específico.
Preguntas frecuentes sobre retención en la fuente en FE
¿Cuál es la diferencia entre reteRenta del emisor y autorretención en la factura electrónica?
En la retención ordinaria, el comprador practica la retención y el emisor la declara en el XML. En la autorretención, el propio emisor practica y declara la retención sobre sus propios ingresos porque la DIAN lo designó autorretenedor. Ambos usan TaxScheme ID 06 en el XML, pero la lógica de negocio que activa el bloque es diferente: en el primero depende del perfil del comprador, en el segundo del perfil del emisor. El ISV debe gestionar ambas modalidades.
¿Cómo puedo saber cuál es el concepto tributario y la tarifa aplicable para un comprador específico?
El concepto tributario depende de la naturaleza del bien o servicio facturado, no del comprador. La tarifa correcta se determina consultando la tabla de conceptos de retención publicada anualmente por la DIAN mediante decreto de retenciones. Para ISVs, la implementación práctica es configurar el concepto tributario a nivel de producto o línea de negocio en el catálogo de artículos, y calcular la tarifa automáticamente cuando se identifica que el comprador es agente retenedor.
¿Qué diferencia hay entre el cbc:TaxAmount de WithholdingTaxTotal y el del TaxSubtotal interno?
En una factura con un solo tipo de retención deben ser iguales. La diferencia existe cuando el mismo TaxScheme tiene múltiples tramos o cuando se consolida el bloque (lo que la DIAN no recomienda). En la práctica, lo más seguro es generar un bloque WithholdingTaxTotal por concepto de retención, con un solo TaxSubtotal, y asegurar que ambos TaxAmount sean idénticos. La DIAN verifica esta consistencia en tiempo real.
¿Es posible emitir facturas electrónicas sin retención aunque el comprador sea agente retenedor?
Sí, técnicamente es posible emitir la FE sin el bloque WithholdingTaxTotal y la DIAN la acepta. Pero esto crea un problema contable: el comprador practicará la retención en su sistema de forma unilateral, generando una discrepancia entre lo registrado en el documento DIAN y lo pagado efectivamente. Lo correcto es incluir siempre las retenciones cuando correspondan, para que el documento fiscal refleje la transacción real y no genere diferencias en las declaraciones tributarias de ambas partes.
Sobre el autor
Ing. Carlos Méndez es arquitecto de software con más de 10 años integrando sistemas fiscales en América Latina. Ha liderado implementaciones de facturación electrónica en Colombia, México y Centroamérica para ISVs de mediana y gran escala.
Artículos Relacionados
Errores de Retenciones en DIAN: Códigos, Causas y Solución para Equipos de Desarrollo
Los 9 errores más frecuentes al declarar retenciones (reteRenta, reteIVA, reteICA) en factura electrónica DIAN: códigos de rechazo, causa raíz y acción correctiva.
Agente de Retención en Colombia: Obligaciones Técnicas para API de Facturación Electrónica
Qué es un agente de retención en Colombia, cómo identificarlo desde la API, qué impacto tiene en el XML UBL 2.1 y cómo diseñar el modelo de datos para soportar múltiples agentes retenedores.
ReteIVA y ReteICA en Factura Electrónica Colombia: Campos Obligatorios en el XML DIAN
Cómo implementar correctamente reteIVA (TaxScheme ID 04) y reteICA (TaxScheme ID 07) en la factura electrónica colombiana: bases, tarifas, municipios y validación DIAN.