Impuestos
Impuestos
Descripción: Nodo condicional para expresar el resumen de los impuestos aplicables. Debe existir al menos uno de los dos elementos hijo. Un cambio radical es que ahora son por partida. Guía de llenado: En este nodo se pueden expresar los impuestos aplicables a cada concepto. Cuando un concepto no registra la información de algún impuesto, implica que no es objeto del mismo. Si se registra información en este nodo, debe existir al menos una de las dos secciones siguientes: Traslados o Retenciones. Introducción: El nodo y/o atributo de impuestos en la versión 3.3 sufre un cambio radical en la forma de manejarse. En una factura sus impuestos se calculan a nivel concepto-partida y posteriormente se sumarizan para tener el total de impuestos. De tal manera qué, si tuviera dos impuestos en una factura, al final tendría la suma de los dos impuestos (generalmente IVA, IEPS). El problema principal radica en que en la versión 3.2 solamente exige que indique el total de los impuestos del documento, provocando con ello que no podamos tener la información de cada impuesto a nivel partida, luego entonces, no se puede interpretar en forma totalmente completa un XML con la versión 3.2 porque el cálculo del impuesto a nivel partida, se hizo en la factura, pero nunca en el XML. En la versión 3.3 esto se corrige, puesto que ahora se exige el detalle de los descuentos aplicables a cada una de las partidas. Uno de los problemas que se pueden presentar es cuando se tienen varios productos con un mismo impuesto, pero el impuesto tiene diferentes tasas. Ejemplo: IVA al 16% y 0%. Pues bien, en la versión 3.3 incluso nos permite conocer el impuesto aplicable a cada partida, la tasa aplicable a cada partida, así como si fue cuota o factor correspondiente y por consiguiente el valor. De tal manera que nuestro análisis de este Nodo de Impuestos lo haremos a nivel documento y a nivel detalle, entendiéndose que en la versión 3.2 no existía ninguna información a nivel detalle, todo era a nivel documento. A continuación, mostramos el nodo de impuestos a nivel detalle de la versión 3.3 del Anexo 20. Comentario: Aun cuando el SAT manifiesta este nodo como opcional, realmente es condicional, porque cuando se tenga el impuesto, o se sea causante de impuesto, prácticamente se estaba obligado a presentar esta información. Si no se captura se asume que no eres causante de ese impuesto, y si no se causa, el SAT te va a requerir porque no lo pagaste.
Antes (Anexo 20 versión 3.2) No existía Ahora (Anexo 20 versión 3.3)
 
Los atributos de ambos nodos, se llaman exactamente igual, y la única diferencia es que en el Nodo de Traslados a nivel detalle, incluye el atributo Base. Comentario: Creemos qué hubiera sido muy sano de parte del SAT poner un prefijo para diferenciar o identificar los atributos de Detalles y de Documento. Recomendamos tener mucho cuidado al momento de comparar o analizar esta información.
Base
Base Antes (Anexo 20 versión 3.2) No existía Ahora (Anexo 20 versión 3.3) Descripción: Atributo requerido para señalar la base para el cálculo del impuesto, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes. No se permiten valores negativos.
Descripción: Atributo requerido para señalar la base para el cálculo del impuesto, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes. No se permiten valores negativos. Maneja un valor mínimo de 0.000001 Tipo Especial: t_importe. t_Importe Tipo definido para expresar importes numéricos con fracción hasta seis decimales. El valor se redondea de acuerdo con el número de decimales que soporta la moneda. No se permiten valores negativos. Guía de llenado: Se debe registrar el valor para el cálculo del impuesto que se traslada, puede contener de cero a 6 decimales. Cuando el campo TipoFactor sea Tasa, este campo debe tener hasta la cantidad de decimales que soporte la moneda. Cuando el campo TipoFactor sea Cuota, este campo puede tener hasta 6 decimales. El valor de eeste campo debe ser mayor que cero. Regla de validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. Debe ser mayor que cero. Marco legal: Ley de IVA Artículo 1º. Están obligadas al pago del impuesto al valor agregado establecido en esta Ley, las personas físicas y las morales que, en territorio nacional, realicen los actos o actividades siguientes: (párrafo reformado DOF 30-12-1980) I. Enajenen bienes. II. Presten servicios independientes. III. Otorguen el uso o goce temporal de bienes. IV. Importen bienes o Servicios. Ley de IEPS: Artículo 1º. Están obligas al pago de impuestos establecido en esta Ley, las personas físicas y las morales que realicen los actos o actividades siguientes: I. La enajenación en territorio nacional o, en su caso, la importación de los bienes señalados en esta Ley. Para efectos de la presente Ley se considera importación la introducción al país de bienes. La prestación de los servicios señalados en esta Ley.
Impuesto
Impuesto Antes (Anexo 20 versión 3.2) A nivel detalle no existía A nivel documento tenía un tratamiento diferente. Ahora (Anexo 20 versión 3.3) , a nivel detalle Descripción: Atributo requerido para señalar la clave del tipo de impuesto trasladado aplicable al concepto. Uso: requerido Tipo Especial: catCFDI:c_Impuesto Ahora (Anexo 20 versión 3.3) , a nivel documento Descripción: Atributo requerido para señalar la clave del tipo de impuesto retenido. Uso: requerido Tipo Especial: catCFDI:c_Impuesto
Descripción: Atributo requerido para registrar ahora la clave del tipo de impuesto trasladado aplicable a cada concepto. Ahora existe un catálogo c_Impuesto Tipo Especial: c_Impuesto Guía de llenado: Se debe registrar la clave del tipo de impuesto trasladado aplicable a cada concepto, las cuales se encuentran incluidas en el catálogo c_Impuesto publicado en el Portal del SAT. Ejemplo: Impuesto = “002” Regla de validación: A nivel detalle: Debe existir al menos uno de los dos elementos hijo. A nivel documento: Deben existir los campos para sumarizar el total de impuestos trasladados y el detalle de impuestos trasladados. 
Ejemplo detallado de impuestos
Productos con IVA tasa 16% y 0% El Nodo de impuestos a nivel detalle quedaría de la siguiente manera: El Nodo de impuestos a nivel documento quedaría de la siguiente manera: Ejemplo con IVA e IEPS: El Nodo de impuestos a nivel detalle quedaría de la siguiente manera: El Nodo de impuestos a nivel documento quedaría de la siguiente manera:
TipoFactor
TipoFactor Antes (Anexo 20 versión 3.2) No existía Ahora (Anexo 20 versión 3.3) , a nivel detalle Descripción: Atributo requerido para señalar la clave del tipo factor que se aplica a la base del impuesto. Uso: requerido Tipo Especial: catCFDI:c_TipoFactor Ahora (Anexo 20 versión 3.3) , a nivel documento Descripción: Atributo requerido para señalar la clave del tipo de factor que se aplica a la base del impuesto. Uso: requerido Tipo Especial: catCFDI:c_TipoFactor
Descripción: Atributo requerido para señalar la clave del tipo de factor que se aplica al impuesto. Utiliza el catálogo c_TipoFactor. Guía de llenado: Se debe registrar el tipo de factor que se aplica a la base del impuesto, el cual se encuentra incluido en el catálogo c_TipoFactor publicado en el Portal del SAT. Reglas de validación: A nivel detalle: Si el valor registrado es Exento no se deben registrar los atributos TasaOCuota ni Importe. Si el valor registrado es Tasa o Cuota, se deben registrar los atributos TasaOCuota e Importe. A nivel documento: Debe ser distinto de Exento.
TasaOCuota
TasaOCuota
Antes (Anexo 20 versión 3.2) No existía Ahora (Anexo 20 versión 3.3) , a nivel detalle Descripción: Atributo condicional para señalar el valor de la tasa o cuota del impuesto que se traslada para el presente concepto. Es requerido cuando el atributo TipoFactor tenga un valor que corresponda a Tasa o Cuota. Uso: opcional Tipo Especial: catCFDI:c_TasaOCuota Ahora (Anexo 20 versión 3.3) , a nivel documento Descripción: Atributo requerido para señalar el valor de la tasa o cuota del impuesto que se traslada por los conceptos amparados en el comprobante. Uso: requerido Tipo Especial: catCFDI:c_TasaOCuota
Descripción: En el caso de a nivel documento, es requerido, porque si se tiene a nivel detalle, se deberá incluir. Ahora existe el catálogo c_TasaOCuota Guía de llenado: Se puede registrar el valor de la tasa o cuota del impuesto que se traslada para cada concepto. Es requerido cuando el campo TipoFactor corresponda a Tasa o Cuota. Los distintos valores para las tasas o cuotas se encuentran incluidos en el catálogo c_TasaOCuota publicado en el Portal del SAT. • Si el valor registrado es fijo debe corresponder al tipo de impuesto y al tipo de factor conforme al catálogo c_TasaOCuota. • Si el valor registrado es variable, debe corresponder al rango entre el valor mínimo y el valor máximo señalado en el catálogo. Regla de validación: A nivel detalle: El valor registrado debe corresponder a un valor del catálogo c_TasaOCuota, coincidir con el tipo de impuesto registrado en el atributo Impuesto y el factor debe corresponder con el atributo TipoFactor. A nivel documento: Si el valor registrado es fijo debe corresponder a un valor del catálogo c_TasaOCuota, coincidir con el tipo de impuesto registrado en el atributo Impuesto y el factor debe corresponder con el atributo TipoFactor. En caso contrario, si el valor registrado es variable debe corresponder al rango entre 0.000000 y 0.160000.
Importe Importe Antes (Anexo 20 versión 3.2) A nivel detalle no existía A nivel documento tenía un tratamiento diferente. Ahora (Anexo 20 versión 3.3) , a nivel detalle Descripción: Atributo requerido para señalar el importe del impuesto retenido que aplica al concepto. No se permiten valores negativos Uso: requerido Tipo Especial: tdCFDI:t_Importe Ahora (Anexo 20 versión 3.3) , a nivel documento Descripción: Atributo requerido para señalar la suma del importe del impuesto trasladado, agrupado por impuesto, TipoFactor y TasaoCuota. No se permiten valores negativos. Uso: requerido Tipo Especial: tdCFDI:t_Importe
Guía de llenado: Se puede registrar el importe del impuesto trasladado que aplica a cada concepto. No se permiten valores negativos. Este campo es requerido cuando en el campo TipoFactor se haya registrado como Tasa o Cuota. El valor de este campo será calculado por el sistema que genera el comprobante y considerará los redondeos que tenga registrado este campo para mayor referencia puede consultar la documentación técnica publicada en el Portal del SAT. Regla de validación: El valor de este atributo debe tener hasta la cantidad de decimales que soporte la moneda. Calcular el límite inferior como: (Base - 10-NumDecimalesBase /2)*(TasaOCuota) y este resultado truncado con la cantidad de decimales que soporte la moneda. Calcular el límite superior como: (Base + 10-NumDecimalesCantidad/2 - 10-12) *(TasaOCuota) y este resultado redondearlo hacia arriba con la cantidad de decimales que soporte la moneda. El valor de este atributo debe ser mayor o igual que el límite inferior y menor o igual que el límite superior. Ejemplo: moneda MXN, decimales 2, importe 924.224956 Truncado del importe a 2 decimales: 924.22 Redondeado del importe hacia arriba: 924.23 moneda OMR, decimales 3, importe 281. 594680 Truncado del importe a 3 decimales: 281.594 Redondeado del importe hacia arriba: 281.595 
Ejemplo del manejo de importes máximos y mínimos
 Comentario: Es importante mencionar que estas validaciones le afectan considerablemente a los PAC ya que deben de validar que cada importe tenga su valor correcto.