Resultado de Emisión de Comprobantes Fiscales por archivo de texto plano

Al procesar archivos de texto plano por medio de transferencia de archivos con nuestro SFTP, se puede obtener el resultado de procesamiento del archivo recibido por medio de otro archivo que puede ser en texto plano delimitado por pipes, o en XML. Éste archivo se puede depositar en una de las carpetas del SFTP para que puedas obtenerlo y trabajar con el.

Además de los dos formatos del reporte (TXT y XML), existen dos estructuras para cada uno dependiendo de las opciones de procesamiento que tengas configuradas en tu cuenta Reachcore: procesamiento con validación parcial (se procesan todos los Comprobantes del lote y se reportan los que sí pudieron generar CFDI), o procesamiento con validación estricta (se deja de procesar el lote si se encuentra un error al procesar el lote).

Archivo de texto plano TXT

El resultado del procesamiento del archivo de integración que tiene como salida un archivo de texto plano que ha sido procesado con una configuración de validación completa, tendrá el siguiente formato en donde cada campo se separa por un pipe:

Reporte de procesamiento con Validación completa

Resultados|[nombreArchivo]|[fechaDeRecepcion]|[formatoValido]|[mensajeError]
Comprobante|[rfcEmisor]|[rfcReceptor]|[serie]|[folio]|[estatus]|[detalleError/UUID]
...
Comprobante|[rfcEmisor]|[rfcReceptor]|[serie]|[folio]|[estatus]|[detalleError/UUID]
ErrorFormato|[linea]|[columna]|[descripcion]
...
ErrorFormato|[linea]|[columna]|[descripcion]
Posición Campo Tipo Descripción
[Inicio línea] Resultados Indicador Indica el inicio del archivo de resultado de procesamiento. Sólo aparece una vez por archivo
1 nombreArchivo Campo El nombre del archivo de integración que se procesó.
2 fechaDeRecepcion Campo Fecha en que el archivo se procesó en Reachcore
3 formatoValido Campo Bandera con valores booleanos (true o false) que indica si el archivo procesado tuvo un formato válido
4 mensajeError Campo Mensaje de texto con la descripción del error
[Inicio de línea] ErrorFormato Indicador Indica un línea con detalle de error en sintaxis al procesar el archivo recibido. Puede aparecer varias veces dentro de un reporte
1 linea Campo Indica el número de línea en el archivo procesado en donde se encontró el error
2 columna Campo Indica el número de columna dentro del archivo procesado en donde se encontró el error
3 descripcion Campo Mensaje de texto con el mensaje de error
[Inicio de línea] Comprobante Indicador Indica una línea que contiene el resultado de procesar un Documento. Puede aparecer varias veces dentro de un reporte
1 rfcEmisor Campo Indica el RFC Emisor del Documento proporcionado en el archivo recibido
2 rfcReceptor Campo Indica el RFC Receptor del Documento proporcionado en el archivo recibido
3 serie Campo Indica la Serie empleada por el Emisor para identificar al Documento. Este campo se entrega vacío si no se especificó una Serie
4 folio Campo Indica el Folio empleado por el Emisor para identificar al Documento. Este campo se entrega vacío si no se especificó un Folio
5 estatus Campo Indica si se pudo generar el Documento. Este tipo de error es distinto al que se reporta en la líneas de ErrorFormato pues aunque un Documento tenga un formato válido: existen reglas para emisión de Comprobantes Fiscales Digitales que se deben considerar al llevar a cabo el timbrado. Si un Documento no cumple con una de las reglas establecidas por la autoridad, el detalle se reportará en las líneas Comprobante. Valores posibles: Emitido o Error
6 detalleError/UUID Campo Si en el Campo estatus se encontró el valor Emitido: Este campo tiene el Folio Fiscal (UUID) del Documento generado.
Si en el Campo estatus se encontró el valor Error: Este campo contiene el detalle del error al procesar el Documento.


Ejemplo donde hay error por estructura inválida

Resultados|miarchivo.txt|2014-01-01T00:00:00|false|Estructura inválida
ErrorFormato|4|26|Error de sintáxis, se esperaba un salto de línea, pero no se encontró ningún valor.

Ejemplo donde hay un error por archivo desconocido

Resultados|miarchivo.txt|2014-01-01T00:00:00|False|El servicio está configurado para enviar archivos de Reachcore, pero se ha enviado un archivo DESCONOCIDO.

Ejemplo donde hay errores por Comprobantes duplicados dentro del mismo archivo

Resultados|miarchivo.txt|2014-01-01T00:00:00|True|
Comprobante|AAA010101AAA|XEXX010101000|A|22222|Emitido|89b63088-b6ca-444e-99fd-0f4e02e56d54
Comprobante|AAA010101AAA|XEXX010101000|A|11111|Error|Hash duplicado

Reporte de procesamiento con Validación parcial

Si en el archivo de entrada, al menos uno de los Documentos que se envían para emitir hace uso del indicador ID_CONTROL en la estructura de la línea DOCUMENTO, se genera un reporte de procesamiento con hasta 10 posiciones separadas por pipes. Si en el archivo de entrada no se usa el indicador ID_CONTROL en la estructura de la línea DOCUMENTO, se genera un reporte de procesamiento con hasta 9 posiciones (no se reporta ni se reserva la posición asociada al ID Control).

  • Sin uso de ID_CONTROL
  • Si tu cuenta Reachcore está configurada para llevar a cabo procesamiento parcial, el reporte que se generará tendrá la siguiente estructura:

    Resultados|[nombreArchivo]|[fechaDeRecepcion]
    Documento|[secuencial]|[status]|[estructuraValida]|ErrorFormato|[linea]|[columna]|[mensaje]
    ...
    Documento|[secuencial]|[status]|[estructuraValida]|Comprobante|[rfcEmisor]|[rfcReceptor]|[serie]|[folio]|[detalleError/UUID]
    ...
    Posición Campo Tipo Descripción
    [Inicio línea] Resultados Indicador Indica el inicio del archivo de resultado de procesamiento. Sólo aparece una vez por archivo
    1 nombreArchivo Campo El nombre del archivo de integración que se procesó.
    2 fechaDeRecepcion Campo Fecha en que el archivo se procesó en Reachcore
    [Inicio de línea] Documento Indicador Indica el inicio del detalle de procesar un Comprobante. Puede aparecer varias veces dentro de un reporte
    1 secuencial Campo Indica el número de Comprobante (según su posición en el archivo recibido) al que se refiere el registro
    2 status Campo Indica si se pudo generar el Documento. Valores posibles: ERROR o EMITIDO
    3 estructuraValida Campo Indica si el Documento a procesar tiene una estructura válida. Valores permitidos true o false
    4 ErrorFormato Indicador Indica si el Documento asociado al secuencial tuvo un error asociado a la estructura en la que se recibe la información del Documento
    5 linea Campo Indica el número de línea en el archivo procesado en donde se encontró el error
    6 columna Campo Indica el número de columna dentro del archivo procesado en donde se encontró el error
    7 mensaje Campo Mensaje de texto con el mensaje de error
    4 Comprobante Indicador Indica el inicio de información asociada al Documento que corresponde al secuencial
    5 rfcEmisor Campo Indica el RFC Emisor del CFDI
    6 rfcReceptor Campo Indica el RFC Receptor del CFDI
    7 serie Campo Indica la Serie empleada por el Emisor para identificar al Comprobante. Este campo se entrega vacío si no se especificó una Serie
    8 folio Campo Indica el Folio empleado por el Emisor para identificar al Comprobante. Este campo se entrega vacío si no se especificó un Folio
    9 detalleError/UUID Campo Si en el Campo estatus se encontró el valor Emitido: Este campo tiene el Folio Fiscal (UUID) del Comprobante generado.
    Si en el Campo estatus se encontró el valor Error: Este campo contiene el detalle del error al procesar el Comprobante.

    Ejemplo de reporte de procesamiento con validaciones parciales del lote:

    Resultados|miarchivo.txt|2018-11-06T01:00:00
    Documento|1|ERROR|false|ErrorFormato|4|26|Error de sintáxis, se esperaba un salto de línea, pero no se encontró ningún valor.
    Documento|2|EMITIDO|true|Comprobante|AAA010101AAA|XAXX010101000|NOTA|000011|FDAA9BB8-24A1-426A-B39F-DEA945B41718
    Documento|3|EMITIDO|true|Comprobante|AAA010101AAA|XAXX010101000|FACTURA|000012|01581873-D34A-440A-8F7F-59A6206DAB7A


  • Con uso de ID_CONTROL
  • Si tu cuenta Reachcore está configurada para llevar a cabo procesamiento parcial, el reporte que se generará tendrá la siguiente estructura:

    Resultados|[nombreArchivo]|[fechaDeRecepcion]
    Documento|[secuencial]|[status]|[estructuraValida]|ErrorFormato|[linea]|[columna]|[mensaje]
    ...
    Documento|[secuencial]|[status]|[estructuraValida]|Comprobante|[rfcEmisor]|[rfcReceptor]|[serie]|[folio]|[IdControl]|[detalleError/UUID]
    ...
    Posición Campo Tipo Descripción
    [Inicio línea] Resultados Indicador Indica el inicio del archivo de resultado de procesamiento. Sólo aparece una vez por archivo
    1 nombreArchivo Campo El nombre del archivo de integración que se procesó.
    2 fechaDeRecepcion Campo Fecha en que el archivo se procesó en Reachcore
    [Inicio de línea] Documento Indicador Indica el inicio del detalle de procesar un Comprobante. Puede aparecer varias veces dentro de un reporte
    1 secuencial Campo Indica el número de Comprobante (según su posición en el archivo recibido) al que se refiere el registro
    2 status Campo Indica si se pudo generar el Documento. Valores posibles: ERROR o EMITIDO
    3 estructuraValida Campo Indica si el Documento a procesar tiene una estructura válida. Valores permitidos true o false
    4 ErrorFormato Indicador Indica si el Documento asociado al secuencial tuvo un error asociado a la estructura en la que se recibe la información del Documento
    5 linea Campo Indica el número de línea en el archivo procesado en donde se encontró el error
    6 columna Campo Indica el número de columna dentro del archivo procesado en donde se encontró el error
    7 mensaje Campo Mensaje de texto con el mensaje de error
    4 Comprobante Indicador Indica el inicio de información asociada al Documento que corresponde al secuencial
    5 rfcEmisor Campo Indica el RFC Emisor del CFDI
    6 rfcReceptor Campo Indica el RFC Receptor del CFDI
    7 serie Campo Indica la Serie empleada por el Emisor para identificar al Comprobante. Este campo se entrega vacío si no se especificó una Serie
    8 folio Campo Indica el Folio empleado por el Emisor para identificar al Comprobante. Este campo se entrega vacío si no se especificó un Folio
    9 idControl Campo Indica el ID Control empleado por el Emisor para identificar al Comprobante. Este campo se entrega vacío si no se especificó un ID Control
    10 detalleError/UUID Campo Si en el Campo estatus se encontró el valor Emitido: Este campo tiene el Folio Fiscal (UUID) del Comprobante generado.
    Si en el Campo estatus se encontró el valor Error: Este campo contiene el detalle del error al procesar el Comprobante.


    Ejemplo de reporte de procesamiento con validaciones parciales del lote cuando todos los Documentos usaron IDControl:

    Resultados|PruebaConIdControl.txt|2019-08-19T12:18:42
    Documento|1|EMITIDO|true|Comprobante|LAN8507268IA|CACX7605101P8|A|200|190819A200I|8CDADA54-9A9B-46D4-A9BD-07F776AC087C
    Documento|2|EMITIDO|true|Comprobante|LAN8507268IA|LAN7008173R5|B|201|190819B201E|A4DFA715-5305-4E0D-8F96-C9ACDBA8074F

    Ejemplo de reporte de procesamiento con validaciones parciales del lote cuando sólo uno de los Documentos usó IDControl:

    Resultados|PruebaMix.txt|2019-09-19T22:07:11
    Documento|1|ERROR|false|ErrorFormato|48|1|Error de sintáxis, se esperaba un indicador conocido(válido), pero se ha encontrado el valor 'C'.
    Documento|2|EMITIDO|true|Comprobante|LAN7008173IA|CACX7605101P8|A|711|190919A711I|842812A7-13EA-4AC7-878B-3BCDEA52A159
    Documento|3|EMITIDO|true|Comprobante|LAN7008173IA|LAN7008173R5|A|712| |854071FF-89B5-43BE-B179-45153CB1C510	

    Archivo de resultados XML

    Validación completa

    Reporte de procesamiento sin errores

    <?xml version="1.0" encoding="utf-8"?>
    <Resultados xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" nombreArchivo="CFDI33_FACTURAS_SIN_ERROR.txt" xmlns="urn:schemas.reachcore.com:resultados-archivo:5.0">
      <Resultado fechaDeRecepcion="2019-01-04T16:03:58" formatoValido="true">
        <Comprobantes>
          <Comprobante>
            <Campo llave="rfcEmisor" valor="AAA010101AAA" />
            <Campo llave="rfcReceptor" valor="XAXX010101000" />
            <Campo llave="serie" valor="TST" />
            <Campo llave="folio" valor="20190103190107" />
            <Campo llave="UUID" valor="EDA1197A-8B09-4E78-AEA2-3869211B9625" />
            <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="TST" />
            <Campo llave="folio" valor="20190103190108" />
            <Campo llave="UUID" valor="4501F25F-890A-49BD-AA62-26B94150E1D9" />
            <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="TST" />
            <Campo llave="folio" valor="20190103190109" />
            <Campo llave="UUID" valor="94965F70-D27B-41F2-8594-6EDE60794F8E" />
            <Campo llave="status" valor="EMITIDO" />
            <Campo llave="Version" valor="3.3" />
          </Comprobante>
        </Comprobantes>
      </Resultado>
    </Resultados>

    Reporte de procesamiento con errores de sintaxis

    <?xml version="1.0" encoding="utf-8"?>
    <Resultados xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" nombreArchivo="CFDI33_FACTURAS_ERROR_PARSEO.txt" xmlns="urn:schemas.reachcore.com:resultados-archivo:5.0">
      <Resultado fechaDeRecepcion="2019-01-04T19:13:04" formatoValido="false">
        <ErroresFormato mensajeError="Estructura inválida">
          <ErrorFormato linea="3" columna="61" descripción="Error de Validación. El campo 'SubTotal' es requerido." />
          <ErrorFormato linea="3" columna="68" descripción="Error de Validación. El campo 'Total' es requerido." />
          <ErrorFormato linea="3" columna="75" descripción="Error de Validación. El campo 'LugarExpedicion' es requerido." />
        </ErroresFormato>
      </Resultado>
    </Resultados>

    Validación parcial

    En la validación parcial, la estructura de respuesta puede tener información de errores de sintaxis, errores de parseo errores de emisión y emisiones exitosas:

    <?xml version="1.0" encoding="utf-8"?>
    <ReporteProcesamiento xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" nombreArchivo="CFDI33_FACTURAS_CON_ERROR.txt">
      <Resultado fechaDeRecepcion="2019-01-04T15:57:10">
        <Documentos>
          <Documento resultado="ERROR" secuencial="1" formatoValido="false">
            <ErroresFormato mensajeError="Estructura inválida">
              <ErrorFormato linea="3" columna="61" descripción="Error de Validación. El campo 'SubTotal' es requerido. " />
              <ErrorFormato linea="3" columna="68" descripción="Error de Validación. El campo 'Total' es requerido. " />
              <ErrorFormato linea="3" columna="75" descripción="Error de Validación. El campo 'LugarExpedicion' es requerido." />
            </ErroresFormato>
          </Documento>
          <Documento resultado="ERROR" secuencial="2" formatoValido="false">
            <ErroresFormato mensajeError="Estructura inválida">
              <ErrorFormato linea="11" columna="54" descripción="Error de sintáxis, se esperaba un salto de línea, pero se ha encontrado el indicador 'AQUI ESTÁ EL ERROR'" />
            </ErroresFormato>
          </Documento>
          <Documento resultado="ERROR" secuencial="3" formatoValido="true">
            <Comprobante>
              <Campo llave="rfcEmisor" valor="AAA010101AAA" />
              <Campo llave="rfcReceptor" valor="XAXX010101000" />
              <Campo llave="serie" valor="TST" />
              <Campo llave="folio" valor="20190103190105" />
              <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>203</Code>
                    <Message>Error en la validación contra esquemas.</Message>
                    <Details>The 'ClaveProdServ' attribute is invalid - The value '11111111' is invalid according to its datatype 'http://www.sat.gob.mx/sitio_internet/cfd/catalogos:c_ClaveProdServ' - The Enumeration constraint failed.
    </Details>
                    <InnerErrors />
                  </Error>
                  <Error>
                    <Code>CFDI33118</Code>
                    <Message>El campo Total no corresponde con la suma del subtotal, menos los descuentos aplicables, más las contribuciones recibidas (impuestos trasladados - federales o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) menos los impuestos retenidos.</Message>
                    <Target>/cfdi:Comprobante/@Total</Target>
                    <Details>El valor del atributo (cfdi:Comprobante:Total) es [1.00], y no es igual al valor calculado [0.00] correspondiente a la sumatoria de los atributos (cfdi:Comprobante:Subtotal)[1.00] menos(cfdi:Comprobante/Descuento)[1.00] más (cfdi:Comprobante/Impuestos/TotalImpuestosTrasladados)[]  menos (cfdi:Comprobante:Impuestos/@TotalImpuestosRetenidos)[] .</Details>
                    <InnerErrors />
                  </Error>
                  <Error>
                    <Code>CFDI33142</Code>
                    <Message>El campo ClaveProdServ, no contiene un valor del catálogo c_ClaveProdServ.</Message>
                    <Target>/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto[position()=1]/@ClaveProdServ</Target>
                    <Details>El valor del atributo (cfdi:Comprobante:Conceptos:Concepto[1]:ClaveProdServ)[11111111] no se encontró en el catálogo c_ClaveProdServ.</Details>
                    <InnerErrors />
                  </Error>
                </InnerErrors>
              </Errores>
            </Comprobante>
          </Documento>
          <Documento resultado="EMITIDO" secuencial="4" formatoValido="true">
            <Comprobante>
              <Campo llave="rfcEmisor" valor="AAA010101AAA" />
              <Campo llave="rfcReceptor" valor="XAXX010101000" />
              <Campo llave="serie" valor="TST" />
              <Campo llave="folio" valor="20190103190106" />
              <Campo llave="UUID" valor="37519FBA-F6B4-4C34-9A85-39815A4347E8" />
              <Campo llave="status" valor="EMITIDO" />
              <Campo llave="Version" valor="3.3" />
            </Comprobante>
          </Documento>
        </Documentos>
      </Resultado>
    </ReporteProcesamiento>

    Cualquier duda que llegaras a tener o para tener mayor información, por favor, envía un correo a MEX-soporte@sovos.com


    Regresar