Prevalidación de Comprobantes Fiscales

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.

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 3.3
  • Los Comprobantes Fiscales Digitales por Internet versión 4.0

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.
  • La versión mínima de Comprobantes Fiscales Digitales soportada en el servicio de Prevalidación es CFDI 3.3. No se hacen validaciones sobre otras versiones de CFDI o Retenciones.
  • El servicio web de Prevalidación no puede procesar peticiones de tamaño mayor a 10 MB. Esto incluye los encabezados y elementos del SOAP Request.
  • El servicio de Prevalidación no busca información contenida en la Constancia de Situación Fiscal.
El servicio de Prevalidación aplica los mismos criterios que se usan para la emisión de Comprobantes Fiscales Digitales, por ejemplo: validaciones sobre el Régimen Fiscal del Receptor se basarán en las reglas de certficación CFDI40157, CFDI40158 y CFDI40159.
  • La validación sobre la regla CFDI40157 verificará que el valor registrado en el atributo RegimenFiscalReceptor contenga un valor del catálogo c_RegimenFiscal.
  • La validación sobre la regla CFDI40158 verificará que el régimen fiscal que se registre corresponda con el tipo de persona del receptor (tomando en cuenta la longitud de la clave en el RFC para determinar si se trata de una persona física o una persona moral).
  • La validación sobre la regla CFDI40159 verificará que si el atributo Rfc del Receptor contiene el valor "XAXX010101000" o el valor "XEXX010101000", en el atributo RegimenFiscalReceptor se registre la clave "616".


¿Qué necesito?

Para poder hacer uso del servicio se necesita lo siguiente:

  • Contar con un contrato de servicios con Sovos. En caso de no tener uno, por favor envía un correo a sales-mexico@sovos.com
  • Haber generado un API Key en tu cuenta Sovos Reachcore, el cual te autentica en los Webservices de la plataforma. Para consultar como generar un API Key, consulta este artículo: Generar API Key para Webservices.
  • Poder invocar un Web Service, publicado en internet con conexión segura (SSL).

Ubicación del servicio

Las URLs donde se encuentra la definición del Web Service (WSDL) para cada uno de los ambientes son:

Ambiente Ubicación de WSDL
Piloto https://oat.reachcore.com/api/ws/Validacion/PreValidationService.svc/basic?wsdl
Producción https://go.reachcore.com/api/ws/Validacion/PreValidationService.svc/basic?wsdl

Método [PreValidate]: Prevalidación del comprobante fiscal

En este método, se podrá realizar la solicitud de prevalidación de un CFDI 4.0 únicamente.

Solicitud PreValidate

Elemento Uso Descripción
ApiKey Requerido Identificador de autenticación, que se genera en el portal de Sovos Reachcore.
Document Requerido Contiene el comprobante a prevalidar en formato XML. El XML del comprobante se debe enviar escapado o dentro de los indicadores de ensobretado <![CDATA[...]]>.
TransactionProperty Opcional Son parámetros que indican a Sovos Reachcore algún tratamiento especial en la validación del comprobante que se esta validando.
CustomData Opcional Puede incluirse una estructura XML con datos que se necesitan mostrar en la representación impresa del comprobante que se ha validado.


Ejemplo de solicitud para la prevalidación de un CFDI 4.0:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.reachcore.com/CFDI/customHeaders" xmlns:urn="urn:schemas.reachcore.com:document-validation:5.0">
   <soapenv:Header>
      <cus:ApiKey>vtct...cuuc</cus:ApiKey>
   </soapenv:Header>
   <soapenv:Body>
      <urn:PreValidationRequest>
         <urn:Document><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante Version="4.0" Serie="PREVALIDACIONES" Folio="20220531090000" FormaPago="99" Fecha="2022-05-31T09:00:00" SubTotal="0.01" Descuento="0.01" Moneda="MXN" Total="0.00" TipoDeComprobante="I" Exportacion="01" MetodoPago="PUE" LugarExpedicion="10740" Sello="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd">
  <cfdi:Emisor Rfc="CACX7605101P8" Nombre="XOCHILT CASAS CHAVEZ" RegimenFiscal="601" />
  <cfdi:Receptor Rfc="XAXX010101000" Nombre="MI CLIENTE" DomicilioFiscalReceptor="10740" RegimenFiscalReceptor="616" UsoCFDI="S01" />
  <cfdi:Conceptos>
    <cfdi:Concepto ClaveProdServ="01010101" Cantidad="1" ClaveUnidad="XUN" Descripcion="Prevalidación de información" ValorUnitario="0.01" Importe="0.01" Descuento="0.01" ObjetoImp="01" >
	</cfdi:Concepto>
  </cfdi:Conceptos>
</cfdi:Comprobante>]]></urn:Document>
      </urn:PreValidationRequest>
   </soapenv:Body>
</soapenv:Envelope>

Respuesta PreValidate

Elemento Descripción
TrackingId Número único de transacción asignado por Sovos Reachcore. Puede ser utilizado en el futuro para referirse a una transacción en particular, con motivos de soporte técnico.
TransactionDate Fecha y hora en que se realizó la transacción; esta en la zona horaria UTC
IsValid Indicador que responde a la pregunta ¿la información del comprobante que se prevalidó puede ser usada para emisión?. Sólo puede tener dos valores:
  • true - La información que se proporcionó en el comprobante puede ser usada para emisión del CFDI.
  • false - La información que se proporcionó en el comprobante no puede ser usada para emisión de un CFDI.
Errors En caso de que el elemento IsValid venga con el valor false, se mostrará un arreglo de nodos ErrorMessageCode con los errores detectados. Cada ErrorMessageCode tiene la siguiente estructura XML:
  • Code - Clave de error (cuando es posible: se usa la clave según matriz de errores del SAT).
  • Message - Mensaje de error (cuando es posible: se usa el mismo mensaje que viene definido en la matriz de errores del SAT).
  • Target (opcional) - La ubicación en el XML donde se encontró el error.
  • Details (opcional) - Detalles adicionales asociados al error encontrado.
TransactionProperty Si se empleó un TransactionProperty en la petición de prevalidación, se regresa también un TransactionProperty en la respuesta.


En la respuesta, dentro del elemento TransactionProperties se desplegará una serie de elementos TransactionProperty que contienen una pareja de atributos:
  • Key para establecer el nombre del TransactionProperty.
  • Value para establecer el valor correspondiente.

Ejemplo de respuesta exitosa

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <PreValidationResponse xmlns="urn:schemas.reachcore.com:document-validation:5.0">
         <TrackingId>f3ee7e9f-3bd0-4dd0-a997-dd7e2a97b0c0</TrackingId>
         <TransactionDate>2022-05-31T18:48:50.0945745-05:00</TransactionDate>
         <IsValid>true</IsValid>
      </PreValidationResponse>
   </s:Body>
</s:Envelope>

Ejemplo de respuesta donde se identificaron errores

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <PreValidationResponse xmlns="urn:schemas.reachcore.com:document-validation:5.0">
         <TrackingId>f2e23d1a-5292-440e-a63a-2276a1d46773</TrackingId>
         <TransactionDate>2022-05-31T18:51:04.1024698-05:00</TransactionDate>
         <IsValid>false</IsValid>
         <Errors>
            <ErrorMessageCode>
               <Code>CFDI40130</Code>
               <Message>El campo Rfc del nodo receptor debe contener valor "XAXX010101000" y el valor del campo Nombre del nodo Receptor debe contener el valor "PUBLICO EN GENERAL".</Message>
               <Target>cfdi:Comprobante/cfdi:InformacionGlobal</Target>
               <Details>Cuando el valor del atributo (cfdi:Comprobante/cfdi:Receptor[@RFC]) es igual a "XAXX010101000" y el valor del atributo (cfdi:Comprobante/cfdi:Receptor[@Nombre]) es "PUBLICO EN GENERAL", el nodo (cfdi:Comprobante/cfdi:InformacionGlobal) debe existir, en caso contrario, se debe omitir.</Details>
            </ErrorMessageCode>
            <ErrorMessageCode>
               <Code>CFDI40146</Code>
               <Message>El campo RFC del receptor debe contener el valor "XAXX010101000".</Message>
               <Target>/cfdi:Comprobante/cfdi:Receptor/@Nombre</Target>
               <Details>Cuando el valor registrado en este atributo Nombre (cfdi:Comprobante/cfdi:Receptor[@Nombre]) es "PUBLICO EN GENERAL", el valor del atributo RFC del receptor debe ser "XAXX010101000".</Details>
            </ErrorMessageCode>
            <ErrorMessageCode>
               <Code>CFDI40158</Code>
               <Message>La clave del campo RegimenFiscalR debe corresponder con el tipo de persona (física o moral).</Message>
               <Target>/cfdi:Comprobante/cfdi:Receptor/@RegimenFiscalReceptor</Target>
               <Details>El valor del atributo (cfdi:Comprobante/cfdi:Receptor[@RegimenFiscalReceptor]) [616] debe corresponder con el tipo de persona (fisica o moral) del receptor.</Details>
            </ErrorMessageCode>
         </Errors>
      </PreValidationResponse>
   </s:Body>
</s:Envelope>

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