Buscar en este blog

jueves, 19 de abril de 2018

(VirtualXML y VXMLTools) Los M@LD1T0$ validadores de CFDI 3.3

La validación de documentos XML de CFDI por medio de programas validadores externos siempre ha sido un tema que en lo personal me choca bastante.

Un CFDI lleva medidas de seguridad muy avanzadas (en algún otro artículo explicaré la complejidad de los sellos digitales), por lo que es complicado falsificar, modificar o cambiar algo dentro un XML sin que se afecte su integridad, sin embargo, bajo la desconfianza vive la seguridad y por eso muchas empresas, con la mejor intención por parte de sus departamentos de contabilidad contratan o desarrollan servicios de "validación" de CFDI.

¿ Usar estos validadores garantiza algo ?

Pues no lo tengo yo muy claro, bueno si, garantiza un ingreso económico a la empresa que desarrolló el validador, porque desde mi punto de vista, un validador de CFDI 3.3 es tan útil como una heladería en el polo norte.

Tanto el SAT desde su página de generación de factura, como los PACs que certifican los documentos han pasado un montón de auditorías, revisiones, validaciones, etc, a fin de que los documentos por ellos emitidos cuenten con los mas estrictos mecanismos de seguridad que garanticen que un XML de CFDI es infalsificable.

Comentando esto con un cliente, me cuenta su inquietud....

¿ Y que pasa si el emisor genera un CFDI, firma, sella y timbra el XML correctamente ante el PAC y una vez que el XML tiene el timbre fiscal digital, el emisor lo altera, cambia importes, totales, etc. e incluso me genera un PDF sobre los datos falseados y no sobre los datos originales o que pasa si el emisor canceló el CFDI y me lo entrega cancelado ?

Existen 3 formas de validar un CFDI sin recurrir necesariamente a un validador y que garantizan que no te den gato por liebre con tu Comprobante Fiscal, veamos cuales son:

1) El CBB (QRCode o Código de Barras Bidimensional) que viene impreso en el PDF.

Todo el mundo lo ve, el SAT lo exige impreso, pero la mayoría de las personas no saben para que sirve.

El CBB impreso en el PDF te permite validar que tu documento se encuentre registrado en los controles del SAT.

Es muy fácil utilizarlo, simplemente descarga una APP en tu teléfono que lea códigos de barras, hay muchas gratuitas, mi favorita es I-NIGMA, que la encuentras para Android y para IOs y no tiene costo.

Estos "scanners" de código de barras utilizan la cámara de tu teléfono celular para leer e interpretar el contenido del CBB, en el caso del CBB de un CFDI, la información contenida es una liga a la página de internet del SAT donde puedes validar si un documento está registrado en los controles del SAT.

La información del contenido del CBB está documentada en el Anexo 20 del CFF y esta compuesto de:


Como verás, dentro de los datos necesarios debes de incluir el total del comprobante, por lo tanto, el CBB te permite validar que tu documento haya sido emitido con el total correcto y con los RFCs correctos tanto de emisor como de receptor.

Algunos lectores de código de barras bidimensiones, como el I-NIGMA te permiten además abrir la URL desde el navegador del teléfono para que puedas validar en línea que tu documento se encuentra en los registros del SAT, solo tienes que proporcionar el CAPTCHA de la página para validar el documento:


Si el documento se encuentra debidamente registrado en los controles del SAT, te aparecerá la pantalla correspondiente, ahí podrás validar que el total del documento sea correcto, así como que el documento se encuentre vigente y no cancelado:

 
El uso del CBB no garantiza realmente que el documento recibido sea válido por muchas razones, la primera consiste en que el CBB se puede generar externamente, incluso desde muchas páginas de internet, por otro lado, el código de barras viene en el documento impreso, no en el XML, con lo cual no se tiene una constancia real de que el XML que se recibió sea correcto, lo único que sabemos, si la validación fue correcta, es que el documento está en los registros del SAT y en que estado se encuentra, lo cual no nos sirve de mucho  

2) Descargar del SAT el documento original:

Una segunda manera de validar que nuestro emisor nos haya entregado un XML válido y correcto es descargar desde la página del SAT TODOS los XMLs que el SAT tenga registrados y compararlos con los que nuestro emisor nos entregó.

Aunque la forma correcta de hacerlo es manualmente y uno por uno desde el portal del SAT, muchos nos las hemos ingeniado para hacer las descargas masivas desde el portal del SAT.

En nuestro caso desarrollamos VXMLTools que les permite descargar a nuestros emisores VirtualPAC todos sus XMLs, tanto emitidos como recibidos, desde el portal del SAT de una manera automatizada y ordenarlos dentro de su disco duro.



VXMLTools te permite descargar tanto XMLs emitidos por tí como recibidos, ordenarlos por año y mes en tu disco duro y generar los PDFs a partir de los XMLs, así como generar informes en Excel para poder analizar tus XMLs descargados.

VXMLTools merece mención a aparte por lo que dedicaré un artículo por separado para explicar todas sus características. El producto se encuentra en fase de pruebas beta, por lo que te invito a probarlo, puedes DESCARGAR VXMTOOLS DESDE AQUI, su uso es gratuito para nuestros emisores VirtualPAC, solo requieres la clave CIEC que el emisor utiliza para entrar al portal del SAT y que el emisor tenga por lo menos un saldo de 50 timbres disponibles. El uso de VXMLTools NO CONSUME TIMBRES, pero para garantizar que el producto lo usen nuestros clientes gratuitamente pedimos que tengan un pequeño saldo disponible. Si quieres usar la herramienta con cualquier emisor que no timbre con VirtualPAC, simplemente dalo de alta en tu lista de emisores, asignale 50 timbres y está listo para descargar sus CFDIs con VXMLTools.

La versión que descargas en estemomento es una beta final, pero el 1 de Mayo salimos con la versión final de VXMLTools así como una versión para programador, la cual te permitirá integrar VXMLTools en tus programas para descargar tus XMLs desde la página del SAT, desde una linea de comandos como un EXE externo.

Descargando los XMLs desde el portal del SAT tendrás la seguridad de que tus XMLs son los correctos.

3) Usar las funciones de VirtualXML para validar tu documento.

Finalmente y si las 2 opciones anteriores no te son suficientes para validar tu documento, te ofrecemos el validador "de la casa".

Dentro de la última versión de VirtualXML (Marzo 2018), incluímos 2 funciones muy prácticas que te permiten "validar" si tus CFDI son válidos.

La primer función es:

 VirtualXML_ConsultaEstadoCFDI(RFCEmisor, RFCReceptor, Total, UUID, OutLog)

Esta función realiza EXACTAMENTE la misma validación que si leyeras el código de barras bidimensional de un PDF, se conecta al servcio de validación del SAT, y revisa si el XML que indicaste en el parametro UUID exista en los registros del SAT.

El resultado de la función se almacena en un archivo de texto que indique en el parámetro OutLog.

La documentación completa de la función la encuentras HACIENDO CLICK AQUI.

La segunda función es la joya de la corona:

VirtualXML_ValidaCFDITimbrado(Xml, OutLog, csdPAC, CheckSAT)

Esta función realiza la misma validación que el SAT solicita a los PACs que realicen antes de emitir el timbre fiscal digital y es la misma validación que realizaba el validador de forma y sintaxis que el SAT tenía para la versión 3.2, solo que esta función opera para CFDI 3.3, tanto para comprobantes de Ingreso, Egreso, Nomina y Pago y con cualquier complemento.

La función basa su operación en la validación de los sellos digitales, dichos sellos digitales se generan a partir de la famosísima "cadena original", esta función genera la cadena original a partir del XML, genera el digesto usando el algoritmo SHA-256  y luego "desencripta" el sello digital del documento usando el certificado incluido en el XML, el resultado de la desencriptación debe ser un digesto igual al que la función generó.

Adicionalmente, también puede validar que el sello digital del timbre fiscal sea válido, esto lo hace usando el archivo .CER que el SAT le proporcionó al PAC como CSD para sellar los timbres fiscales, si no cuentas con él, puedes descargarlo desde la página del SAT, indica el nombre del archivo .CER en el parámetr csdPAC.

Y finalmente, esta función además incluye una llamada interna a la función VirtualXML_ConsultaEstadoCFDI(), lo cual te permite además de validar los sellos del XML, validar si el XML se encuentra dado de alta en los registros del SAT, basta con poner un valor "1" en el parámetro CheckSAT.

Esta función devuelve los resultados de la validación en un archivo de texto cuyo nombre lo indicas en el parámetro OutLog.

La documentación completa de la función la encuentras HACIENDO CLICK AQUI.

Estas funciones las pueden utilizar los emisores de VirtualPAC sin costo, y lo hacen validando el RFC RECEPTOR, que debe estar dado de alta como usuario de VirtualPAC y contar con lo menos con 50 timbres disponibles.

Conclusión:

Para efectos prácticos, un validador de CFDI solo debería de validar que los sellos del comprobante sean válidos, ya que el resto de los valores validables ya han sido revisados por el PAC.

El SAT no autoriza, reconoce o certifica ningún servicio de validación de XMLs, la única validación de facturas electrónicas con fundamente legal y reconocimento fiscal es la que realizan los PACs (Artículo 29, fracciones IV y VI del CFF).

Así que no debe existir pretexto de los receptores para no recibir un CFDI porque "no pasó en mi validador", el CFDI esta timbrado y se encuentra en los registros del SAT es totalmente válido.