Integration file result process request (6.0)

Sovos offers to know your process results through a web service.

Content

General Features

You can tell the results of the integration files you issued to Sovos to be processed through a Web Service taking the name of the file as a parameter. If you sent several files with the same name, you would get a response for all the related registers, you can identify them by the time they were received to be processed in Sovos.

What do I need?

Para poder hacer uso del servicio se necesita lo siguiente:

  • To generate an API key on your Sovos account, this is an identifier that authenticates the user on the platform web services. To generate an API key, check this article: Generating an API Key for web services.
  • To use a Web Service published on the internet through a safe connection (SSL).
  • To issue a CFDI per integration file.
  • To know the name of the integration file.

Service location

The URLs for each of the environments are:

Environment URL
UAT https://oat.reachcore.com/api/ws/6.0/pacservices/Emision.svc/basic?wsdl
Production https://go.reachcore.com/api/ws/6.0/pacservices/Emision.svc/basic?wsdl


Method [ReporteProcesamientoDeArchivo]: Report of the integration file process results

If you issue CFDIs through an integration file and want to know the result of the process, you will use this method. You must take as a consultation value the name of the file you sent.

ReporteProcesamientoDeArchivo Request

Here is the necessary data to obtain the result of an integration file process in Sovos:

Element Use Description
ApiKey Required Authentication secret key generated in Sovos.
NombreArchivo Required Name of the integration file (including the extension).


Example of a request to consult the integration file result with the name Mi archivo facturacion.txt

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.reachcore.com/CFDI/customHeaders" xmlns:urn="urn:reachcore.com:services:api:ws:pacservices:6.0">
    <soapenv:Header>
        <cus:ApiKey>51e9d1.......03391008</cus:ApiKey>
    </soapenv:Header>
    <soapenv:Body>
        <urn:ReporteProcesamientoDeArchivoRequest>
            <urn:NombreArchivo>Mi archivo facturacion.txt</urn:NombreArchivo>
        </urn:ReporteProcesamientoDeArchivoRequest>
    </soapenv:Body>
</soapenv:Envelope>

ReporteProcesamientoDeArchivo Response

There are 2 ways of processing the integration file: full validation or individual validation; it depends on the configuration of your account to validate the integration file.

Transaction was successful

Response - Full validation of the integration file.


Sovos can perform the full validation of the integration file. Sovos will process the integration file when all data is correct.

As a response, you will obtain the following elements:

Element Attribute Description
ReporteProcesamiento nombreArchivo Name of the consulted integration file.
Resultado --- This element can be repeated as many times as integration files were processed.
Resultado fechaDeRecepcion File process date.
Resultado formatoValido Indicates if the structure of the integration file is correct (true/false)


If the value of formatoValido is false, you will see the following for the element ErroresFormato:

Element Attribute Description
ErroresFormato mensajeError Describes the error
ErrorFormato --- This element can be repeated as many times as there are errors in the format.
ErrorFormato linea Indicates the file line where the error was found.
ErrorFormato columna Indicates the column line where the error was found.
ErrorFormato descripcion Shows the error description.


Example of a response for the integration file with the name Mi archivo facturacion.txt which was processed on November 14 of 2017 at 18:31:11 hrs., the formatoValido is false

<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">
        <ReporteProcesamientoDeArchivoResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
            <ReporteProcesamiento nombreArchivo="Mi archivo facturacion.txt">
                <Resultado fechaDeRecepcion="2017-11-14T18:31:11" formatoValido="false">
                    <ErroresFormato mensajeError="Estructura inválida">
                        <ErrorFormato linea="4" columna="8" descripción="El valor 'AAA010101AA' no cumple con la especificación del campo 'Rfc'. Por favor consulte la guía de integración. [regex '^[Ñ&amp;A-Z]{3,4}\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])[A-Z0-9]{3}$']"/>
                        <ErrorFormato linea="11" columna="47" descripción="Error de Validación, el campo: 'UsoCFDI' es requerido"/>
                    </ErroresFormato>
                </Resultado>
            </ReporteProcesamiento>
        </ReporteProcesamientoDeArchivoResponse>
    </s:Body>
</s:Envelope>

If formatoValido is true, you will see the following in the response for the ones processed correctly:

Element Attribute Description
Comprobantes --- This allows you to group the receipts processed through the integration file.
Comprobante --- This shows the detail of a receipt inside the integration file.
Campo llave This describes the field.
Campo valor This holds the value of the key.
Errores --- In case there are no errors in the validations related to Anexo 20 and the complements.
Code --- This will always have the value 203.
Message --- This contains the message: "Estructura del comprobante inválida contra anexo20"
InnerErrors --- This will show the validation rules that didn’t process the file.
Code --- Indicates the code specified by the SAT.
Message --- Shows the description of the error.
Target --- After converted to XML, indicates the element/attribute of the XML with an error.
Details --- Gives detail of the error related to the validated rule.

Next, a response example for an integration file with the name Mi archivo.txt processes on November 14th of 2017 at 18:44:55 hrs. where the value of formatoValido is true, but one of the receipts has errors about the SAT validation rules.

<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">
        <ReporteProcesamientoDeArchivoResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
            <ReporteProcesamiento nombreArchivo="Mi archivo.txt">
                <Resultado fechaDeRecepcion="2017-11-14T18:44:55" formatoValido="true">
                    <Comprobantes>
                        <Comprobante>
                            <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                            <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                            <Campo llave="serie" valor="FADQ"/>
                            <Campo llave="folio" valor="0000086334-001"/>
                            <Campo llave="status" valor="ERROR"/>
                            <Campo llave="Version" valor="3.3"/>
                            <Errores>
                                <Code>203</Code>
                                <Message>Estructura del comprobante inválida contra anexo20.</Message>
                                <InnerErrors>
                                    <Error>
                                        <Code>CFDI33181</Code>
                                        <Message>El valor del campo TotalImpuestosRetenidos debe ser igual a la suma de los importes registrados en el elemento hijo Retencion.</Message>
                                        <Target>/cfdi:Comprobante/cfdi:Impuestos/@TotalImpuestosRetenidos</Target>
                                        <Details>El valor del atributo (cfdi:Comprobante:Impuestos:TotalImpuestosRetenidos) es [54000.00]. La sumatoria de los atributos (cfdi:Comprobante:Impuestos:Retenciones:Retencion: Importe) es [4000.00].</Details>
                                        <InnerErrors/>
                                    </Error>
                                    <Error>
                                        <Code>CFDI33189</Code>
                                        <Message>El campo Importe correspondiente a Retención no es igual a la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al campo impuesto de este elemento.</Message>
                                        <Target>/cfdi:Comprobante/cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion[@impuesto='001']</Target>
                                        <Details>El valor del atributo (cfdi:Comprobante:Impuestos:Retenciones:Retencion:Impuesto)[001] Importe es [4000.00]. La sumatoria de los atributos (cfdi:Comprobante:Conceptos:Concepto:Impuestos:Retenciones:Retencion:Importe) es [54000.00] donde es igual el atributo (cfdi:Comprobante:Conceptos:Concepto:Impuestos:Retenciones:Retencion:Impuesto) es [001]. Valor esperado[54000.00].</Details>
                                        <InnerErrors/>
                                    </Error>
                                </InnerErrors>
                            </Errores>
                        </Comprobante>
                        <Comprobante>
                            <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                            <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                            <Campo llave="serie" valor="FADQ"/>
                            <Campo llave="folio" valor="0000086334-001"/>
                            <Campo llave="UUID" valor="FFFE3335-E638-4C6C-B7C9-E28E4DEB6E94"/>
                            <Campo llave="status" valor="EMITIDO"/>
                            <Campo llave="Version" valor="3.3"/>
                        </Comprobante>
                        <Comprobante>
                            <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                            <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                            <Campo llave="serie" valor="FADQ"/>
                            <Campo llave="folio" valor="0000086334-001"/>
                            <Campo llave="UUID" valor="971AED66-F739-48B6-8E0D-EB36A4E857D9"/>
                            <Campo llave="status" valor="EMITIDO"/>
                            <Campo llave="Version" valor="3.3"/>
                        </Comprobante>
                        <Comprobante>
                            <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                            <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                            <Campo llave="serie" valor="FADQ"/>
                            <Campo llave="folio" valor="0000086334-001"/>
                            <Campo llave="UUID" valor="D8AABA53-7ABE-4508-8174-DEE55414203E"/>
                            <Campo llave="status" valor="EMITIDO"/>
                            <Campo llave="Version" valor="3.3"/>
                        </Comprobante>
                    </Comprobantes>
                </Resultado>
            </ReporteProcesamiento>
        </ReporteProcesamientoDeArchivoResponse>
    </s:Body>
</s:Envelope>

The attributes key-value can have one of the following values:

Key Value description
rfcEmisor It has the RFC of the issuer of the receipt.
rfcReceptor It has the RFC of the receiver of the receipt.
serie It has the value of the receipt's series, if available.
folio It has the value of the receipt's folio, if available.
UUID It has the fiscal folio of the receipt.
status Shows if the receipt is in the status of Emitido (issued) or Cancelado (canceled).
Version Shows the version of the issued receipt.
detalleError For receipts version 3.2.


Response - individual validation of the integration file


If the integration file has more than one receipt to issue, you can set it up to perform a validation per receipt.

Element Attribute Description
Documentos --- This allows you to group the receipts processed through the integration file.
Documento --- This shows the detail of a receipt inside the integration file.
Documento formatoValido Indicates if the document has the correct structure and data. The possible values are true and false.
Documento resultado Indicates the result of the procedure.
Documento secuencial This is the sequential number of the receipt to issue through the integration file.
Campo --- This will show several elements.
Campo llave Description of the field.
Campo valor Holds the value of the key.


If the value of formatoValido is false, you will see the following for ErroresFormato:

Element Attribute Description
ErroresFormato mensajeError This describes the error.
ErrorFormato --- This element will be present according to the number of errors found in the file format.
ErrorFormato linea Indicates the file line where the error was found.
ErrorFormato columna Indicates the column of the line where the error was found.
ErrorFormato descripción This shows the description of the error.


If the value of formatoValido is false, you will see the following in the response:

Element Attribute Description
Comprobante --- This shows the detail of a receipt inside an integration file.
Campo llave This describes the field.
Campo valor This holds the key value.


The attributes key-value can have some of the following values:

Key Value Value Description
rfcEmisor This has the RFC of the issuer of the receipt.
rfcReceptor This has the RFC of the receiver of the receipt.
serie This has the value of the receipt series, if available.
folio This has the value of the receipt folio, if available.
UUID This has the fiscal folio of the receipt.
status Indicates if the receipt status is Emitido (issued) or Cancelado (canceled).
Version Indicates the version of the issued receipt.
detalleError Describes the reason why the receipt was not processed.


Example of response for an integration file with the name Mi archivo.txt which was sent twice in the following dates:

  • November 14 of 2017 at 18:43:23 hrs. – error in the file structure and request not processed.
  • November 14 of 2017 at 18:44:55 hrs. – no error in structure, but the result of the process was that the receipt had 1 mistake on the validations of Anexo 20 and the receipts from 2 to 4 were issued.
<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">
      <ReporteProcesamientoDeArchivoResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
         <ReporteProcesamiento nombreArchivo="Mi archivo.txt">
            <Resultado fechaDeRecepcion="2017-11-14T18:43:23" formatoValido="false">
               <ErroresFormato mensajeError="Estructura inválida">
                  <ErrorFormato linea="4" columna="8" descripción="El valor 'AAA010101AA' no cumple con la especificación del campo 'Rfc'. Por favor consulte la guía de integración. [regex '^[Ñ&amp;A-Z]{3,4}\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])[A-Z0-9]{3}$']"/>
                  <ErrorFormato linea="11" columna="47" descripción="Error de Validación, el campo: 'UsoCFDI' es requerido"/>
                  <ErrorFormato linea="18" columna="26" descripción="El valor 'C62' no cumple con la especificación del campo 'Cantidad'. Por favor consulte la guía de integración. [regex '^\d+(\.\d{0,6})?$']"/>
                  <ErrorFormato linea="18" columna="36" descripción="El valor 'Descripción del concepto' no cumple con la especificación del campo 'Unidad'. Por favor consulte la guía de integración. [regex '^.{1,20}$']"/>
                  <ErrorFormato linea="18" columna="81" descripción="Error de Validación. El campo 'Importe' es requerido."/>
                  <ErrorFormato linea="18" columna="82" descripción="El valor 'C_IMP_RETENCIONES' no cumple con la especificación del campo 'Descuento'. Por favor consulte la guía de integración. [regex '^\d+(\.\d{0,6})?$']"/>
                  <ErrorFormato linea="18" columna="100" descripción="Error de sintáxis, se esperaba un salto de línea, pero se ha encontrado el valor 'IMP_RETENIDO'"/>
               </ErroresFormato>
            </Resultado>
            <Resultado fechaDeRecepcion="2017-11-14T18:44:55">
               <Documentos>
                  <Documento resultado="ERROR" secuencial="1" formatoValido="true">
                     <Comprobante>
                        <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                        <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                        <Campo llave="serie" valor="FADQ"/>
                        <Campo llave="folio" valor="0000086334-001"/>
                        <Campo llave="status" valor="ERROR"/>
                        <Campo llave="Version" valor="3.3"/>
                        <Errores>
                           <Code>203</Code>
                           <Message>Estructura del comprobante inválida contra anexo20.</Message>
                           <InnerErrors>
                              <Error>
                                 <Code>CFDI33181</Code>
                                 <Message>El valor del campo TotalImpuestosRetenidos debe ser igual a la suma de los importes registrados en el elemento hijo Retencion.</Message>
                                 <Target>/cfdi:Comprobante/cfdi:Impuestos/@TotalImpuestosRetenidos</Target>
                                 <Details>El valor del atributo (cfdi:Comprobante:Impuestos:TotalImpuestosRetenidos) es [54000.00]. La sumatoria de los atributos (cfdi:Comprobante:Impuestos:Retenciones:Retencion: Importe) es [4000.00].</Details>
                                 <InnerErrors/>
                              </Error>
                              <Error>
                                 <Code>CFDI33189</Code>
                                 <Message>El campo Importe correspondiente a Retención no es igual a la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al campo impuesto de este elemento.</Message>
                                 <Target>/cfdi:Comprobante/cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion[@impuesto='001']</Target>
                                 <Details>El valor del atributo (cfdi:Comprobante:Impuestos:Retenciones:Retencion:Impuesto)[001] Importe es [4000.00]. La sumatoria de los atributos (cfdi:Comprobante:Conceptos:Concepto:Impuestos:Retenciones:Retencion:Importe) es [54000.00] donde es igual el atributo (cfdi:Comprobante:Conceptos:Concepto:Impuestos:Retenciones:Retencion:Impuesto) es [001]. Valor esperado[54000.00].</Details>
                                 <InnerErrors/>
                              </Error>
                           </InnerErrors>
                        </Errores>
                     </Comprobante>
                  </Documento>
                  <Documento resultado="EMITIDO" secuencial="2" formatoValido="true">
                     <Comprobante>
                        <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                        <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                        <Campo llave="serie" valor="FADQ"/>
                        <Campo llave="folio" valor="0000086334-001"/>
                        <Campo llave="UUID" valor="FFFE3335-E638-4C6C-B7C9-E28E4DEB6E94"/>
                        <Campo llave="status" valor="EMITIDO"/>
                        <Campo llave="Version" valor="3.3"/>
                     </Comprobante>
                  </Documento>
                  <Documento resultado="EMITIDO" secuencial="3" formatoValido="true">
                     <Comprobante>
                        <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                        <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                        <Campo llave="serie" valor="FADQ"/>
                        <Campo llave="folio" valor="0000086334-001"/>
                        <Campo llave="UUID" valor="971AED66-F739-48B6-8E0D-EB36A4E857D9"/>
                        <Campo llave="status" valor="EMITIDO"/>
                        <Campo llave="Version" valor="3.3"/>
                     </Comprobante>
                  </Documento>
                  <Documento resultado="EMITIDO" secuencial="4" formatoValido="true">
                     <Comprobante>
                        <Campo llave="rfcEmisor" valor="AAA010101AAA"/>
                        <Campo llave="rfcReceptor" valor="XAXX010101000"/>
                        <Campo llave="serie" valor="FADQ"/>
                        <Campo llave="folio" valor="0000086334-001"/>
                        <Campo llave="UUID" valor="D8AABA53-7ABE-4508-8174-DEE55414203E"/>
                        <Campo llave="status" valor="EMITIDO"/>
                        <Campo llave="Version" valor="3.3"/>
                     </Comprobante>
                  </Documento>
               </Documentos>
            </Resultado>
         </ReporteProcesamiento>
      </ReporteProcesamientoDeArchivoResponse>
   </s:Body>
</s:Envelope>

Errors in transaction

Element Description
TransactionId Transaction Id: if you require diagnosis and/or support you need to have it.
Error An object for error description.
Code A chain that identifies the specific error.
Message The description of an error code, to enable the diagnosis in the client apps. Its value will always be the same for a specific error.
Target An optional element that in some errors will indicate the closest location of the error. If, for example, the request includes a receipt with more than one fiscal concept, and the error is about validation of the concept data, this field will show which one of the concepts is the one causing the rejection by not complying with the validation rule.
Details A detailed description of the specific error for diagnosis purposes and to be interpreted by a developer.
InnerErrors A list of the error type objects with the same structure described in this table showing root errors or the different errors that cause them. Each of the errors on this list can have InnerErrors, if there’s more detailed information on the errors causing them.

Example of the response when the API Key (authentication) is not valid.

<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">
      <ReporteProcesamientoDeArchivoResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
         <Error>
            <Code>AuthenticationFailed</Code>
            <Message>Credenciales inválidas.</Message>
            <InnerErrors>
               <Error>
                  <Code>101</Code>
                  <Message>API Key no válida.</Message>
                  <Target>Reporte de procesamiento de archivo</Target>
               </Error>
            </InnerErrors>
         </Error>
      </ReporteProcesamientoDeArchivoResponse>
   </s:Body>
</s:Envelope>

For more information or if you have any doubt related with this guide, please send an email to MEX-soporte@sovos.com


Regresar