Prevalidación de Comprobantes Fiscales en lote

Con el servicio de Prevalidación de Sovos ahora es posible validar la información requerida para la emisión de CFDI 4.0 con lo que podrás confirmar la información que emplearás antes de emitir y así evitar el rechazo al momento de la certificación de tus documentos fiscales. El servicio de prevalidación de CFDI verifica que se cumpla con lo definido en el Anexo 20 del SAT, así como con los Complementos que se incorporen al CFDI.

La versión mínima de Comprobantes Fiscales Digitales soportada en el servicio de Prevalidación por archivo de texto plano es CFDI 4.0.
No se hacen validaciones sobre otras versiones de CFDI o Retenciones.

La prevalidación por archivo de texto sólo funciona cuando el procesamiento configurado en la cuenta es parcial, es decir: que al encontrar un error en un documento dentro del archivo, no se dejará de procesar el archivo.

Contenido

Características generales

El servicio de Prevalidación de comprobantes fiscales de Sovos, verifica que éstos cumplan con los requisitos establecidos por el SAT en el Anexo 20, para los Comprobantes Fiscales Digitales por Internet versión 4.0. A diferencia del servicio web de prevalidación, la prevalidación en lote permite enviar varios comprobantes* en un sólo archivo de texto con la información de los comprobantes a pre-validar para obtener en un archivo de resultado la pre-validación de todos los comprobantes en el archivo.

* Hasta 20,000 comprobantes por archivo

Como parte de la respuesta del servicio, se indica lo siguiente:

  • El resultado indicando si se podría emitir un CFDI con la información proporcionada en el comprobante.
  • En caso de que el resultado indique que no se puede emitir: se mostrarán las reglas que se evaluaron para llegar al resultado. Sólo se listarán las reglas que impedirán la emisión.

Características del archivo de texto plano

El archivo de texto plano deberá cumplir con las siguientes características para su correcto procesamiento en Sovos México:

  • Debe ser un archivo de texto plano con extensión .txt.
  • La codificación del archivo debe ser UTF-8.
  • El fin de línea debe ser en formato Windows, es decir <CR><LF>.
  • El carácter que separará los datos es un pipe |.
  • El archivo de integración tiene varias líneas, en donde existen indicadores para delimitar una sección de información; estos indicadores están al inicio de cada línea, así como en diferentes posiciones dentro de la misma línea. En la guía se muestran en color rojo los que son requeridos y en color azul los opcionales.
  • Se puede omitir toda la sección definida para indicadores opcionales.
  • En caso de no existir datos para un valor en particular que es opcional dentro de una sección que se está utilizando, se deberá respetar la posición del valor, aunque no contenga ningún dato.
    Ej.: Indicador|valor1|valor2||valor4||valor6
  • En caso de no existir datos para ningún valor en lo subsecuente en la sección utilizada, se deberán respetar los separadores de valores, aunque no contengan ningún dato con el número de posiciones definida en la sección.
    Ej: Indicador|valor1|valor2||||Indicador|||
  • Los indicadores no son sensibles a mayúsculas ni minúsculas, por lo que no es necesario que se añadan exactamente como se muestra en la guía.
  • No hay restricciones en el nombre de archivo; se sugiere que sea único con fines de seguimiento en el proceso.
  • El tratamiento de espacios en blanco se maneja como en el Anexo 20 y el XSD, es decir si existen espacios antes o después, éstos serán eliminados.
  • El archivo TXT tiene la capacidad para procesar hasta 20,000 comprobantes en un solo archivo.

Funcionamiento del servicio de pre-validación

El archivo que se recibe en el servicio deberá contener el indicador Prevalidacion y su valor 1.0.

A continuación, se presenta un ejemplo para la línea de LOTE

LOTE|7.0|PREVALIDACION|1.0

Para este ejemplo, las instrucciones proporcionadas en la línea LOTE son:

Posición Nombre Descripción
[Inicio línea] LOTE Indica el inicio para el procesamiento de un archivo de integración en Sovos.
1 Version Indicador que describe el Esquema a procesar (tipo y versión del comprobante). Para pre-validar CFDI 4.0 se debe usar siempre el valor 7.0
2 PREVALIDACION Indica que la información del comprobante se deberá prevalidar y no se deberá generar un folio fiscal si la prevalidación es exitosa
3 1.0 Indica la versión de prevalidación que se llevará a cabo. No tiene que ver con la versión del comprobante. La única versión disponible para pre-validación es la 1.0

Posibles respuestas de la prevalidación

La respuesta de prevalidar documentos puede resultar en dos posibles resultados: Se puede usar para prevalidar, o No se puede usar. Independientemente del tipo de resultado de procesar el archivo para prevalidación, siempre se entregará una primera línea con el siguiente formato:

  Resultados|Nombre_Archivo_Procesado.txt|Timestamp_Procesamiento|ResultadoProcesamiento|Detalle_error

Donde:

Posición Nombre Descripción
[Inicio línea] Resultados Indica el encabezado del archivo de reporte de procesamiento
1 Nombre_Archivo_Procesado.txt Es el nombre del archivo que se recibió para procesar la prevalidación
2 Timestamp_Procesamiento Hora y fecha en la que se procesó el archivo. Está en formato yyyy-mm-ddThh:mm:ss
3 ResultadoProcesamiento Valor booleano para indicar si el archivo se pudo procesar o no. Sólo puede tener el valor true o false. En caso de false, se mostraría el detalle del por qué no se pudo procesar el archivo en el campo Mensajes_adicionales
4 Mensajes_adicionales Mensajes adicionales relacionados al procesamiento del archivo recibido.

Dependiendo del valor que se encuentre en el campo ResultadoProcesamiento la línea de encabezado del reporte de procesamiento puede generar uno de los siguientes ejemplos:

Cuando el archivo de texto plano se pudo procesar:

  Resultados|RC5CFDI40_1_20221005105928.txt|2023-01-12T12:30:45|true|

Cuando el resultado de procesar el archivo de texto plano tuvo errores de estructura:

  Resultados|RC5CFDI40_1_20221005105923.txt|2023-01-11T16:52:10|false|Estructura inválida

Ejemplos

Cuando el archivo se puede procesar

Cuando el archivo se puede procesar y la información se puede usar para emitir, las líneas 2 en adelante contendrán información de la prevalidación de cada uno de los documentos enviados a prevalidar en el archivo de texto en el mismo orden en que se encontraron en el archivo. Los registros tendrán el siguiente formato:

  Comprobante|RFC Emisor|RFC Receptor|Serie|Folio|RESULTADO|Descripción|Detalle|ParejaError

Donde:

Posición Nombre Descripción
[Inicio línea] Comprobante Indicador de inicio de información de un Comprobante
1 RFC Emisor Clave en el RFC del Emisor reportado en el Comprobante
2 RFC Receptor Clave en el RFC del Receptor reportado en el Comprobante
3 Serie Serie del Documento Fiscal reportada en el Comprobante. Si no se especifica Serie en el Comprobante: vacío y se conserva la posición dentro de la trama
4 Folio Folio del Documento Fiscal reportado en el Comprobante. Si no se especifica Folio en el Comprobante: vacío y se conserva la posición dentro de la trama
5 RESULTADO Resultado de prevalidar la información contenida en el Comprobante. Únicos valores permitidos: VALIDO o INCORRECTO.
6 Descripción Descripción del resultado de la prevalidación.
  • Cuando el RESULTADO = VALIDO se tendrá el texto fijo "Se puede usar para EMITIR".
  • Cuando el RESULTADO = INCORRECTO se tendrá el texto fijo "No se puede usar para EMITIR"
7 Detalle Indica el inicio de la sección de parejas de clave y descripción del error. Sólo se proporciona cuando RESULTADO = INCORRECTO
8 ParejaError Pareja de Clave y Descripción del error separados por un guión medio que describen los errores encontrados para poder emitir el comprobante. Si hay más de un motivo de error se reportarán conn un salto de línea y un pipe


Por ejemplo, si en un archivo sólo hay un documento y la información de este se puede usar para emitir:

  Resultados|RC5CFDI40_1_20221005105928.txt|2023-01-12T12:30:45|true|
  Comprobante|AAA010101AAA|CACX7605101P8|||VALIDO|Se puede usar para EMITIR
Para este ejemplo, el reporte indica que se puede usar el RFC Emisor AAA010101AAA, el RFC Receptor CACX7605101P8. El documento no contenía Serie o Folio por lo que no se reportan esos valores pero se respetan sus posiciones dentro de la estructura de la respuesta.


Para el siguiente ejemplo, se puede procesar el archivo el cual sólo contiene un documento, pero la información reportada no puede ser usada para emisión:

  Resultados|PrevalidacionPagos.txt|2023-01-13T12:40:03|true|
  Comprobante|AAA010101AAA|XAXX010101000|A|1|INCORRECTO|No se puede usar para EMITIR|Detalle|CFDI40101.2-El campo Fecha no cumple con el patrón requerido.
  |CFDI40130-Cuando el tipo de comprobante sea Ingreso y el campo Rfc del nodo receptor corresponda al valor "XAXX010101000" y el campo Nombre del nodo Receptor contenga la descripción "PUBLICO EN GENERAL", el nodo Información Global debe existir.
  |CRP20204-El valor del campo TotalTrasladosBaseIVA16 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.160000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.
  |CRP20217-La suma de los valores registrados en el campo ImpPagado de los apartados DoctoRelacionado no es menor o igual que el valor del campo Monto.
Para este ejemplo, el reporte indica que para el Comprobante con RFC Emisor AAA010101AAA, RFC Receptor XAXX010101000, con Serie A, y Folio 1: No se puede usar la información contenida ya existen errores en la estructura base del CFDI (las claves de error CFDI40101.2 y CFDI20130) y existen errores en el complemento de Pagos (las claves CRP20204 y CRP20217).


Si en el mismo archivo se enviara la información de los comprobantes que se analizaron por separado, se tendría el siguiente reporte de procesamiento:

  Resultados|CONCAT_RC5CFDI40_1_20221005105928-PrevalidacionPagos.txt|2023-01-26T12:30:45|true|
  Comprobante|AAA010101AAA|CACX7605101P8|||VALIDO|Se puede usar para EMITIR
  Comprobante|AAA010101AAA|XAXX010101000|A|1|INCORRECTO|No se puede usar para EMITIR|Detalle|CFDI40101.2-El campo Fecha no cumple con el patrón requerido.
  |CFDI40130-Cuando el tipo de comprobante sea Ingreso y el campo Rfc del nodo receptor corresponda al valor "XAXX010101000" y el campo Nombre del nodo Receptor contenga la descripción "PUBLICO EN GENERAL", el nodo Información Global debe existir.
  |CRP20204-El valor del campo TotalTrasladosBaseIVA16 no es igual al redondeo de la suma del resultado de multiplicar cada uno de los importes de los atributos BaseP de los impuestos trasladados registrados en el elemento TrasladoP donde los atributos contengan en ImpuestoP el valor IVA, en TipoFactorP el valor Tasa y en TasaOCuotaP el valor 0.160000, por el valor registrado en el atributo TipoCambioP de cada nodo Pago.
  |CRP20217-La suma de los valores registrados en el campo ImpPagado de los apartados DoctoRelacionado no es menor o igual que el valor del campo Monto.
Para este ejemplo, la segunda línea indica el resultado de prevalidar el primer comprobante y la tercera indica el resultado de prevalidar el segundo comprobante. Para cada Comprobante se proporcionan los datos de identificación y su resultado.


Cuando el archivo no se puede procesar

Cuando no se puede procesar un archivo para prevalidación debido a un error de estructura: no se puede identificar dónde inicia y dónde termina un Comprobante, por lo que se proporciona la ubicación apróximada de donde puede estar el problema. Para este caso se tiene una trama con el identificador ErrorFormato con el siguiente formato:

  ErrorFormato|Línea|Caracter|Mensaje
Posición Nombre Descripción
[Inicio línea] ErrorFormato Indicador de inicio de detalle de error de formato
1 Línea Linea (apróximada) en donde el parser de archivo de texto plano dejó de traducir contenido por error de formato.
2 Caracter Posición (apróximada) dentro de la línea en donde el parser de archivo de texto plano dejó de traducir contenido por error de formato.
3 Mensaje Mensaje del parser donde describe el error de sintáxis

Por ejemplo:

  Resultados|RC5CFDI40_2_20221005105928.txt|2023-01-11T16:52:10|false|Estructura inválida
  ErrorFormato|1|10|Error de sintáxis, se esperaba un salto de línea, pero se ha encontrado el indicador 'REPORTEPROCESAMIENTO'
Para este ejemplo, en la primera línea del archivo, en el caracter 10, se esperaba un salto de línea pero se encontró un indicador que no debía estar ahí


Para mayor información o aclaración de dudas relacionadas con esta guía, por favor envía un correo a MEX-soporte@sovos.com


Regresar