Cancelación con motivo de cancelación para CFDI

Este servicio permite solicitar la cancelación de uno o varios CFDI al SAT. Recordando siempre que el que el SAT reciba la petición de cancelación no significa que se llevará a cabo la cancelación.

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 del CFDI.

La Cancelación de CFDI puede ser ejecutada por el contribuyente directamente en el portal de factura electrónica del SAT, o a través de un PAC como Sovos Reachcore. Con la reforma al Código Fiscal de la Federación (CFF) para 2017 se modificó el artículo 29-A, con el cual se habilita a los contribuyentes receptores del CFDI para que sean informados de la solicitud de cancelación y estén en posibilidad de aceptar o rechazar las solicitudes de cancelación.

Bajo este esquema las cancelaciones ya no pueden ser síncronas, es decir, cuando hay una solicitud de cancelación se debe llevar a cabo una consulta de estado del CFDI que se solicitó cancelar para poder saber si el receptor aceptó la cancelación o si el CFDI que se solicitó cancelar estuvo en uno de los supuestos para no solicitar al receptor la autorización de la cancelación. Los escenarios para este supuesto son:

  • Cuando la cancelación se realice dentro de las 24 horas siguientes a su expedición
  • Se trate de un CFDI de Egreso (sin relaciones)
  • Se trate de un CFDI de Nómina (sin relaciones)
  • Se trate de un CFDI de Traslado (sin relaciones)
  • Se trate de un CFDI de Retenciones e Información de Pagos
  • CFDI de residentes en el extranjero, para efectos fiscales conforme a la regla 2.7.1.26
  • CFDI de Ingresos expedidos en operaciones con el público general, según la regla 2.7.1.24.
  • CFDI de Ingresos expedidos a contribuyentes del RIF
  • CFDI de Ingresos por un monto de hasta $1,000.00 MXN

Para que el SAT de trámite a una solicitud de cancelación, se debe de cumplir con lo siguiente:

  • La solicitud de cancelación del UUID (folio fiscal), este firmada electrónicamente con el certificado de sello digital (CSD) del emisor.
  • El UUID (folio fiscal) debe pertenecer al emisor del comprobante.
  • Se debe proporcionar el motivo por el que se lleva a cabo la cancelación.
    • En caso de que se proporcione como motivo la clave 01 "Comprobante emitido con errores con relación", deberá relacionarse el folio fiscal del comprobante que sustituye al cancelado.

Cancelación desconectada (asíncrona)

En esta modalidad, el contribuyente solicita a Sovos Reachcore llevar a cabo el trámite de cancelación de hasta de 2,000 folios en una sola operación. El resultado de esta operación será un identificador de seguimiento con el que se podrá consultar en cualquier momento el progreso de la entrega de folios fiscales al SAT.

Requisitos para cancelar un CFDI

Para realizar la cancelación de un folio fiscal de un CFDI es necesario contar con lo siguiente:

  • El folio fiscal (UUID)
  • El RFC del Emisor del comprobante o comprobantes a cancelar. Estos datos pueden ser extraídos del CFDI, ya sea del documento XML o de la representación impresa PDF.
  • El Certificado de Sello Digital (CSD) vigente del RFC emisor del comprobante.

    El CSD generalmente consta de tres partes:

    1. El Certificado, que es un archivo con extensión .cer
    2. La llave privada, que es un archivo con extensión .key
    3. y la contraseña de la llave privada.

Para obtener un certificado de sello digital (CSD) del SAT, consulta el sitio del SAT para generar una Solicitud para tu Certificado de Sello Digital para emitir facturas.

Integración

Existen dos medios de integración para hacer enviar las solicitudes de cancelación a Sovos 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 indicando motivo de cancelación. El archivo puede enviarse vía SFTP o cargándolo en el portal de Sovos Reachcore.

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

Web Service de Cancelación.

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

  • Cancelación desconectada
  • Cancelación con firma de origen.

¿Qué necesito?

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

  • Contar con un contrato de servicios con Sovos Reachcore. En caso de no tener uno, por favor envía un correo a sales-mexico@sovos.com
  • Haber generado un API Key en tu cuenta Sovos Reachcore, ya que es un identificador que te autentica en los Servicios Web de la plataforma. Para consultar como generar el API Key, consulta este artículo: Generar API Key para Web Services.

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/Cancelacion.svc/basic?singleWsdl
Producción https://go.reachcore.com/api/ws/6.0/pacservices/Cancelacion.svc/basic?singleWsdl


Método [Cancelar]: Cancelación desconectada

En este método del Web Service, se puede recibir una lista de hasta 2,000 folios fiscales a cancelar. Para poder utilizar este método, se requiere que el CSD este registrado en Sovos Reachcore para firmar la solicitud de cancelación. Este es un método de cancelación desconectada por lo que es requerida una segunda petición para saber el estado de la cancelación.

Solicitud Cancelar

Elemento Uso Descripción
ApiKey Requerido Identificador de autenticación, que se genera en el portal de Reachcore.
RFC Requerido Indica la clave en el RFC del dueño de los folios fiscales y se relaciona con el CSD con el que se llevará a cabo la firma electrónica de la solicitud de cancelación.
Folios Requerido Arreglo de CancelFolio:
  • UUID (requerido): Folios fiscales de los comprobantes a cancelar. Cada folio fiscal 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
  • Reason (requerido): Motivo de la cancelación del Folio Fiscal
  • UUIDSubstitute (condicional): Proporciona el folio fiscal que sutituye al folio fiscal al que se está solicitando la cancelación. Es requerido si el motivo de cancelación usa la clave 01
  • Total (opcional): Permite especificar el Total del Comprobante para poder consultar el estado del comprobante en el SAT
  • RecipientRFC (opcional): Permite especificar la clave en el RFC del Receptor del Comprobante para poder consultar su estado ante el SAT.


Ejemplo de Solicitud de Cancelación

<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>7F3FA21M61.....19E42D72E3</cus:ApiKey>
   </soapenv:Header>
   <soapenv:Body>
      <urn:CancelacionFiscalRequest>
         <urn:RFC>AAA010101AAA</urn:RFC>
         <urn:Folios>
            <urn:CancelFolio>
               <urn:UUID>d6855812-af48-4e8f-b30e-3dcb8bd0b40d</urn:UUID>
               <urn:Reason>02</urn:Reason>
            </urn:CancelFolio>
         </urn:Folios>
      </urn:CancelacionFiscalRequest>
   </soapenv:Body>
</soapenv:Envelope>

Catálogo de motivos de cancelación

Clave Descripción
01 Comprobante emitido con errores con relación
02 Comprobante emitido con errores sin relación
03 No se llevó a cabo la operación
04 Operación nominativa relacionada en una factura global

Ejemplo de Respuesta de Cancelación

Elemento Descripción
Error En caso que el elemento OnError 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.
OnError
  • false: Transacción exitosa.
  • true: Error al procesarse la transacción.
  • TrackingId Identificador de seguimiento de la operación. En caso de necesitar soporte se debe proporcionar este valor.


    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">
          <CancelacionFiscalResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
             <OnError>false</OnError>
             <TrackingId>73cce105-aaa6-44ad-9d4e-01de09898b1c</TrackingId>
          </CancelacionFiscalResponse>
       </s:Body>
    </s:Envelope>

    Método [CancelarSolicitudFirmada]: Cancelación con firma de origen

    Este método se utiliza para solicitar la cancelación del(los) folios fiscales para CFDI; sin embargo, cuando no es posible registrar el CSD en Sovos Reachcore, el XML de la solicitud de cancelación firmado con el CSD del emisor es enviado en la solicitud de este método, conforme a lo definido por el SAT para la solicitud de cancelación. La respuesta de esta operación es idéntica a la del método Cancelar.

    Ejemplo de Solicitud de Cancelación con firma de Origen

    Elemento Uso Descripción
    ApiKey Requerido Identificador de autenticación, que se genera en el portal de Reachcore.
    SignedApplication Requerido XML con la solicitud de cancelación conforme lo especificado por el SAT en Anexo 20, indicando el o la lista de folios fiscales de los comprobantes a cancelar, el RFC del emisor, la hora de la operación y el motivo de cancelación. Este XML debe ser firmado electrónicamente con la llave privada del emisor. Para referencia del firmado consultar: ¿Cómo firmar una solicitud de cancelación con la llave privada del emisor?
    UUIDs Opcional Arreglo del objeto FoliosToQuery donde, si se usa el arreglo FoliosToQuery, se deben reportar los siguientes datos:
    • UUID (requerido): Para uso futuro. Folio fiscal del comprobante a cancelar y que fue incluido en el XML firmado
    • RecipientRFC (requerido): Para uso futuro. Permite especificar la clave en el RFC del Receptor del Comprobante para poder consultar su estado ante el SAT.
    • Total (requerido): Para uso futuro. Permite especificar el Total del Comprobante para poder consultar el estado del comprobante en el SAT
    TransactionProperties Opcional Arreglo que indicará a Reachcore cómo procesar la petición. En este momento no hay Transaction Properties soportados para el método de cancelación con firma de origen.


    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>7F3FA21M61.....19E42D72E3</cus:ApiKey>
       </soapenv:Header>
       <soapenv:Body>
          <urn:CancelarSolicitudFirmadaRequest>
             <urn:SignedApplication><![CDATA[<Cancelacion Fecha="2022-01-06T20:00:00" RfcEmisor="EKU9003173C9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://cancelacfd.sat.gob.mx"><Folios><Folio UUID="7E57607A-AB62-4E34-90AF-D5FA73221BE1" Motivo="01" FolioSustitucion="48318D72-8AA0-4497-8081-0DA3D8B6BB9D" /></Folios><Folios><Folio UUID="F96052BF-1EF7-48FE-9836-0B2CBD6F7C0D" Motivo="03" /></Folios><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>vBJlbXR9xVDB1TxZ77B6DLaRMDg=</DigestValue></Reference></SignedInfo><SignatureValue>hTiPnWZTWGW6Z4emZMvUkVpZ0VechiTvrAxuaSgpqKXlBiyTSN44e1O2uKUcEomlANwOQM5UcQVKuO80HaiiOyC/X5t4c3fefQrP086dD/q8TryV3cSQKP/iRvdEHi/wtL0u0ylhARud4kS1/bDn0q5If4NKox6KLM4O/M4ReMHTUErpVyzXHGMzO7kRONyf7vPDtG46ap+rhu6Ien8DxgZCOHFF7cXy0zTqsKHCMhOoWG95s0HnJ6OVPqOFiqvwIBviWKKtNInN6dH/h1hVYCH8jWoorbK89TSOQLoktkonxvrkl267Tq+wiIwHZnDo6srLTDjkWqbeL9WFjpcjRQ==</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>OID.1.2.840.113549.1.9.2=responsable: ACDMA-SAT, OID.2.5.4.45=2.5.4.45, L=COYOACAN, S=CIUDAD DE MEXICO, C=MX, PostalCode=06370, STREET=3ra cerrada de cadiz, E=oscar.martinez@sat.gob.mx, OU=SAT-IES Authority, O=SERVICIO DE ADMINISTRACION TRIBUTARIA, CN=AC UAT</X509IssuerName><X509SerialNumber>292233162870206001759766198444326234574038512436</X509SerialNumber></X509IssuerSerial><X509Certificate>MIIFuzCCA6OgAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDI0MzQwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNjE3MTk0NDE0WhcNMjMwNjE3MTk0NDE0WjCB4jEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gWElRQjg5MTExNlFFNDEeMBwGA1UEBRMVIC8gWElRQjg5MTExNk1HUk1aUjA1MR4wHAYDVQQLExVFc2N1ZWxhIEtlbXBlciBVcmdhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCN0peKpgfOL75iYRv1fqq+oVYsLPVUR/GibYmGKc9InHFy5lYF6OTYjnIIvmkOdRobbGlCUxORX/tLsl8Ya9gm6Yo7hHnODRBIDup3GISFzB/96R9K/MzYQOcscMIoBDARaycnLvy7FlMvO7/rlVnsSARxZRO8Kz8Zkksj2zpeYpjZIya/369+oGqQk1cTRkHo59JvJ4Tfbk/3iIyf4H/Ini9nBe9cYWo0MnKob7DDt/vsdi5tA8mMtA953LapNyCZIDCRQQlUGNgDqY9/8F5mUvVgkcczsIgGdvf9vMQPSf3jjCiKj7j6ucxl1+FwJWmbvgNmiaUR/0q4m2rm78lFAgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBCwUAA4ICAQBcpj1TjT4jiinIujIdAlFzE6kRwYJCnDG08zSp4kSnShjxADGEXH2chehKMV0FY7c4njA5eDGdA/G2OCTPvF5rpeCZP5Dw504RZkYDl2suRz+wa1sNBVpbnBJEK0fQcN3IftBwsgNFdFhUtCyw3lus1SSJbPxjLHS6FcZZ51YSeIfcNXOAuTqdimusaXq15GrSrCOkM6n2jfj2sMJYM2HXaXJ6rGTEgYmhYdwxWtil6RfZB+fGQ/H9I9WLnl4KTZUS6C9+NLHh4FPDhSk19fpS2S/56aqgFoGAkXAYt9Fy5ECaPcULIfJ1DEbsXKyRdCv3JY89+0MNkOdaDnsemS2o5Gl08zI4iYtt3L40gAZ60NPh31kVLnYNsmvfNxYyKp+AeJtDHyW9w7ftM0Hoi+BuRmcAQSKFV3pk8j51la+jrRBrAUv8blbRcQ5BiZUwJzHFEKIwTsRGoRyEx96sNnB03n6GTwjIGz92SmLdNl95r9rkvp+2m4S6q1lPuXaFg7DGBrXWC8iyqeWE2iobdwIIuXPTMVqQb12m1dAkJVRO5NdHnP/MpqOvOgLqoZBNHGyBg4Gqm4sCJHCxA1c8Elfa2RQTCk0tAzllL4vOnI1GHkGJn65xokGsaU4B4D36xh7eWrfj4/pgWHmtoDAYa8wzSwo2GVCZOs+mtEgOQB91/g==</X509Certificate></X509Data></KeyInfo></Signature></Cancelacion>]]></urn:SignedApplication>
          </urn:CancelarSolicitudFirmadaRequest>
       </soapenv:Body>
    </soapenv:Envelope>

    Acerca de la sección opcional UUIDs

    La sección de UUIDs servirá para permitir a Reachcore la consulta de estado de los folios fiscales que se enviaron a cancelar. Esta funcionalidad se incorporará próximamente en la plataforma y permitirá obtener detalle de los folios fiscales que se solicitó cancelar por medio del método de GetTransactionStatus. Si se usa esta sección opcional, se espera que se proporcione detalle de los 3 atributos solicitados: UUID para vincular la información del RFC Receptor y del Total con el folio fiscal que se solicitó cancelar. Si falta alguno de estos datos: no se podrá llevar a cabo la consula de estado.

    Ejemplo de Respuesta de Cancelación con firma de origen

    Elemento Descripción
    Error En caso que el elemento OnError tenga el valor true, se mostrara la descripción del error por medio de una estructura XML con los nodos Code y Message
    OnError
  • false: Transacción exitosa.
  • true: Error al procesarse la transacción.
  • TrackingId En caso que el elemento OnError tenga el valor false, se mostrara un identificador de seguimiento de la operació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">
          <CancelarSolicituFirmadaResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
             <OnError>false</OnError>
             <TrackingId>68818c13-ac25-4367-8713-5e6ac7fe8234</TrackingId>
          </CancelarSolicituFirmadaResponse>
       </s:Body>
    </s:Envelope>

    Método [GetFolioStatusDetail]: Obtener el estado de un Folio Fiscal que fue enviado previamente a cancelar

    En este método, se podrá conocer el estado de un Comprobante previamente certificado por Reachcore y que haya tenido una solicitud de cancelación ya sea por el Servicio Web o por archivo de integración.

    Ejemplo de Solicitud de Estado de un Folio Fiscal

    Elemento Uso Descripción
    ApiKey Requerido Identificador de autenticación, que se genera en el portal de Sovos Reachcore.
    UUID Requerido Folio fiscal del comprobante a consultar.

    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>51e9d1097f634f20b....9e405d933f769303391008</cus:ApiKey>
       </soapenv:Header>
       <soapenv:Body>
          <urn:FolioStatusRequest>
             <urn:UUID>3895094A-5681-4363-8C4A-BE15A17200AA</urn:UUID>
          </urn:FolioStatusRequest>
       </soapenv:Body>
    </soapenv:Envelope>

    Ejemplo de Respuesta a Solicitud de Estado de un Folio Fiscal

    Elemento Descripción
    OnError
    (requerido)
  • false: Transacción exitosa.
  • true: Error al procesarse la transacción.
  • Error
    (condicional)
    En caso que el elemento Error tenga el valor true, se mostrara la descripción del error.
    SatSentRequest
    (requerido)
  • 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.
  • UUID
    (requerido)
    El Folio Fiscal del que se entrega detalle
    UUIDStatus
    (opcional)
    Estructura donde se proporciona una lista con:
    • StatusCode para indicar el Código de Estatus del comprobante en el SAT. Posibles valores: S (Comprobante obtenido satisfactoriamente) y N (Comprobante no encontrado)
    • IsCancellable para indicar si el Comprobante es cancelable o no (y si requiere aceptación o no)
    • State para indicar el estado del Comprobante en el SAT: No encontrado, Vigente o Cancelado
    • CancellationStatus para indicar el estado de la petición de cancelación.
    • QueryDate timestamp para indicar cuándo se hizo la última consulta de estado.
    RelatedUUIDs
    (opcional)
    Estructura FolioFiscalDetail, 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">
          <FolioStatusResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
             <OnError>false</OnError>
             <SatSentRequest>true</SatSentRequest>
             <ResultCode>202</ResultCode>
             <ResultMessage>Petición de cancelación recibida anteriormente.</ResultMessage>
             <UUID>3895094A-5681-4363-8C4A-BE15A17200AA</UUID>
             <UUIDStatus>
                <StatusCode>S - Comprobante obtenido satisfactoriamente.</StatusCode>
                <IsCancellable>Cancelable con aceptación</IsCancellable>
                <State>Cancelado</State>
                <QueryDate>2021-12-27T18:00:00</QueryDate>
             </UUIDStatus>
             <RelatedUUIDs/>
          </FolioStatusResponse>
       </s:Body>
    </s:Envelope>
    <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">
          <FolioStatusResponse 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>74e4b36d-e4b5-4ee2-9e5b-64c5362dd56e</UUID>
             <UUIDStatus>
                <State>SIN ELEMENTOS PARA LLEVAR A CABO LA CONSULTA EN EL SAT</State>
                <QueryDate>0001-01-01T00:00:00</QueryDate>
             </UUIDStatus>
             <RelatedUUIDs/>
          </FolioStatusResponse>
       </s:Body>
    </s:Envelope>
    La fecha 0001-01-01 no es un error. Es el valor mínimo que se puede regresar para este campo requerido en la respuesta. Este valor será sustituido una vez que el proceso de consulta de estado inicie.

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

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

    Ejemplo de Solicitud de Estado de un lote de cancelación

    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>51e9d1097f634f20b.......406d9e405d933f769303391008</cus:ApiKey>
       </soapenv:Header>
       <soapenv:Body>
          <urn:TransactionStatusRequest>
             <urn:TrackingId>e6123fb8-723b-4d9a-8ff0-e4a69803e380</urn:TrackingId>
          </urn:TransactionStatusRequest>
       </soapenv:Body>
    </soapenv:Envelope>

    Ejemplo de Respuesta a Solicitud de Estado de lote de cancelación

    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 XML con los nodos Code y Message.
    TotalUUIDs Total de Folios fiscales que contenía el lote
    UUIDsSentToSAT Total de Folios fiscales distintos que tienen un acuse de recibido por parte del SAT.
    UUIDsRejectedSAT Total de Folios fiscales del lote de cancelación que no tienen un acuse de recibido por parte del SAT.
    Finished
    • true - indica si la transacción ya fue finalizada.
    • false - indica que la petición continua en proceso.
    UUIDs Arreglo del objeto FolioFiscalDetail, el cual está conformado por:
    • UUID: Folio Fiscal consultado
    • RequestSentToSAT: Indica si la solicitud de cancelación ya se envió al SAT.
    • UUIDStatus: Estructura con información de la consulta realizada al SAT:
      • ResultCode: Código de estado en el SAT.
      • ResultMessage: Si disponible, descripción del ResultCode según lo documentado en Anexo 20.
      Si Sovos Reachcore conoce el Total del comprobante y su RFC Receptor (por haber certificado el CFDI con el folio fiscal especificado en los últimos 6 meses), la respuesta también incluirá el nodo UUIDStatus en donde se mostrará la siguiente información:
      • StatusCode - Indica si el comprobante se encontró en el SAT.
      • IsCancellable - true si el SAT considera que es cancelable, false si se considera como no cancelable.
      • State - Estado del UUID en el SAT.
      • CancellationStatus - Estado de la cancelación.
      • QueryDate - Fecha de la última consulta que se hizo para consultar el estado del UUID en el SAT.


    Una lote queda en estado finalizado 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">
          <TransactionStatusResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
             <OnError>false</OnError>
             <TotalUUIDs>5</TotalUUIDs>
             <UUIDsSentToSAT>5</UUIDsSentToSAT>
             <UUIDsRejectedSAT>0</UUIDsRejectedSAT>
             <Finished>true</Finished>
             <UUIDs>
                <FolioFiscalDetail>
                   <UUID>17ed0948-a4ae-4ebd-b581-522bbc800e73</UUID>
                   <RequestSentToSAT>true</RequestSentToSAT>
                   <ResultCode>202</ResultCode>
                   <ResultMessage>Petición de cancelación recibida anteriormente.</ResultMessage>
                   <UUIDStatus>
                      <StatusCode>S - Comprobante obtenido satisfactoriamente.</StatusCode>
                      <IsCancellable>Cancelable sin aceptación</IsCancellable>
                      <State>Cancelado</State>
                      <CancellationStatus>Cancelado sin aceptación</CancellationStatus>
                      <QueryDate>2022-01-31T19:29:27.367</QueryDate>
                   </UUIDStatus>
                </FolioFiscalDetail>
                <FolioFiscalDetail>
                   <UUID>19d18962-e614-4c7a-8a7c-80bd9e0d2af6</UUID>
                   <RequestSentToSAT>true</RequestSentToSAT>
                   <ResultCode>202</ResultCode>
                   <ResultMessage>Petición de cancelación recibida anteriormente.</ResultMessage>
                   <UUIDStatus>
                      <StatusCode>S - Comprobante obtenido satisfactoriamente.</StatusCode>
                      <IsCancellable>Cancelable sin aceptación</IsCancellable>
                      <State>Cancelado</State>
                      <CancellationStatus>Cancelado sin aceptación</CancellationStatus>
                      <QueryDate>2022-01-31T19:29:26.817</QueryDate>
                   </UUIDStatus>
                </FolioFiscalDetail>
                <FolioFiscalDetail>
                   <UUID>1b640b2d-e218-4230-b309-e25d1c2404c0</UUID>
                   <RequestSentToSAT>true</RequestSentToSAT>
                   <ResultCode>202</ResultCode>
                   <ResultMessage>Petición de cancelación recibida anteriormente.</ResultMessage>
                   <UUIDStatus>
                      <StatusCode>S - Comprobante obtenido satisfactoriamente.</StatusCode>
                      <IsCancellable>Cancelable sin aceptación</IsCancellable>
                      <State>Cancelado</State>
                      <CancellationStatus>Cancelado sin aceptación</CancellationStatus>
                      <QueryDate>2022-01-31T19:29:27.083</QueryDate>
                   </UUIDStatus>
                </FolioFiscalDetail>
                <FolioFiscalDetail>
                   <UUID>1ca30c9c-3a38-47bc-b399-ebd4596516a1</UUID>
                   <RequestSentToSAT>true</RequestSentToSAT>
                   <ResultCode>201</ResultCode>
                   <ResultMessage>Petición de cancelación recibida</ResultMessage>
                   <UUIDStatus>
                      <StatusCode>S - Comprobante obtenido satisfactoriamente.</StatusCode>
                      <IsCancellable>Cancelable sin aceptación</IsCancellable>
                      <State>Cancelado</State>
                      <CancellationStatus>Cancelado sin aceptación</CancellationStatus>
                      <QueryDate>2022-01-31T19:29:26.223</QueryDate>
                   </UUIDStatus>
                </FolioFiscalDetail>
                <FolioFiscalDetail>
                   <UUID>1f82ee83-3860-4e35-81e5-6a24401cb693</UUID>
                   <RequestSentToSAT>true</RequestSentToSAT>
                   <ResultCode>201</ResultCode>
                   <ResultMessage>Petición de cancelación recibida</ResultMessage>
                   <UUIDStatus>
                      <StatusCode>S - Comprobante obtenido satisfactoriamente.</StatusCode>
                      <IsCancellable>Cancelable sin aceptación</IsCancellable>
                      <State>Cancelado</State>
                      <CancellationStatus>Cancelado sin aceptación</CancellationStatus>
                      <QueryDate>2022-01-31T19:29:28.197</QueryDate>
                   </UUIDStatus>
                </FolioFiscalDetail>
             </UUIDs>
          </TransactionStatusResponse>
       </s:Body>
    </s:Envelope>


    El proceso de cancelación tiene dos fases: Enviar la petición de cancelación al SAT y si se tiene la información para hacer la consulta de estado: Realizar la consulta de estado en el SAT. El elemento Finished con valor true indica que el servicio de cancelación ha terminado el proceso de enviar la petición de cancelación y los intentos de obtener el estado en el SAT de los Comprobantes en el lote. Mientras se está en el proceso de cancelación, una consulta de estado al lote de cancelación se verá de la siguiente forma:

    <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">
        <TransactionStatusResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
          <OnError>false</OnError>
          <TotalUUIDs>1</TotalUUIDs>
          <UUIDsSentToSAT>0</UUIDsSentToSAT>
          <UUIDsRejectedSAT>1</UUIDsRejectedSAT>
          <Finished>false</Finished>
          <UUIDs>
            <FolioFiscalDetail>
              <UUID>0952bfa9-ae90-4c01-a7a9-ba19698cfcd8</UUID>
              <RequestSentToSAT>true</RequestSentToSAT>
              <ResultCode>201</ResultCode>
              <ResultMessage>Petición de cancelación recibida</ResultMessage>
              <UUIDStatus>
                <State>EN PROCESO DE CONSULTA DE ESTADO EN EL SAT</State>
                <CancellationStatus>DESCONOCIDO</CancellationStatus>
                <QueryDate>0001-01-01T00:00:00</QueryDate>
              </UUIDStatus>
            </FolioFiscalDetail>
          </UUIDs>
        </TransactionStatusResponse>
      </s:Body>
    </s:Envelope>
    La fecha 0001-01-01 no es un error. Es el valor mínimo que se puede regresar para este campo requerido en la respuesta. Este valor será sustituido una vez que el proceso de consulta de estado inicie.

    Si Sovos Reachcore no tiene los elementos para hacer la consulta de estado, la respuesta se verá de la siguiente forma:

    <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">
        <TransactionStatusResponse xmlns="urn:reachcore.com:services:api:ws:pacservices:6.0">
          <OnError>false</OnError>
          <TotalUUIDs>1</TotalUUIDs>
          <UUIDsSentToSAT>0</UUIDsSentToSAT>
          <UUIDsRejectedSAT>1</UUIDsRejectedSAT>
          <Finished>false</Finished>
          <UUIDs>
            <FolioFiscalDetail>
              <UUID>054d6de1-5b86-42db-a475-c748f3bbba38</UUID>
              <RequestSentToSAT>true</RequestSentToSAT>
              <ResultCode>201</ResultCode>
              <ResultMessage>Petición de cancelación recibida</ResultMessage>
              <UUIDStatus>
                <State>SIN ELEMENTOS PARA LLEVAR A CABO LA CONSULTA EN EL SAT</State>
                <QueryDate>0001-01-01T00:00:00</QueryDate>
              </UUIDStatus>
            </FolioFiscalDetail>
          </UUIDs>
        </TransactionStatusResponse>
      </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 la siguiente tabla se describen los códigos de status conocidos y sus significados.

    A partir del 1 de noviembre de 2018 entró en vigor el nuevo esquema de cancelación en donde el Receptor debe autorizar la cancelación de los Comprobantes que recibe. Puedes obtener más información acerca de este nuevo esquema de cancelación en nuestro Blog, o bien en el sitio del SAT
    A partir del 1 de enero de 2022 entró en vigor el nuevo esquema de cancelación en donde se debe proporcionar el motivo de la cancelación, y si aplica: el folio fiscal que sustituye al que se está cancelando. Las claves de error que se tenían no cambian, pero se agregan nuevas para soportar los escenarios de error por uso de una clave de motivo de cancelación invalida, y error por tratar de relacionar un CFDI que no tiene relación con el que se está solicitando cancelar.
    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.
    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. Sovos Reachcore no puede hacer nada al respecto.
    205 UUID No existente 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.
    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.
    301 XML mal formado El XML de solicitud que se envió al SAT no está correctamente formado. Sólo relevante para el método de cancelación en línea con solicitud firmada de origen. No Verificar que la solicitud de cancelación fue creada de acuerdo a la especificación del SAT.
    302 Sello mal formado o inválido El Sello que se usó para generar la solicitud de cancelación es incorrecto. No Verificar la solicitud de cancelación con firma de origen que fue entregada a Reachcore.
    303 Sello no corresponde a emisor El certificado de sello digital (CSD) con el que se firmó la solicitud no corresponde al RFC del Emisor del CFDI. No Verificar que el certificado de sello digital corresponde al RFC Emisor del comprobante.
    304 Sello revocado o caduco El certificado de sello digital con el que se firmó la solicitud de cancelación ha sido revocado o no esta vigente. No Solicitar al SAT un nuevo certificado de sello digital y volver a solicitar la cancelación con este nuevo certificado.
    305 Certificado inválido No se está usando para firmar la solicitud de cancelación un certificado expedido por el SAT No Verificar que el certificado de sello digital este expedido por el SAT para el RFC emisor del comprobante y volver a solicitar la cancelación con dicho certificado.
    310 Uso de certificado e.firma inválido Se está usando un certificado de e.firma en vez de un Certificado de Sello Digital (CSD) No Firmar nuevamente la petición de cancelación que se entrega a reachcore por el método de firma de origen con un CSD.
    311 Clave de motivo de cancelación no válida La clave proporcionada en el atributo MotivoCancelacion no es valida de acuerdo a los valores permitidos. No Revisar que la clave que se proporcionó esté entre los valores 01, 02, 03, o 04.
    312 UUID no relacionado de acuerdo a la clave de motivo de cancelación El UUID que se proporcionó como Folio que Sustituye no está relacionado al UUID que se solicitó cancelar. No Revisar la relación que hay entre el CFDI que sustituye y el que se está solicitando cancelar.


    Para mayor información o aclaración de dudas relacionadas con esta guía de implementación con el servicio de Cancelación, por favor envía un correo a MEX-soporte@sovos.com. También puedes consultar las preguntas frecuentes de cancelación en la siguiente liga: Preguntas frecuentes cancelación

    Preguntas Frecuentes

    1. ¿Qué hacer si mi RFC tiene caracteres especiales como el &?

    A diferencia del servicio de emisión, en donde el XML se encapsula con un ensobretado CDATA, el RFC en este método viaja sin este ensobretado, por lo que se deben usar secuencias de escape cuando en los valores especificados dentro del nodo RFC exista algún caso especial.
    En el caso del caracter & se debe usar la secuencia &amp; de manera que si el RFC es &&&010101000, se tendría que enviar como &amp;&amp;&amp;010101000

    2. Presento inconsistencias en el servicio de cancelación de CFDI al utilizar el motivo de cancelación "01"

    En algunas ocasiones la autoridad presenta inconsistencias en las cancelaciones que usan el motivo de cancelación 01 (Comprobantes emitidos con errores con relación) en donde peticiones de cancelación se procesas conforme a lo definido y en ocasiones no. Al respecto la autoridad nos comparte lo siguiente:

    1. Se deberán cancelar los CFDI que se encuentren relacionados al comprobante que se desea cancelar, incluyendo el CFDI que los sustituye, utilizando el motivo de cancelación 02 (Comprobantes emitidos con errores sin relación).
    2. Posteriormente, se realizará la solicitud de cancelación del CFDI referido, registrando la clave 02 (Comprobantes emitidos con errores sin relación).
    3. Una vez cancelados los comprobantes señalados en los pasos 1 y 2, emite un nuevo comprobante con la información correcta y la clave de tipo relación 04 sustitución de CFDI previos relacionando el folio fiscal del comprobante que se sustituye.

    Preguntas frecuentes y escenarios de cancelación conforme a la Reforma Fiscal 2022

    El siguiente es un extracto de las preguntas y respuestas que están publicados en el PDF denominado "Preguntas frecuentes y escenarios de cancelación conforme a la Reforma Fiscal 2022" publicado en el portal del SAT por medio de la página Actualización factura electrónica – Reforma Fiscal 2022 por medio de la sección de Contenidos Relacionados Publicado en diciembre de 2021.

    1.- Si emití una factura o CFDI con la versión 3.3, al solicitar la cancelación ¿es necesario indicar el motivo de cancelación o solo aplica para la versión 4.0?

    A partir del 1 de enero de 2022 será requerido señalar el motivo por el cual se cancela el comprobante, esto aplica a todas las versiones de la factura o CFDI.
    Fundamento legal: Artículo 29-A sexto párrafo del Código Fiscal de la Federación.

    2.- ¿En qué casos se deberá seleccionar como motivo de cancelación la opción "01" Comprobante emitido con errores con relación?

    Este supuesto aplica cuando la factura generada contiene un error en la clave del producto, valor unitario, descuento o cualquier otro dato, por lo que se debe reexpedir. En este caso, primero se sustituye la factura y cuando se solicita la cancelación, se incorpora el folio de la factura que sustituye a la cancelada.

    3.- ¿En qué casos se deberá seleccionar como motivo de cancelación la opción "02" Comprobante emitido con errores sin relación?

    Este supuesto aplica cuando la factura generada contiene un error en la clave del producto, valor unitario, descuento o cualquier otro dato y no se requiera relacionar con otra factura generada.

    4.- ¿En qué casos se deberá seleccionar como motivo de cancelación la opción "03" No se llevó a cabo la operación?

    Este supuesto aplica cuando se facturó una operación que no se concreta.

    5.- ¿En qué casos se deberá seleccionar como motivo de cancelación la opción "04" Operación nominativa relacionada en la factura global?

    Este supuesto aplica cuando se incluye una venta en la factura global de operaciones con el público en general y posterior a ello, el cliente solicita su factura nominativa, lo que conlleva a cancelar la factura global y reexpedirla, así como generar la factura nominativa al cliente.

    6.- Emití una factura, pero mi cliente me pide cancelarla por errores en la descripción, ¿cómo debo realizar la cancelación de dicho comprobante?

    Al momento de realizar la solicitud de cancelación, sigue estos pasos:

    1. Deberás emitir el comprobante que contiene los datos correctos y registrar la clave "04" (Sustitución de los CFDI previos) relacionando el folio fiscal del comprobante que se sustituye.
    2. Podrás realizar la solicitud de cancelación ingresando a sat.gob.mx, en el servicio Cancela y recupera tus facturas, o bien, a través de los servicios de un PAC (Proveedor de Certificación Autorizado).
    3. Al registrar la solicitud de cancelación deberás seleccionar la opción "01" Comprobante emitido con errores con relación e incluir el folio fiscal del comprobante emitido en el paso 1.
    4. Al enviar tu solicitud de cancelación se validará si se requiere la aceptación del receptor para llevar a cabo la cancelación.

    Fundamento legal: Artículo 29-A sexto párrafo del Código Fiscal de la Federación

    7.- En caso de que se haya emitido una factura de una venta o de la prestación de un servicio el cual no se llevó a cabo, ¿qué motivo de cancelación se deberá señalar en la solicitud de cancelación correspondiente?

    El emisor de la factura deberá registrar la clave "03" No se llevó a cabo la operación en el apartado Motivo de cancelación.
    Fundamento legal: Artículo 29-A sexto párrafo del Código Fiscal de la Federación

    8.- Emití una factura con error en el RFC de mi cliente, la cual aún no ha sido entregada al mismo, ¿para cancelarla tendré que relacionarla primero a la factura que la sustituye?

    Se podrá realizar la solicitud de cancelación registrando en el apartado motivo de cancelación, la clave "02" (Comprobante emitido con errores sin relación).
    Posteriormente se deberá emitir el comprobante fiscal con los datos correctos y registrar la clave "04" (Sustitución de las facturas o CFDI previos) relacionando el folio fiscal del comprobante que se sustituye.
    Fundamento legal: Artículo 29-A sexto párrafo del Código Fiscal de la Federación

    9.- Mi cliente me solicita la factura de un producto que se encuentra relacionado en la factura global emitida por las operaciones con el público en general del periodo mensual, ¿qué debo hacer para emitir el comprobante solicitado?

    El emisor deberá solicitar la cancelación de la factura global y registrar como motivo de cancelación la clave "04" (Operación nominativa relacionada en la factura global).
    Posteriormente se deberá emitir el comprobante fiscal global sin considerar el comprobante de operaciones con el público en general de la operación que se factura de manera nominativa.
    Por último, se deberá generar la factura nominativa solicitada por el cliente.


    Regresar