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.
- 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:
|
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:
|
TransactionProperty | Si se empleó un TransactionProperty en la petición de prevalidación, se regresa también un TransactionProperty en la respuesta. |
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