Cancelación de CFDI de Sector Primario especificando motivo de cancelación

Este servicio permite cancelar los comprobantes fiscales emitidos por Reachcore en su figura como Proveedor de Certificación de expedición de CFDI a través del adquiriente de bienes o servicios (PCECFDI)

Contenido

Características generales

En el esquema de Comprobantes Fiscales Digitales por Internet (CFDI), el SAT resguarda en su base de datos centralizada todos los comprobantes certificados por los Proveedores Autorizado de Certificación para el padrón completo de contribuyentes. Por lo tanto, debido a este modelo centralizado, la cancelación de un CFDI consiste en solicitar directamente al SAT la cancelación del comprobante, mediante la Cancelación de CFDI.

Se describe la forma de realizar la solicitud para realizar la cancelación de CFDI emitido por Sovos en México en su figura de un Proveedor de Certificación de expedición de CFDI a través del adquiriente de bienes o servicios (PCECFDI). Durante este trámite, el SAT puede aprobar o rechazar la solicitud de cancelación, emitiendo un Acuse de la operación indicando ya sea la confirmación de que el comprobante fue cancelado, o bien, la razón del rechazo por la que el comprobante no se pudo cancelar. Las causas de rechazo pueden ser transitorias: si el SAT aún no tiene registrado en su sistema el CFDI; o definitivas: si la solicitud de cancelación es incorrecta.

Para que el SAT de trámite a una solicitud de cancelación de un CFDI emitido por un PCECFDI, se debe de cumplir con que la solicitud de cancelación del UUID (folio fiscal), este firmada electrónicamente con el certificado especial de sello digital (CESD). Reachcore solo procesará los CFDI que emitió como PCECFDI.

Reachcore ofrece la modalidad de Cancelación desconectada, en donde se generan las solicitudes necesarias con el SAT y un esquema de re-intentos por saturación de los sistemas del SAT en horas pico o causados por alguna otra razón.

Cancelación desconectada (asíncrona)

En esta modalidad, el contribuyente solicita a Reachcore llevar a cabo el trámite de cancelación de uno o mas folios fiscales (con un máximo de hasta 500 folios fiscales en una sola operación). El contribuyente puede hacer llegar a Reachcore la lista de los folios fiscales a cancelar ya sea por medio de un Web Service o de un archivo de texto plano, que se transfiere por una conexión segura (SFTP). Cada folio fiscal debe estar acompañado de un motivo de cancelación y si se especifica la clave 01 como motivo de cancelación: especificar el folio fiscal que sustituye al CFDI que se está cancelando.

Como resultado inmediato, Reachcore entrega al contribuyente un identificador de seguimiento de la operación.

Reachcore se encarga de realizar tantas sesiones de comunicación con el SAT como sea necesario hasta asegurarse de que todos las solicitudes han sido entregadas al SAT, sin la intervención del contribuyente.

El contribuyente puede consultar en cualquier momento el progreso de la operación, tantas veces como quiera, a través del método de consulta de estado de la transacción de Reachcore utilizando el número de seguimiento asignado a la operación.

Comparación de servicios de cancelación de Reachcore

En esta tabla se muestran una comparación de las principales características de los diferentes servicios de cancelación de CFDI ofrecidos por Reachcore.

Característica Cancelación desconectada (asíncrona) Archivo de texto
Límite de Cancelaciones en una sola petición 500 comprobantes 10,000 comprobantes
Reachcore se encarga de realizar los re-intentos ante el SAT Si Si

Requisitos para cancelar un CFDI bajo PCECFDI

Para realizar la cancelación de un folio fiscal de un CFDI bajo el esquema de PCECFDI, dicho comprobante debió ser emitido por Reachcore; si fue emitido por otro PCECFDI, no se podrá realizar la cancelación.

Integración

Existen dos medios de integración para hacer llegar las solicitudes de cancelación a Reachcore:

  • Web Service de Cancelación
  • Archivo de texto plano a través de SFTP.

Aquí se explica lo relacionado con el Web Service. Si deseas realizar la cancelación por medio de archivo de texto plano, es necesario crear el archivo de texto plano conforme se indica en la siguiente liga: archivo de texto plano para cancelación. El archivo puede enviarse vía SFTP o cargándolo en el portal de Reachcore.

Para obtener información adicional, por favor contáctenos o con su ejecutivo de cuenta.

Web Service de Cancelación.

En este Web Service se podrán realizar las siguientes operaciones:

  • Cancelación desconectada.
  • Consulta de estado de cancelación de un folio fiscal.
  • Consulta de estado de cancelación de un lote previamente enviado a cancelar.

¿Qué necesito?

Para hacer uso del web service de cancelación se necesita:

  • Haber generado el CFDI con el PSECFDI Sovos Reachcore
  • Haber generado un API Key en tu cuenta Reachcore, ya que es el un identificador que te autentica en los Web Services de la plataforma. Para consultar como generar el API Key, consulta este artículo: Generar API Key para Web Services.
  • Contar con el folio fiscal a cancelar (UUID) emitido en su cuenta Reachcore

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 del WSDL
Pruebas https://oat.reachcore.com/api/ws/6.0/pacservices/CancelacionSectorPrimario.svc/basic?wsdl
Producción https://go.reachcore.com/api/ws/6.0/pacservices/CancelacionSectorPrimario.svc/basic?wsdl

Método [Cancelar]: Cancelación asíncrona

En este método del Web Service, se puede recibir una lista de hasta 500 folios fiscales a cancelar.

Solicitud Cancelar

Elemento Uso Descripción
ApiKey Requerido Identificador de autenticación, que se genera en el portal de Reachcore.
Folios Requerido Estructura/arreglo de folios fiscales de los comprobantes a cancelar, la cual debe contener al menos 1 y hasta 500 folios.
Cada folio debe tener el formato de UUID válido, descrito por la siguiente expresión regular:
[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}
Ejemplo: F9123206-D86C-49EE-80F3-C288CC948631

A cada folio fiscal le debe acompañar el motivo de cancelación, y sólo si se especifica la clave 01 se debe especificar el folio que sustituye al que se está solicitando cancelar.
Opcionalmente se puede especificar el total del comprobante y el RFC del receptor del comprobante (Emisor del CFDI de Sector Primario).
TransactionProperty Opcional Son parámetros que indican a Reachcore algún tratamiento especial a realizar con la petición de cancelación. Estos parámetros deben ser contratados y configurados previamente por personal de Reachcore.

Ejemplo de Solicitud:

<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>?</cus:ApiKey>
   </soapenv:Header>
   <soapenv:Body>
      <urn:CancelacionFiscalSPRequest>
         <urn:Folios>
            <urn:CancelFolioSP>
               <urn:UUID>F9123206-D86C-49EE-80F3-C288CC948631</urn:UUID>
               <urn:Reason>02</urn:Reason>
            </urn:CancelFolioSP>
         </urn:Folios>
      </urn:CancelacionFiscalSPRequest>
   </soapenv:Body>
</soapenv:Envelope>

Respuesta Cancelar

Elemento Descripción
OnError
  • false: Transacción exitosa.
  • true: Error al procesarse la transacción.
  • ErrorMessage En caso que el elemento Error tenga el valor true, se mostrara la descripción del error por medio de una estructura XML con los nodos Code y Message.
    Los errores son con respecto a la petición de cancelación y no tendrán que ver con el contenido de la petición.
    TrackingId Es el identificador único de seguimiento asignado por Reachcore a esta solicitud. Este valor puede ser utilizado para consultar el resultado de la transacción en cualquier momento futuro. Ver operación GetTransactionStatus.

    Ejemplo de Respuesta:

    <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">
          <CancelacionFiscalSPResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
             <OnError>false</OnError>
             <TrackingId>a5ecf804-07a5-4a87-b8de-74720c84d530</TrackingId>
          </CancelacionFiscalSPResponse>
       </s:Body>
    </s:Envelope>

    Método [GetFolioStatusDetail]: Consulta para obtener estado de la cancelación de un UUID

    Por medio de este método, se podrá consultar el resultado de la solicitud de cancelación de un folio fiscal específico. Se podrán consultar los folios fiscales que se hayan solicitado cancelar en Reachcore ya sea por Web Service o por archivo de integración.

    Solicitud GetFolioStatus

    Elemento Uso Descripción
    ApiKey Requerido Identificador de autenticación, que se genera en el portal de Reachcore.
    UUID Requerido El folio de un comprobante que se haya solicitado cancelar previamente, ya sea por Web Service o por archivo de integración.

    Ejemplo de solicitud

    <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>?</cus:ApiKey>
       </soapenv:Header>
       <soapenv:Body>
          <urn:FolioStatusSPRequest>
             <urn:UUID>6AEF1DBD-F8F2-408C-B914-CD32067E3F2A</urn:UUID>
          </urn:FolioStatusSPRequest>
       </soapenv:Body>
    </soapenv:Envelope>

    Respuesta GetFolioStatus

    Elemento Descripción
    OnError
  • false: Transacción exitosa.
  • true: Error al procesar la transacción.
  • Error Arreglo de nodos Code y Message con el detalle del error en la transacción.
    SatSentRequest
  • false: El folio fiscal aún no se envía al SAT para solicitar la cancelación.
  • true: El folio fiscal ha sido enviado al SAT para solicitar su cancelación.
  • ResultCode Código del SAT que especifica el estado de la petición de cancelación en los sistemas del SAT.
    ResultMessage Mensaje o descripción del código reportado en el nodo ResultCode
    UUID El Folio Fiscal del que se entrega detalle
    RelatedUUIDs Estructura FolioFiscalSPDetail, donde se da el detalle recursivo para informar
    • UUID con el folio fiscal relacionado
    • RequestSentToSAT para indicar si la petición de cancelación del folio fiscal ya fue enviada al SAT
    • ResultCode con el código de respuesta del SAT
    • ResultMessage con el mensaje asociado al código de resultado
    • UUIDStatus con el estado del folio fiscal consultado, y
    • nuevamente la estructura RelatedUUIDs por cada folio fiscal relacionado.

    Ejemplo de Respuesta:

    <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">
          <FolioStatusSPResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
             <OnError>false</OnError>
             <Error>
                <Code/>
             </Error>
             <SatSentRequest>true</SatSentRequest>
             <ResultCode>201</ResultCode>
             <ResultMessage>Petición de cancelación recibida</ResultMessage>
             <UUID>6aef1dbd-f8f2-408c-b914-cd32067e3f2a</UUID>
             <RelatedUUIDs/>
          </FolioStatusSPResponse>
       </s:Body>
    </s:Envelope>

    Método [GetTransactionStatusDetail]: Consulta de resultado por lote

    En este método, se podrá conocer el estado de la solicitud de cancelación realizada, ya sea por el Web Service o por archivo de integración.

    Solicitud GetTransactionStatusDetail

    Elemento Uso Descripción
    ApiKey Requerido Identificador de autenticación, que se genera en el portal de Reachcore.
    TrackingId Requerido Identificador de seguimiento de la transacción, el cual es devuelto por una llamada previa a la operación Cancelar o el que se obtiene como respuesta del archivo de texto plano.

    Ejemplo de Solicitud:

    <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>?</cus:ApiKey>
       </soapenv:Header>
       <soapenv:Body>
          <urn:TransactionStatusSPRequest>
             <urn:TrackingId>e8a406e0-1bf3-4f84-b663-c90562e61236</urn:TrackingId>
          </urn:TransactionStatusSPRequest>
       </soapenv:Body>
    </soapenv:Envelope>

    Respuesta GetTransactionStatusDetail

    Elemento Descripción
    OnError
  • false: Transacción exitosa.
  • true: Error al procesarse la transacción.
  • ErrorMessage En caso que el elemento OnError tenga el valor true, se mostrara la descripción del error por medio de una estructura de nodos Code y Message.
    TotalUUIDs Número total de UUID que contenía el lote de cancelación
    UUIDsRejectedSAT Número total de UUID que el SAT ha rechazado en la solicitud de cancelación
    Finished Indica si la transacción ya fue finalizada true o si continúa en proceso false.
    UUIDs Se muestra una lista de resultados en donde se tiene un elemento FolioFiscalSPDetaul por cada folio que se solicitó cancelar. Para cada folio se describe:
    • UUID: El Folio Fiscal del comprobante.
    • RequestSentToSAT: Valor true o false que indica si el comprobante fue enviado a cancelar o no. A partir del 1o de Noviembre de 2018, con la puesta en marcha del nuevo esquema de cancelación, el valor default de este nodo es false por lo que se invita a los usuarios a consultar el estado del Comprobante.
    • ResultCode: Código de respuesta devuelto por el SAT para el comprobante. Ver la Lista de códigos de respuesta del SAT para cancelación.
    • ResultMessage: Significado del código de respuesta del SAT.
    UUIDsSentoToSAT Número total de UUID que fueron enviados al SAT.

    Un lote queda en estado finalizado (Finished = true), cuando cada uno de los comprobantes que se solicitaron cancelar se encuentra en alguno de los siguientes estados:

    • Cancelado exitosamente.
    • No pudo ser cancelado ante el SAT con un motivo de rechazo definitivo. Las razones de rechazo definitivas son las que se listan como no reintentables en la sección de Códigos de Respuesta del SAT para Cancelación.

    Ejemplo de Respuesta

    <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">
          <TransactionStatusSPResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
             <OnError>false</OnError>
             <TotalUUIDs>1</TotalUUIDs>
             <UUIDsRejectedSAT>1</UUIDsRejectedSAT>
             <Finished>false</Finished>
             <UUIDs>
                <FolioFiscalSPDetail>
                   <UUID>6aef1dbd-f8f2-408c-b914-cd32067e3f2a</UUID>
                   <RequestSentToSAT>true</RequestSentToSAT>
                   <ResultCode>201</ResultCode>
                   <ResultMessage>Petición de cancelación recibida</ResultMessage>
                </FolioFiscalSPDetail>
             </UUIDs>
             <UUIDsSentToSAT>0</UUIDsSentToSAT>
          </TransactionStatusSPResponse>
       </s:Body>
    </s:Envelope>

    Códigos de Respuesta de Cancelación del SAT

    Para cada solicitud de cancelación de un comprobante, el SAT la autoriza o rechaza especificando un código de estatus. En las siguientes dos tablas se describen los códigos de status conocidos y sus significados.

    El proceso de cancelación de Sector Primario también fue afectado por el nuevo esquema de cancelación.
    Aunque el escenario de Sector Primario entra en el grupo de excepciones, se recomienda revisar el estado del CFDI después de llevar a cabo la cancelación.
    Puedes obtener más información acerca de este nuevo esquema de cancelación en nuestro Blog, o bien en el sitio del SAT.

    Códigos de éxito

    Código Descripción Significado ¿Reintentable? ¿Qué hacer?
    201 Solicitud de cancelación recibida Se ha recibido la petición de cancelación. No necesariamente significa que el Comprobante se ha cancelado. No Consultar el estado del Comprobante en el SAT. Si el Comprobante pudo ser cancelado, su estado cambiará a Cancelado.
    202 Solicitud de cancelación recibida anteriormente Se ha recibido la petición de cancelación anteriormente. No necesariamente significa que el Comprobante se ha cancelado. No Consultar el estado del Comprobante en el SAT. Si el Comprobante pudo ser cancelado, su estado cambió a Cancelado.


    Códigos de error

    Código Descripción Significado ¿Reintentable? ¿Qué hacer?
    203 UUID No encontrado o no corresponde a emisor El Folio Fiscal que se solicitó cancelar no se ha podido encontrar, o se encontró pero no fue emitido por el RFC especificado. No Indicar el RFC Emisor correcto para ese comprobante y hacer una nueva solicitud.
    204 UUID No aplicable para cancelación El Folio Fiscal no se puede cancelar. El SAT no especifica bajo que criterios puede ocurrir este código, pero no es frecuente. No Consultar directamente en el SAT en Asistencia al Contribuyente el motivo por el que no se autoriza la cancelación del comprobante. Reachcore no puede hacer nada al respecto.
    205 UUID No existe El SAT todavía no publica en su portal de internet el comprobante, y por lo tanto aún no puede ser cancelado. Si Asegurar que el comprobante ya está entregado al SAT y re-intentar la cancelación.
    206 UUID no corresponde a un CFDI del Sector Primario El folio fiscal que se envió a cancelar no corresponde a un UUID de Sector Primario. No Asegurar que el folio fiscal proporcionado pertenezca a un CFDI de Sector Primario.
    207 No se especificó el motivo de cancelación o el motivo no es valido Ocure cuando se utiliza el motivo 01 (Comprobantes emitidos con errores con relación), y el Folio Sustitución no cumple con la estructura establecida o bien, se esta indicando el mismo folio del CFDI a cancelar. No Revisar el formato del UUID que se envía en el Folio Sustitución y verificar que el UUID esté en mayúsculas y que sea distinto al del UUID que se intenta cancelar.
    208 La fecha de solicitud de cancelación es mayor a la fecha de declaración del comprobante La fecha de emisión del folio fiscal excede la fecha de cancelación permitida para el periodo de declaración anual del ejercicio al que pertenece el comprobante. No En la RMF para 2022, que entró en vigor el 01 de enero de 2022, se establece el plazo para la cancelación de CFDI por medio de la regla 2.7.1.47., y en ésta se establece que la cancelación de los CFDI se podrá efectuar a más tardar en el mes en el cual se deba presentar la declaración anual del ISR correspondiente al ejercicio fiscal en el cual se expidió el citado comprobante.
    209 Folio Sustitución no requerido La petición de cancelación envió un motivo de cancelación que no requiere de un Folio de Sustitución. No Modificar la petición de cancelación para no especificar el folio de sustitución.
    211 La fecha de solicitud de cancelación límite para factura global La factura global que se intenta cancelar está en la fecha límite para su cancelación. No
    212 Relación no valida o inexistente La petición de cancelación no tiene una relación o bien: la relación que se especificó no es valida. No Revisar la petición de cancelación y volver a intentar.

    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