Consulta del resultado de procesamiento de archivo de integración (6.0)

Reachcore ofrece a sus clientes que emiten CFDI por archivo de integración, conocer el resultado del procesamiento por medio de un Web Service.

Contenido

Características generales

Se puede conocer el resultado de los archivos de integración que se enviaron para su procesamiento en Reachcore, mediante el siguiente Web Service, tomando como parámetro el nombre del archivo con el cual se envío a procesar el archivo para la emisión de CFDI. Si se mandan a procesar varios archivos con el mismo archivo, se devolverá en la respuesta todos los registros relacionados, identificándolos por la hora en que se recibieron para su procesamiento en Reachcore.

¿Qué necesito?

Para poder hacer uso del servicio se necesita lo siguiente:

  • Haber generado un API Key en tu cuenta Reachcore, ya que es el identificador de autenticación en los Web Services de la plataforma. Para consultar como generar el API Key, consulta este artículo: Generar API Key para Web Services.
  • Poder invocar un Web Service, publicado en internet con conexión segura (SSL).
  • Emitir CFDI por archivo de integración.
  • Conocer el nombre del archivo de integración.

Ubicación del servicio

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

Ambiente URL
Piloto https://oat.reachcore.com/api/ws/6.0/pacservices/Emision.svc/basic?wsdl
Producción https://go.reachcore.com/api/ws/6.0/pacservices/Emision.svc/basic?wsdl


Método [ReporteProcesamientoDeArchivo]: Reporte del resultado de procesamiento de archivo de integración

Este método es utilizado para quienes emiten los comprobantes fiscales mediante un archivo de integración y requieren concoer el resultado de procesamiento del mismo, tomando como valor de consulta el nombre del archivo que se envió a procesar.

Solicitud ReporteProcesamientoDeArchivo

A continuación se describen los datos necesarios para obtener el resultado del procesamiento de un archivo de integración en Reachcore.

Elemento Uso Descripción
ApiKey Requerido Llave secreta de autenticación generada en Reachcore
NombreArchivo Requerido Nombre del archivo de integración (incluyendo la extensión) con el cual se envió a procesar en Reachcore


Ejemplo de solicitud para consultar el resultado de un archivo de integración con el nombre 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>

Respuesta ReporteProcesamientoDeArchivo

Existen dos formas de procesar el archivo de integración: validación total o validación individual; dependiendo de la configuración de tu cuenta para validar el archivo de integración, se obtendrá el reporte de manera diferente.

Cuando fue exitosa la transacción

Respuesta - validación total del archivo de integración.


Reachcore puede realizar la validación completa del archivo de integración: solo se procesará el archivo de integración cuando todo cumpla con la estructura del mismo y si los datos, como RFC, son correctos.

Como respuesta, se obtendrá los siguientes elementos:

Elemento Atributo Descripción
ReporteProcesamiento nombreArchivo Nombre del archivo de integración consultado.
Resultado --- Este elemento se podrá repetir tanta veces como archivos de integración fueron procesados con el nombre hecho en la consulta.
Resultado fechaDeRecepcion Fecha en que se proceso el archivo
Resultado formatoValido indica si la estructura del archivo de integración es correcto (true/ false)


Si el valor de formatoValido es false, se mostrará lo siguiente para el elemento ErroresFormato :

Elemento Atributo Descripción
ErroresFormato mensajeError Describe el error
ErrorFormato --- Este elemento de mostrará tantas veces como los errores encontrados en el formato
ErrorFormato linea Indica la línea del archivo en donde se encontró el error.
ErrorFormato columna Indica la columna de la línea donde se encontró el error
ErrorFormato descripción Muestra la descripción del error.


Ejemplo de respuesta para el archivo de integración con el nombre Mi archivo facturacion.txt, que fue procesado el 14 de noviembre del 2017 a las 18:31:11 hrs., en donde el formatoValido es 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>

Si es true para formatoValido, se mostrará lo siguiente en la respuesta para los que se procesaron correctamente:

Elemento Atributo Descripción
Comprobantes --- Agrupa el o los comprobantes que se procesaron en el archivo de integración.
Comprobante --- Muestra el detalle de un comprobante dentro del archivo de integración.
Campo llave Describe el campo
Campo valor Contiene el valor de la llave
Errores --- En caso de que existan errores en las validaciones relacionadas con el Anexo 20 y/o de los complementos
Code --- siempre tendrá el valor 203.
Message --- Tendrá el mensaje: "Estructura del comprobante inválida contra anexo20"
InnerErrors --- Se mostrarán la reglas de validación por la cual no se procesó el archivo.
Code --- Indica el código espedificado por el SAT
Message --- Muestra la descripción de error.
Target --- Después de realizar la transformación al XML, se indica en que elemento/atributo del XML se presentó el error.
Details --- Proporciona mayor detalle de la razón del error, relacionado con la regla validada.

A continuación un ejemplo de respuesta para el archivo de integración con el nombre Mi archivo.txt, que se procesó el 14 de noviembre del 2017 a las 18:44:55 hrs. en donde el valor de formatoValido es true, pero en uno de los comprobantes, se presentó errores en las reglas de validación del SAT.

<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>

En los atributos llave-valor puede contener alguno de los siguientes valores:

Llave Descripción de Valor
rfcEmisor Contiene el RFC emisor del comprobante
rfcReceptor Contiene el RFC receptor del comprobante
serie Contiene el valor de la serie del comprobante, si esta disponible
folio Contiene el valor del folio del comprobante, si esta disponible
UUID Contiene el folio fiscal del comprobante
status Indica si el comprobante esta como Emitido, Cancelado al momento de realizar la consulta
Version Indica la versión del comprobante que se emitió
detalleError Para el caso de los comprobantes versión 3.2


Respuesta - validación individual del archivo de integración.


En caso de que el archivo de integración contemple más de un comprobante para emitir, se puede configurar para que se realice la validación por comprobante; esto es, se podrá procesar los archivos que cumplan con la estructura y los datos que cumplan con la validación correspondiente.

Elemento Atributo Descripción
Documentos --- Agrupa el o los comprobantes que se procesaron en el archivo de integración.
Documento --- Muestra el detalle de un comprobante dentro del archivo de integración.
Documento formatoValido Indica si el documento tiene la estructura y datos correctos. Los valores posibles son: true false
Documento resultado Indica el resultado del procesamiento
Documento secuencial Es el número secuencial del comprobante a emitir dentro del archivo de integración.
Campo --- Se mostrarán varios elementos
Campo llave Describe el campo
Campo valor Contiene el valor de la llave


Si el valor de formatoValido es false, se mostrará lo siguiente para el elemento ErroresFormato :

Elemento Atributo Descripción
ErroresFormato mensajeError Describe el error
ErrorFormato --- Este elemento se mostrará conforme al número de errores encontrados en el formato del archivo.
ErrorFormato linea Indica la línea del archivo en donde se encontró el error.
ErrorFormato columna Indica la columna de la línea donde se encontró el error
ErrorFormato descripción Muestra la descripción del error.


Si el valor de formatoValido es false, se mostrará lo siguiente en la respuesta:

Elemento Atributo Descripción
Comprobante --- Muestra el detalle de un comprobante dentro del archivo de integración.
Campo llave Describe el campo
Campo valor Contiene el valor de la llave


En los atributos llave-valor puede contener alguno de los siguientes valores:

Valor Llave Descripción de Valor
rfcEmisor Contiene el RFC emisor del comprobante
rfcReceptor Contiene el RFC receptor del comprobante
serie Contiene el valor de la serie del comprobante, si esta disponible
folio Contiene el valor del folio del comprobante, si esta disponible
UUID Contiene el folio fiscal del comprobante
status Indica si el comprobante esta como Emitido, Cancelado al momento de realizar la consulta
Version Indica la versión del comprobante que se emitió
detalleError Describe la razón por la cual no se proceso el comprobante.


Ejemplo de respuesta para el archivo de integración con el nombre Mi archivo.txt, que se envió a procesar dos veces en las siguientes fechas y horas:

  • El 14 de noviembre del 2017 a las 18:43:23 hrs. - tuvo error en la estructura del archivo y no se procesó.
  • El 14 de noviembre del 2017 a las 18:44:55 hrs. - No tuvo error en la estructura del archivo; el resultado del procesamiento fue que el comprobante 1 tuvo errores en las validaciones del Anexo 20 y los comprobantes del 2 al 4 fueron emitidos.
<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>

Cuando tuvo error la transacción

Elemento Descripción
TransactionId Identificador de la transacción; para fines de diagnóstico y soporte, es necesario tener disponible dicho identificador.
Error Objeto para la descripción de errores.
Code Una cadena que identifica el error específico.
Message La descripción del código de error, para fines de facilitar el diagnóstico en las aplicaciones cliente sin tener que referirse a la tabla de errores. Su valor será siempre el mismo para un código de error específico.
Target Elemento opcional que, en algunos errores, se indicará la ubicación más precisa del error, sobre todo en los casos donde hay más de un lugar donde se pudo haber presentado. Por ejemplo, si la solicitud incluye un comprobante con más de un Concepto fiscal, y el error es de validación de datos de concepto, este campo indicará cuál de los conceptos fue el que ocasionó el rechazo por incumplir dicha regla de validación.
Details Descripción detallada de la situación de error específica, para propósitos de diagnóstico y pensada en ser interpretada por un desarrollador.
InnerErrors Una lista de otros objetos de tipo Error con la misma estructura descrita en esta tabla, que presentan ya sea la causa raíz del error o un desglose de los diferentes errores que lo originaron. Cada uno de los errores de esta lista pudiera a su vez tener InnerErrors, si es que hay más información detallada de errores que lo hayan ocasionado.

A continuación se muestra el ejemplo de respuesta con error cuando el API Key (autenticación) no es válido.

<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>

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