# Cancelación de un CFDI recién creado

## Descripción

El servicio [`Cancel_Signature`](https://wiki.finkok.com/doku.php?id=cancelsigned_method)
*realiza la cancelación de un comprobante CFDI por medio de un XML desarrollado como la firma*.

Al llamar a la cancelación con una firma válida para un CFDI recién creado,
con el parámetro `store_pending` en `false`,
se encuentra con una respuesta `205` en lugar de la esperada `201`.
No importa si se creó el timbre usando `quick_stamp` o `stamp`.

Valores documentados de la validación de la cancelación del CFDI
  <https://wiki.finkok.com/doku.php?id=tipificacion#validacion_de_la_cancelacion_del_cfdi>

* 201 - Petición de cancelación realizada exitosamente
* 202 - Petición de cancelación realizada Previamente
* 203 - No corresponde el RFC del Emisor y de quien solicita la cancelación
* 205 - UUID No encontrado
* no_cancelable - El UUID contiene CFDI relacionados

Es importante destacar que, si se consulta el método `get_sat_status` la respuesta que obtenemos es:

- EsCancelable: Cancelable sin aceptación
- CodigoEstatus: S - Comprobante obtenido satisfactoriamente.
- Estado: Vigente

* Request headers

```text
POST /servicios/soap/cancel HTTP/1.1
Host: demo-facturacion.finkok.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/7.3.3-1
Content-Type: text/xml; charset=utf-8
SOAPAction: "cancel_signature"
Content-Length: 5869
```

* Request body (formateo de espacios agregados, original sin whitespace)

```xml
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://facturacion.finkok.com/cancel">
    <SOAP-ENV:Body>
        <ns1:cancel_signature>
            <ns1:xml> </ns1:xml>
            <ns1:username>user@example.com</ns1:username>
            <ns1:password>secret</ns1:password>
            <ns1:store_pending>false</ns1:store_pending>
        </ns1:cancel_signature>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
```

* Contenido del elemento `xml` (formateo de espacios agregados, original sin whitespace)

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Cancelacion xmlns="http://cancelacfd.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        RfcEmisor="TCM970625MB1" Fecha="2019-04-10T11:10:35">
    <Folios>
        <UUID>A2D530D5-86EE-4ED6-AFB7-1C965D72A3E2</UUID>
    </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>FKtisczwDCP2fo9nEhVxCLOp04A=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>UuvYitQf3rxCG2hDyE6ZE938NxmPdDvB5IOU6sU+tDFQRMgx2Okf23QEc3DLaqoN2z72k6aictehF9FNo7soOomoxzzfk2rjHYQUtMrx5qYAf/1P4qwf/blTGHL9E8AgNQbs26GmT/TMVTfV++pvdEvVHvSZM3Qam/+hKTE/EiuPd+vsKzWAHgfWWJI2OiTt+1PJbbRHHVRGnFmUL1CDDgOCdz8Btsbfa1EfpZf7KGDmvADe0Fd1OReXVYkMmwan8tOMBnMImpOR/rIa5KsaX+MjRu5YAvHYxsaG7G8tE4MjGMqdspJGlOK3OJQ4KoqWIZBH5ZgadHtgs0JTYfoHHA==</SignatureValue>
        <KeyInfo>
            <X509Data>
                <X509IssuerSerial>
                    <X509IssuerName>/CN=EJIDO RODRIGUEZ PUEBLA SA DE CV/name=EJIDO RODRIGUEZ PUEBLA SA DE CV/O=EJIDO RODRIGUEZ PUEBLA SA DE CV/x500UniqueIdentifier=TCM970625MB1 / HEGT7610034S2/serialNumber= / HEGT761003MDFRNN09/OU=Pruebas_CFDI</X509IssuerName>
                    <X509SerialNumber>20001000000300022762</X509SerialNumber>
                </X509IssuerSerial>
                <X509Certificate> </X509Certificate>
            </X509Data>
            <KeyValue>
                <RSAKeyValue>
                    <Modulus>oDMKx6KRleRrJWLESXj1cUaf3SpjoSxXupuLsx/rAm9+gRwz9rO4G9qDL0oV7/8uoid3gDgr8nBttKJWIlwnV7Q8s4mE7BvyXse57+de2bds9kov35Dzs8AUHzb8LBn+o3VEoAAHUTwbJDTnIibDvWA3tVsjSL71ibUtMui1Xm9FIgwkcU3BzV13pDjLzZL8Jtl4NBYhpwK39zkCyUvSlK/wXpfN1960Zt6XdWiJ+wDeo0TWr8d4+5r8fU4m6nIY72Molw6RYSHmnCJzfUUNUQzJF4XZMKpgs8AfmVTnblImhA6i44Qa61baec6RO3zE6RF330l9Mm8z/dj1lvQNWQ==</Modulus>
                    <Exponent>AQAB</Exponent>
                </RSAKeyValue>
            </KeyValue>
        </KeyInfo>
    </Signature>
</Cancelacion>
```

* Response headers

```text
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Wed, 10 Apr 2019 16:10:39 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 3068
Connection: close
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
Vary: Cookie
x-frame-options: DENY
Set-Cookie: sessionid=4711e676ea90df9c680a1a66b79bc273; httponly; Path=/; secure
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Content-Type-Options: nosniff
```

* Response body (formateo de espacios agregados, original sin whitespace)

```xml
<?xml version='1.0' encoding='UTF-8'?>
<senv:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing"
               xmlns:tns="http://facturacion.finkok.com/cancel"
               xmlns:plink="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
               xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:senc="http://schemas.xmlsoap.org/soap/encoding/"
               xmlns:s1="http://facturacion.finkok.com/cancellation" xmlns:s0="apps.services.soap.core.views"
               xmlns:s12env="http://www.w3.org/2003/05/soap-envelope/"
               xmlns:s12enc="http://www.w3.org/2003/05/soap-encoding/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:senv="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
    <senv:Body>
        <tns:cancel_signatureResponse>
            <tns:cancel_signatureResult>
                <s0:Folios>
                    <s0:Folio>
                        <s0:UUID>A2D530D5-86EE-4ED6-AFB7-1C965D72A3E2</s0:UUID>
                        <s0:EstatusUUID>205</s0:EstatusUUID>
                        <s0:EstatusCancelacion></s0:EstatusCancelacion>
                    </s0:Folio>
                </s0:Folios>
                <s0:Acuse>&lt;s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;&lt;CancelaCFDResponse xmlns="http://cancelacfd.sat.gob.mx"&gt;&lt;CancelaCFDResult Fecha="2019-04-10T11:10:38.8006999" RfcEmisor="TCM970625MB1"&gt;&lt;Folios&gt;&lt;UUID&gt;A2D530D5-86EE-4ED6-AFB7-1C965D72A3E2&lt;/UUID&gt;&lt;EstatusUUID&gt;205&lt;/EstatusUUID&gt;&lt;/Folios&gt;&lt;Signature Id="SelloSAT" xmlns="http://www.w3.org/2000/09/xmldsig#"&gt;&lt;SignedInfo&gt;&lt;CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/&gt;&lt;SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"/&gt;&lt;Reference URI=""&gt;&lt;Transforms&gt;&lt;Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"&gt;&lt;XPath&gt;not(ancestor-or-self::*[local-name()='Signature'])&lt;/XPath&gt;&lt;/Transform&gt;&lt;/Transforms&gt;&lt;DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/&gt;&lt;DigestValue&gt;mhUNI5/BiA8/CFjmzZbvJfdZryC00fUb7Zn84KkGqk8uC91BDrE41/OmwHjcX8yoh2BfeeT+3mi+o6Row7nQxg==&lt;/DigestValue&gt;&lt;/Reference&gt;&lt;/SignedInfo&gt;&lt;SignatureValue&gt;L29OH8JvLpsrDiydgAB3e9ETNKpRRa9AC2YF5jf/gSJFjh0g+9mhdGT81OiZl89dGl3FVLYQZaPiU+fogtlOYg==&lt;/SignatureValue&gt;&lt;KeyInfo&gt;&lt;KeyName&gt;BF66E582888CC845&lt;/KeyName&gt;&lt;KeyValue&gt;&lt;RSAKeyValue&gt;&lt;Modulus&gt;n5YsGT0w5Z70ONPbqszhExfJU+KY3Bscftc2jxUn4wxpSjEUhnCuTd88OK5QbDW3Mupoc61jr83lRhUCjchFAmCigpC10rEntTfEU+7qtX8ud/jJJDB1a9lTIB6bhBN//X8IQDjhmHrfKvfen3p7RxLrFoxzWgpwKriuGI5wUlU=&lt;/Modulus&gt;&lt;Exponent&gt;AQAB&lt;/Exponent&gt;&lt;/RSAKeyValue&gt;&lt;/KeyValue&gt;&lt;/KeyInfo&gt;&lt;/Signature&gt;&lt;/CancelaCFDResult&gt;&lt;/CancelaCFDResponse&gt;&lt;/s:Body&gt;&lt;/s:Envelope&gt;</s0:Acuse>
                <s0:Fecha>2019-04-10T11:10:38.8006999</s0:Fecha>
                <s0:RfcEmisor>TCM970625MB1</s0:RfcEmisor>
            </tns:cancel_signatureResult>
        </tns:cancel_signatureResponse>
    </senv:Body>
</senv:Envelope>
```

* Contenido del elemento `Acuse` (formateo de espacios agregados, original sin whitespace)

```xml
<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">
        <CancelaCFDResponse xmlns="http://cancelacfd.sat.gob.mx">
            <CancelaCFDResult Fecha="2019-04-10T11:10:38.8006999" RfcEmisor="TCM970625MB1">
                <Folios>
                    <UUID>A2D530D5-86EE-4ED6-AFB7-1C965D72A3E2</UUID>
                    <EstatusUUID>205</EstatusUUID>
                </Folios>
                <Signature Id="SelloSAT" 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/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>mhUNI5/BiA8/CFjmzZbvJfdZryC00fUb7Zn84KkGqk8uC91BDrE41/OmwHjcX8yoh2BfeeT+3mi+o6Row7nQxg==</DigestValue>
                        </Reference>
                    </SignedInfo>
                    <SignatureValue>L29OH8JvLpsrDiydgAB3e9ETNKpRRa9AC2YF5jf/gSJFjh0g+9mhdGT81OiZl89dGl3FVLYQZaPiU+fogtlOYg==</SignatureValue>
                    <KeyInfo>
                        <KeyName>BF66E582888CC845</KeyName>
                        <KeyValue>
                            <RSAKeyValue>
                                <Modulus>n5YsGT0w5Z70ONPbqszhExfJU+KY3Bscftc2jxUn4wxpSjEUhnCuTd88OK5QbDW3Mupoc61jr83lRhUCjchFAmCigpC10rEntTfEU+7qtX8ud/jJJDB1a9lTIB6bhBN//X8IQDjhmHrfKvfen3p7RxLrFoxzWgpwKriuGI5wUlU=</Modulus>
                                <Exponent>AQAB</Exponent>
                            </RSAKeyValue>
                        </KeyValue>
                    </KeyInfo>
                </Signature>
            </CancelaCFDResult>
        </CancelaCFDResponse>
    </s:Body>
</s:Envelope>
```

## Reporte

2019-04-10 16:50 https://support.finkok.com/support/tickets/17700

Para no esperar el tiempo de respuesta habitual he marcado me han brindado excelente soporte técnico.
Resultado: El error no es de Finkok, es del SAT.

El servicio de cancelación funciona como un puente con el SAT, entre otras cosas, porque el SAT no tiene
abierto el servicio al público en general, solo a los PAC.

El error 205 no lo reporta Finkok, lo reporta el SAT (se puede ver en el acuse). Lo que lleva a preguntarnos:
¿Por qué entonces el SAT responde con Vigente/Cancelable en el servicio de consulta, y luego response con 205?
Porque es el SAT. Lo más probable es que por un lado almacene los CFDI y los ingrese en varios repositorios de
información, y por otros lugares consume esos repositorios. Luego entonces, el servicio de estado podría
retornar que sí existe y está vigente mientras que el servicio de cancelación podría decir que no existe.

## Solución

No existe solución.

Solo se puede reconocer el error e intentar más tarde.

El SAT no tiene una forma para poder advertir si se presentará un error 205.
