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
-
Método [
ReporteProcesamientoDeArchivo
]: Consulta del resultado de procesamiento de archivo de integración- Solicitud ReporteProcesamientoDeArchivo
- Respuesta ReporteProcesamientoDeArchivo
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 '^[Ñ&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:
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 '^[Ñ&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