Llama Gratis 800 788 0195

Método Cancelar_CFDI

Proceso de Cancelación

Como parte de los nuevos ajustes para la cancelación publicados en el portal del SAT, se debe considerar lo siguiente al momento de emitir o solicitar las cancelaciones de los comprobantes.

Cancelación del CFDI sin aceptación del receptor:

De acuerdo a la regla 2.7.1.39 de la Resolución Miscelánea Fiscal para el 2019, los contribuyentes podrán cancelar un CFDI sin que se requiera la aceptación por parte del receptor en los siguientes supuestos:

  • Que amparen ingresos por un monto de hasta $5,000.00 MXN.
  • Por concepto de nómina.
  • Por concepto de egresos.
  • Por concepto de traslado.
  • Por concepto de ingresos expedidos a contribuyentes del RIF.
  • Emitidos a través de la herramienta electrónica de “Mis cuentas” en el aplicativo “Factura Fácil”.
  • Que amparen retenciones e información de pagos.
  • Expedidos en operaciones realizadas con el público en general de conformidad con la regla 2.7.1.24.
  • Emitidos a residentes en el extranjero para efectos fiscales conforme a la regla 2.7.1.26.
  • A través del adquirente y sector primario (reglas 2.4.3 y 2.7.4.1 de la RMF).
  • Cuando la cancelación se realice dentro de los tres días siguientes a su expedición. *

*En ambiente de pruebas se considera 10 mins después de generado el CFDI.

Cancelación del CFDI con aceptación del receptor:

Los anteriores supuestos no son aplicables para la cancelación con aceptación.

Para realizar la cancelación, el receptor sólo contará con 3 días hábiles* una vez recibida la solicitud de cancelación para que se autorice o no dicho movimiento, en caso que el receptor no responda a la solicitud en el lapso de tiempo antes mencionado, la autoridad fiscal dará por aceptada la solicitud automáticamente.

*En ambiente de pruebas se considera 15 mins después de recibida la solicitud de cancelación

Cancelación del CFDI con documentos relacionados:

Si el CFDI contiene documentos relacionados, el emisor sólo podrá cancelarlo siempre y cuando cancelen los CFDI relacionados y en el mismo momento el CFDI origen y tenga estatus de proceso de cancelación igual a: “Cancelable con o sin aceptación”.


Enlaces al servicio

Consumo de créditos

Por cada petición de UUID a cancelar: 1 crédito (cuando se haga el uso del servicio cancelar_cfdi, consultar_peticiones_pendientes y procesar_respuesta y dicha petición de cancelación sea exitosa).

Petición al servicio

El servicio de “cancelar_cfdi” se utiliza para cancelar uno o varios comprobantes que ya fueron timbrados. Se requiere de usuario y contraseña para utilizar el servicio.

Parámetros de la petición

Nombre Descripción Requerido
username Usuario del web service.
password Contraseña del web service.
rfc_emisor El rfc que emitió el comprobante que desea cancelar.
folios Se manda un arreglo con uno o más objetos tipo folio, el cual debe contener los elementos UUID, rfc_receptor y total.
cert_pem El certificado, en formato pem, que corresponde al emisor del comprobante.
llave_pem La llave, en formato pem, que corresponde al emisor del comprobante.

Parámetros del nodo folios

Nombre Descripción Requerido
uuid Se manda el UUID del comprobante que se desea cancelar. El UUID debe cumplir con la expresión regular de UUIDs.
rfc_receptor El rfc que recibió el comprobante que desea cancelar.
total Total del comprobante.

Regex de UUIDs:

/^[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 de petición al servicio

A continuación mostramos un ejemplo de cómo debe ser construida la petición al servicio. 

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:WashOut">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:cancelar_cfdi soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <username xsi:type="xsd:string">AAA010101000</username>
         <password xsi:type="xsd:string">h6584D56fVdBbSmmnB</password>
         <rfc_emisor xsi:type="xsd:string">MISC491214B86</rfc_emisor>
         <folios xsi:type="urn:folios">
            <!--Zero or more repetitions:-->
            <folio xsi:type="urn:folio">
               <uuid xsi:type="xsd:string">02DBE20E-4DB3-43FF-9672-CEB903FBB5ED</uuid>
               <rfc_receptor xsi:type="xsd:string">IAD121214B34</rfc_receptor>
               <total xsi:type="xsd:string">1751.60</total>
            </folio>
         </folios>
         <cert_pem xsi:type="xsd:string">-----BEGIN CERTIFICATE-----
MIIFljCCA36gAwIBAgIUMzAwMDEwMDAwMDA0MDAwMDIzMzIwDQYJKoZIhvcNAQEL
BQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFE
TUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9y
aXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0w
GwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWRpejEOMAwGA1UEEQwFMDYzNzAxCzAJ
BgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhD
T1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3Bv
bnNhYmxlOiBBQ0RNQS1TQVQwHhcNMTkwNTI5MTg0NDU3WhcNMjMwNTI5MTg0NDU3
WjCBvTEgMB4GA1UEAxMXQ0VDSUxJQSBNSVJBTkRBIFNBTkNIRVoxIDAeBgNVBCkT
F0NFQ0lMSUEgTUlSQU5EQSBTQU5DSEVaMSAwHgYDVQQKExdDRUNJTElBIE1JUkFO
REEgU0FOQ0hFWjEWMBQGA1UELRMNTUlTQzQ5MTIxNEI4NjEbMBkGA1UEBRMSTUlT
QzQ5MTIxNE1DQ1JOQzAxMSAwHgYDVQQLExdDRUNJTElBIE1JUkFOREEgU0FOQ0hF
WjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJzAzSn5OeWoVfKCzpTu
dveHSAxa/cUNaooOUjrPJhWRsKKtYArZ67CDYZSbqbjIBwb3Dv6Agr1NHHbYT+h6
57rJOC3Zhmm4d4a05UoizZTDAtY5c3XAKpdKuJ2oggZuSR9H7mSQ1P3WfT5v3TRg
6xgEQwmMdb7v3C0AK1PTOKtjhjmne9NqhzrEHe3nfiWqX6Jn8Xt+lrPAz9k40BOW
JiPy9gMthAHPXgXYUMsmfFVYubcNXVIX+iElehL6j5Ain4/S+FBqqp0RvuEF6VfZ
iI5SuXlH69Rw7BwUcFjgv9hOmRc+vYeaasoqLmfF5Suk+6oEThvh2AO24yiq+1m3
scUCAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcN
AQELBQADggIBAJU0OG2EeLQWVVijpaOBFTyG3+KYCy+hJYyo6/hcUUCRFBAiNTb8
9tylUkRKpJ9p8digYLkeemmhOkP5UNnwpiy0nfgKDlNHX3BWWBC2X6vcHXF9fOMf
1CxYaDMhpqzHI+rNe+7E9GX+Y55Butk1RXGNbrprDkF4HKpc8rj1CtlyvmUjJJ9i
WCOyap8/k5NWn1LZA9WdB6JoA5DIX2M4GCkh67bHeNteog8W8DEtYAekkI7Ufe74
EI5e3NB3xLO2EZrmula5WEOpEGuvLdi9pqiYzSSabFB/xf1papyZYvKkWWiw6OOE
o5V2Z2EXd/sDAMWQhyJygHjUh2ajXQFfKI577omUQf346dlhJXi7PMk2N/26lvtJ
T5hYLyrbk5K9XiYBfJKkIedn9eoCZIxMH59J8ka2Q23rLnil1rw4l8kVZ9wAhGaz
eK4Nfzm38B81j6q38Gi7x5GaparrOr+bA5Brr2/e5mH8YGQXUPRNK4ag/N+KggnO
H/fHZBH0mKSJZoLhsizGXahcazzuEjqENXF/C+0QG8vuimEtyyCFzx4JzzB5G1i+
ZEhGMH7nkRSUf/8Rq8fN2u0SNYE5JEB4ipFaer2JGlRrzSMP5iNkCH2wxWphrMHR
WqVqx97PpM45nE0JcukvObw72TaKFhohQ2U6yMb/fqqP5p7C1Z5af38H
-----END CERTIFICATE-----</cert_pem>
         <llave_pem xsi:type="xsd:string">-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCcwM0p+TnlqFXy
gs6U7nb3h0gMWv3FDWqKDlI6zyYVkbCirWAK2euwg2GUm6m4yAcG9w7+gIK9TRx2
2E/oeue6yTgt2YZpuHeGtOVKIs2UwwLWOXN1wCqXSridqIIGbkkfR+5kkNT91n0+
b900YOsYBEMJjHW+79wtACtT0zirY4Y5p3vTaoc6xB3t534lql+iZ/F7fpazwM/Z
ONATliYj8vYDLYQBz14F2FDLJnxVWLm3DV1SF/ohJXoS+o+QIp+P0vhQaqqdEb7h
BelX2YiOUrl5R+vUcOwcFHBY4L/YTpkXPr2HmmrKKi5nxeUrpPuqBE4b4dgDtuMo
qvtZt7HFAgMBAAECggEAWsi/CgQxp/Sqcl2Xz2GcvRc4fw9j0fBHN9W7ghve7rcG
GfFXonE7s2sj5LGSxlXy2/HSWUuMbJ5wUdRN01L7So6nXsaQtkID15yE/z7Q2ctn
pTJ40EWPZTf9XDHvvFG7P8alJtFKygijWLno3yESh0JQoQMcXo0Ec3uZnF7Ef12j
5nOHas2f9VB6aqzSaMOLXH7ZgyTwon7KaFwAfhH8Pdo4cDvGYxxeNXkk61ve23eZ
OZhc5x7GNAPYUGftKbiA3bNPBArBgoEjcl5q0yyBjaxoF7IzwauA23E6UnVTJ80v
BtUKZuTPCpS5N64bfgdc/EpCkqUyegt9lpt+YVG7AQKBgQD1ENmACuiJQVawTVV1
7dBztT+1jinT6wOUfOnPftbukMpin2jHnI2+Bnxccl7kHQvdBCub7l2pu21He47M
AaCJCa61QIY2BumCw47+XK+ZD59EnxKxMrHK7kCsv8GPDi6b/uoY01K1U/XrQTXh
MbJKArMv5qnNfuVRCg1DkaHE8QKBgQCjvz2+SIOlaSSWeoI+B6CXWSM6wOhjqVAf
0jdBXqNcDQ7nVKHO1FXuVLlPsWYo8AjzyM4EaGybUzmxVdWXI4bYgyVWFhzNomoh
YfNctlGkpD3z5NlX9Vu5LwANECB5hCrJukhjAwJOit8QsqrBxRrKcwKsAFenBt6F
4latM1MqFQKBgQCxVrUeDEbD9E1IHV5HjYV4BeQJfMvV985KaK5FohLk5lAeWB7Z
u/dyWH0r5PO3/TD1iiwIldCfn+rvfIEULeU+5YvQy9WTSSM3pk5W0Tmc+IoXfUlo
gzfXktuoZscpv2iJKEm9F0dVwmFGEZVs1aqgFh4W/sNH2pkVMMHycHNw8QKBgHcp
vDgWs18TxiGQI+oaSN77amzeZ//m/j06ESYMRhu+EQN+Dobi9WoM1BLPycWu8QTg
NDT2/VqH1WtdSKPFoeM8hVZBn1JyiIOksaLdt0p2j/NGrniZQNfiAUqAWvGzoiPN
4dHUJcCcxTp0m1mKJDYCPoaHdUJC+Hs8PNGskTAFAoGBAKqSqHW9v7Xp8IMsD0+j
KFKtyYVpvpgXWEcnFkr7YMlT3IddmF8MksifUnafMrfHD3sYTEkDjCHvQr8L6T5d
LIJz64Ohlo/kd/Sv7GkuuAAhDjNb/IXkRGfJCedEFpdUj4pDBwFhV9iDWlVG1AlV
nhLDLnHC0PZAjoWl1z2zIQ11
-----END PRIVATE KEY-----</llave_pem>
      </urn:cancelar_cfdi>
   </soapenv:Body>
</soapenv:Envelope>

Respuesta del servicio

Si hubo un error con alguno de los parámetros o en el servicio de cancelación, se le notificará por medio de un mensaje de error, de lo contrario recibirá la estructura “cancelar_cfdi_result” compuesta de lo siguiente:

Parámetros de la respuesta

Nombre Descripción
folios Información de los comprobantes cancelados, consiste en UUID, código y mensaje.
acuse_cancelacion El acuse de cancelación que regresa el SAT.

Ejemplo de respuesta del servicio

A continuación mostramos la respuesta que regresa el servicio una vez invocado.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:WashOut">
   <soap:Body>
      <tns:cancelar_cfdi_response>
         <cancelar_cfdi_result xsi:type="tns:cancelar_cfdi_result">
            <folios_cancelacion xsi:type="xsd:string"><folios_cancelacion type="array">
  <folio_cancelacion>
    <uuid>02DBE20E-4DB3-43FF-9672-CEB903FBB5ED</uuid>
    <codigo>201</codigo>
    <mensaje>Cancelado Exitosamente</mensaje>
  </folio_cancelacion>
</folios_cancelacion>]]></folios_cancelacion>
            <acuse_cancelacion xsi:type="xsd:string"><Acuse Fecha="2019-07-25T13:24:06.056488" RfcEmisor="MISC491214B86">
  <Folios>
    <UUID>02DBE20E-4DB3-43FF-9672-CEB903FBB5ED</UUID>
    <EstatusUUID>201</EstatusUUID>
  </Folios>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="SelloSAT">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"/>
      <Reference URI="">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
            <XPath>not(ancestor-or-self::*[local-name()='Signature'])</XPath>
          </Transform>
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
        <DigestValue>CRNc/qZ9taQ9CIhsg+D4YUCxM8IQeshBuwECQT3FstPd+KHayzg7E7Ha/qPXpa14IjR3MZvWB8vQMgd1XwsiIw==</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>O7je9SM13WHL9DYyQ74WouDmZe5+nqqv1TF4eXa0nyYndnjBknn1vDJLZ7VjSBzMJy8vNqm+uiR91EolYoCGJA==</SignatureValue>
    <KeyInfo>
      <KeyName>BF66E582888CC845</KeyName>
      <KeyValue>
        <RSAKeyValue>
          <Modulus>n5YsGT0w5Z70ONPbqszhExfJU+KY3Bscftc2jxUn4wxpSjEUhnCuTd88OK5QbDW3Mupoc61jr83lRhUCjchFAmCigpC10rEntTfEU+7qtX8ud/jJJDB1a9lTIB6bhBN//X8IQDjhmHrfKvfen3p7RxLrFoxzWgpwKriuGI5wUlU=</Modulus>
          <Exponent>AQAB</Exponent>
        </RSAKeyValue>
      </KeyValue>
    </KeyInfo>
  </Signature>
</Acuse>]]></acuse_cancelacion>
         </cancelar_cfdi_result>
      </tns:cancelar_cfdi_response>
   </soap:Body>
</soap:Envelope>

 Códigos a nivel folio

Los siguientes códigos de error se repetirán tantas veces como se repita el nodo folios en la solicitud: 

Código Error
201 UUID Cancelado exitosamente
202 UUID Previamente cancelado
203 UUID no corresponde al RFC del Emisor
204 UUID no aplicable para cancelación
205 UUID No existe
CANC104 UUID no corresponde al RFC del Receptor
CANC105 Total no corresponde al CFDI

Códigos de error a nivel petición

Los siguientes códigos de error se generarán a nivel general de la solicitud de cancelación:

Código Error
CANC001 Los datos de autentificación enviados son incorrectos
CANC002 Se han agotado la cantidad de timbres
CANC003 Parámetro inválido
CANC301 El XML recibido no contiene una estructura válida
CANC302 La llave_pem es una llave inválida
CANC303 El certificado de sellos no corresponde al emisor
CANC304 El certificado no se encuentra en la lista de LCO del SAT
CANC305 La fecha de cancelación no esta dentro de la vigencia de CSD del Emisor
CANC306 El certificado utilizado es de tipo FIEL No es un CSD
CANC307 El Certificado no fue expedido por el SAT
CANC308 Llave privada no corresponde a certificado
** CANC309 El certificado de producción no se puede utilizar en ambiente de pruebas
CANC501 Hay 500 o más UUIDS en una sola petición
CANC998 Error de comunicación con el servicio del SAT, se genero un timeout en la petición al servicio del SAT
CANC999  Error de comunicación con el servicio de cancelación

**CANC309: Solo aplica para el ambiente de pruebas. Es importante mencionar que para obtener la cancelación exitosa es necesario realizar todo el ciclo desde el timbrado y la cancelación con los certificados de pruebas.