Cancelación de CFDI sin CSD

Ruby
PHP
Javascript
.Net >= 4.5
Java
Phyton

Procedimiento

1) Se debe generar un XML que contenga los siguientes datos:

  • Fecha: La fecha de la solicitud
  • RfcEmisor: El RFC Emisor.
  • Folios: Folios fiscales de 1 a 500

XML para la cancelación de CFDI

<Cancelacion Fecha="2013-07-14T17:15:49" RfcEmisor="EKU9003173C9" xmlns="http://cancelacfd.sat.gob.mx"  
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance ">
    <Folios>
        <UUID>BB0AE47D-7BF5-4D7C-85DB-055B67F72ED5</UUID>
    </Folios>
    <Folios>
        <UUID>DE663F0F-ACDC-4A45-8E58-1B71EAC35068</UUID>
    </Folios>
    <Folios>
        <UUID>3AC8BE0F-E43C-40DF-B5C0-295833A3269B</UUID>
    </Folios>
    <Folios>
        <UUID>1EC3A2B3-839C-4DDB-BD01-54C6D849430A</UUID>
    </Folios>
    <Folios>
        <UUID>BB0AE47D-7BF5-4D7C-85DB-055B67F72ED6</UUID>
    </Folios>
</Cancelacion>

2) Generar un nodo de firma con el estándar XML-Signature para dicho XML con la llave privada del emisor.

Nodo de firma


<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <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>wLSGRWiGF9hF7gl097iflE08k1Q=</DigestValue>
        </Reference>
    </SignedInfo>
    <SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">JTlGKmrhPdw7rwUApACnC+VeoRN0alZz/VAejQjqlEn/
    KpL0kZL0VOIVXahlZtkIn1W5DOEDzM1/9/YFaycc3XyenVLY4WPC6KVFy4aijX2oGt+GsNpv6/FCtUxkRFA46SLawwkXdtDGcmwxnNasucfTD5AU6hB65Zvgp4rKS5M=</SignatureValue>
    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>
            <X509IssuerSerial>
            <X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: Héctor Ornelas Arciga, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal, C=MX, PostalCode=06300, STREET="Av.Hidalgo 77, Col.Guerrero", E=asisnet@pruebas.sat.gob.mx, OU=Administración de Seguridad de la Información, O=Servicio de Administración     
        Tributaria, CN=A.C. de pruebas</X509IssuerName>
                <X509SerialNumber>286524172099382162235533054511188021807429465904</X509SerialNumber>
            </X509IssuerSerial>
            <X509Certificate>MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NzAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDlaFw0xNjA3MjcxNzAyMDlaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCA0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxjtFKP9bhgV8I8lIlc58M19l8xBIrM6rWJagt1G/yYTo6WLVKTGx9fiWSnTZVeClcrLXo3heKYAkHPla6WHRiMRkwdshafy9AtUx5xyLIDXzER4K/eZitmzp9LWTxi6BYEHPUuOdFJ8PtPkVb3yvadMJgxMtI47uXxmx40mkA9QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEA2D99yNxnBdJ7ONJQ7XiMaaqCTkB4wWYxHaFlxpKgLe3HRc86rEZfBnoHLGd/ACAIoTc2PG09J4qkDOw63fb1aNLa9Zjqat+Nh6qB7+ifC9+pAVd6OrR5Ch7v/Fr0I4APrfSyXbx5U915zaGw9c1wM57Lfa0oGipkPUfab2lnf0y6X1WXMKv+vMMVtlQxUAC0Vc5HBPV3aWtDXwg8pANbcYfZEr8H2i4a
            OpFBsRLuPjdo9OOqfn4Df6GoqKUrlwBPh6wCqexSKuG3XuTqZB1svdyss9NW+iOTqkBFWJrOPpKwVppyt4YGEcejoPBcnWpGSALpahuxuX5hoUak0+1Yxw==</X509Certificate>
        </X509Data>
    </KeyInfo>
</Signature>

3) Insertar la firma en el XML original

Ejemplo de inserción de la firma

<Cancelacion Fecha="2013-10-15T19:50:57" RfcEmisor="AAA010101000" xmlns="http://cancelacfd.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema "  
    "xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Folios>
        <UUID>7362C5D3-3D90-4B46-B0D6-31FB46F57464</UUID>
    </Folios>
    <Folios>
        <UUID>4735E554-EF48-4544-A77E-F3D7284B452B</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>zorfodnMo3SZ1DTK8TW21mwqygM=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>Y6OjkpA4eXr4xh0gy7b8JDwlHpDHNEfhAtw6MouagIEIDOD8LkIzMbefpaD1BTCTl7PHT3YfeeS88ki1OzZaHMz0bvL+y6VcfOuG0JQq8i2tXIBQmatJSh3L8/HJwteQnIPsHYkhTnYSAiJS3ZUBV+VV87strs6OppnbEKCBFHE=</SignatureValue> 
        <KeyInfo>
            <X509Data>
                <X509IssuerSerial>
    <X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: Héctor Ornelas Arciga, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal, C=MX, PostalCode=06300, STREET="Av. Hidalgo 77, Col. Guerrero", E=asisnet@pruebas.sat.gob.mx, OU=Administración de Seguridad de la Información, O=Servicio de 
    "Administración Tributaria, CN=A.C. de pruebas</X509IssuerName>
                    <X509SerialNumber>286524172099382162235533054511188021807429465904</X509SerialNumber>
                </X509IssuerSerial>
    <X509Certificate>MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NzAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDlaFw0xNjA3MjcxNzAyMDlaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCA0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxjtFKP9bhgV8I8lIlc58M19l8xBIrM6rWJagt1G/yYTo6WLVKTGx9fiWSnTZVeClcrLXo3heKYAkHPla6WHRiMRkwdshafy9AtUx5xyLIDXzER4K/eZitmzp9LWTxi6BYEHPUuOdFJ8PtPkVb3yvadMJgxMtI47uXxmx40mkA9QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEA2D99yNxnBdJ7ONJQ7XiMaaqCTkB4wWYxHaFlxpKgLe3HRc86rEZfBnoHLGd/ACAIoTc2PG09J4qkDOw63fb1aNLa9Zjqat+Nh6qB7+ifC9+pAVd6OrR5Ch7v/Fr0I4APrfSyXbx5U915zaGw9c1wM57Lfa0oGipkPUfab2lnf0y6X1WXMKv+vMMVtlQxUAC0Vc5HBPV3aWtDXwg8pANbcYfZEr8H
    "2i4aOpFBsRLuPjdo9OOqfn4Df6GoqKUrlwBPh6wCqexSKuG3XuTqZB1svdyss9NW+iOTqkBFWJrOPpKwVppyt4YGEcejoPBcnWpGSALpahuxuX5hoUak0+1Yxw==</X509Certificate>
            </X509Data>
        </KeyInfo>
    </Signature>
</Cancelacion>

4) Convertir a base64

Ejemplo de base64:

    PENhbmNlbGFjaW9uIEZlY2hhPSIyMDEzLTEwLTE1VDE5OjUwOjU3IiBSZmNFbWlzb3I9IkFBQTAxMDEwMTAwMCIgeG1sbnM9Imh0dHA6Ly9jYW5jZWxhY2ZkLnNhdC5nb2IubXgiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KICAgIDxGb2xpb3M+DQogICAgICAgIDxVVUlEPjczNjJDNUQzLTNEOTAtNEI0Ni1CMEQ2LTMxRkI0NkY1NzQ2NDwvVVVJRD4NCiAgICA8L0ZvbGlvcz4NCiAgICA8Rm9saW9zPg0KICAgICAgICA8VVVJRD40NzM1RTU1NC1FRjQ4LTQ1NDQtQTc3RS1GM0Q3Mjg0QjQ1MkI8L1VVSUQ+DQogICAgPC9Gb2xpb3M+DQogICAgPFNpZ25hdHVyZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+DQogICAgICAgIDxTaWduZWRJbmZvPg0KICAgICAgICAgICAgPENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIvPg0KICAgICAgICAgICAgPFNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNyc2Etc2hhMSIvPg0KICAgICAgICAgICAgPFJlZmVyZW5jZSBVUkk9IiI+DQogICAgICAgICAgICAgICAgPFRyYW5zZm9ybXM+DQogICAgICAgICAgICAgICAgICAgIDxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIvPg0KICAgICAgICAgICAgICAgIDwvVHJhbnNmb3Jtcz4NCiAgICAgICAgICAgICAgICA8RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3NoYTEiLz4NCiAgICAgICAgICAgICAgICA8RGlnZXN0VmFsdWU+em9yZm9kbk1vM1NaMURUSzhUVzIxbXdxeWdNPTwvRGlnZXN0VmFsdWU+DQogICAgICAgICAgICA8L1JlZmVyZW5jZT4NCiAgICAgICAgPC9TaWduZWRJbmZvPg0KICAgICAgICA8U2lnbmF0dXJlVmFsdWU+WTZPamtwQTRlWHI0eGgwZ3k3YjhKRHdsSHBESE5FZmhBdHc2TW91YWdJRUlET0Q4TGtJek1iZWZwYUQxQlRDVGw3UEhUM1lmZWVTODhraTFPelphSE16MGJ2TCt5NlZjZk91RzBKUXE4aTJ0WElCUW1hdEpTaDNMOC9ISnd0ZVFuSVBzSFlraFRuWVNBaUpTM1pVQlYrVlY4N3N0cnM2T3BwbmJFS0NCRkhFPTwvU2lnbmF0dXJlVmFsdWU+DQogICAgICAgIDxLZXlJbmZvPg0KICAgICAgICAgICAgPFg1MDlEYXRhPg0KICAgICAgICAgICAgICAgIDxYNTA5SXNzdWVyU2VyaWFsPg0KICAgICAgICAgICAgICAgICAgICA8WDUwOUlzc3Vlck5hbWU+T0lELjEuMi44NDAuMTEzNTQ5LjEuOS4yPVJlc3BvbnNhYmxlOiBIw6ljdG9yIE9ybmVsYXMgQXJjaWdhLCBPSUQuMi41LjQuNDU9U0FUOTcwNzAxTk4zLCBMPUNveW9hY8OhbiwgUz1EaXN0cml0byBGZWRlcmFsLCBDPU1YLCBQb3N0YWxDb2RlPTA2MzAwLCBTVFJFRVQ9IkF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvIiwgRT1hc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teCwgT1U9QWRtaW5pc3RyYWNpw7NuIGRlIFNlZ3VyaWRhZCBkZSBsYSBJbmZvcm1hY2nDs24sIE89U2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWEsIENOPUEuQy4gZGUgcHJ1ZWJhczwvWDUwOUlzc3Vlck5hbWU+DQogICAgICAgICAgICAgICAgICAgIDxYNTA5U2VyaWFsTnVtYmVyPjI4NjUyNDE3MjA5OTM4MjE2MjIzNTUzMzA1NDUxMTE4ODAyMTgwNzQyOTQ2NTkwNDwvWDUwOVNlcmlhbE51bWJlcj4NCiAgICAgICAgICAgICAgICA8L1g1MDlJc3N1ZXJTZXJpYWw+DQogICAgICAgICAgICAgICAgPFg1MDlDZXJ0aWZpY2F0ZT5NSUlFZERDQ0ExeWdBd0lCQWdJVU1qQXdNREV3TURBd01EQXhNREF3TURVNE56QXdEUVlKS29aSWh2Y05BUUVGQlFBd2dnRnZNUmd3RmdZRFZRUUREQTlCTGtNdUlHUmxJSEJ5ZFdWaVlYTXhMekF0QmdOVkJBb01KbE5sY25acFkybHZJR1JsSUVGa2JXbHVhWE4wY21GamFjT3piaUJVY21saWRYUmhjbWxoTVRnd05nWURWUVFMREM5QlpHMXBibWx6ZEhKaFkybkRzMjRnWkdVZ1UyVm5kWEpwWkdGa0lHUmxJR3hoSUVsdVptOXliV0ZqYWNPemJqRXBNQ2NHQ1NxR1NJYjNEUUVKQVJZYVlYTnBjMjVsZEVCd2NuVmxZbUZ6TG5OaGRDNW5iMkl1YlhneEpqQWtCZ05WQkFrTUhVRjJMaUJJYVdSaGJHZHZJRGMzTENCRGIyd3VJRWQxWlhKeVpYSnZNUTR3REFZRFZRUVJEQVV3TmpNd01ERUxNQWtHQTFVRUJoTUNUVmd4R1RBWEJnTlZCQWdNRUVScGMzUnlhWFJ2SUVabFpHVnlZV3d4RWpBUUJnTlZCQWNNQ1VOdmVXOWhZOE9oYmpFVk1CTUdBMVVFTFJNTVUwRlVPVGN3TnpBeFRrNHpNVEl3TUFZSktvWklodmNOQVFrQ0RDTlNaWE53YjI1ellXSnNaVG9nU01PcFkzUnZjaUJQY201bGJHRnpJRUZ5WTJsbllUQWVGdzB4TWpBM01qY3hOekF5TURsYUZ3MHhOakEzTWpjeE56QXlNRGxhTUlIYk1Ta3dKd1lEVlFRREV5QkJRME5GVFNCVFJWSldTVU5KVDFNZ1JVMVFVa1ZUUVZKSlFVeEZVeUJUUXpFcE1DY0dBMVVFS1JNZ1FVTkRSVTBnVTBWU1ZrbERTVTlUSUVWTlVGSkZVMEZTU1VGTVJWTWdVME14S1RBbkJnTlZCQW9USUVGRFEwVk5JRk5GVWxaSlEwbFBVeUJGVFZCU1JWTkJVa2xCVEVWVElGTkRNU1V3SXdZRFZRUXRFeHhCUVVFd01UQXhNREZCUVVFZ0x5QklSVWRVTnpZeE1EQXpORk15TVI0d0hBWURWUVFGRXhVZ0x5QklSVWRVTnpZeE1EQXpUVVJHVWs1T01Ea3hFVEFQQmdOVkJBc1RDRlZ1YVdSaFpDQTBNSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0JnUUN4anRGS1A5YmhnVjhJOGxJbGM1OE0xOWw4eEJJck02cldKYWd0MUcveVlUbzZXTFZLVEd4OWZpV1NuVFpWZUNsY3JMWG8zaGVLWUFrSFBsYTZXSFJpTVJrd2RzaGFmeTlBdFV4NXh5TElEWHpFUjRLL2VaaXRtenA5TFdUeGk2QllFSFBVdU9kRko4UHRQa1ZiM3l2YWRNSmd4TXRJNDd1WHhteDQwbWtBOVFJREFRQUJveDB3R3pBTUJnTlZIUk1CQWY4RUFqQUFNQXNHQTFVZER3UUVBd0lHd0RBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQTJEOTl5TnhuQmRKN09OSlE3WGlNYWFxQ1RrQjR3V1l4SGFGbHhwS2dMZTNIUmM4NnJFWmZCbm9ITEdkL0FDQUlvVGMyUEcwOUo0cWtET3c2M2ZiMWFOTGE5WmpxYXQrTmg2cUI3K2lmQzkrcEFWZDZPclI1Q2g3di9GcjBJNEFQcmZTeVhieDVVOTE1emFHdzljMXdNNTdMZmEwb0dpcGtQVWZhYjJsbmYweTZYMVdYTUt2K3ZNTVZ0bFF4VUFDMFZjNUhCUFYzYVd0RFh3ZzhwQU5iY1lmWkVyOEgyaTRhT3BGQnNSTHVQamRvOU9PcWZuNERmNkdvcUtVcmx3QlBoNndDcWV4U0t1RzNYdVRxWkIxc3ZkeXNzOU5XK2lPVHFrQkZXSnJPUHBLd1ZwcHl0NFlHRWNlam9QQmNuV3BHU0FMcGFodXh1WDVob1VhazArMVl4dz09PC9YNTA5Q2VydGlmaWNhdGU+DQogICAgICAgICAgICA8L1g1MDlEYXRhPg0KICAgICAgICA8L0tleUluZm8+DQogICAgPC9TaWduYXR1cmU+DQo8L0NhbmNlbGFjaW9uPg==

5) Llamada a la API

Estructura de la URL

DELETE


    https://apisandbox.facturama.mx/api-lite/cfdis

    {
      "XmlRequestBase64": "PENhbmNlbGFjaW9uIEZlY2hhPSIy....",
      "Id": "DszKeiw2qKAAsCoITIaePA2"
    }   
Base64 obtenido del paso 4
Identificador del CFDI

Referencia a la Documentación

https://apisandbox.facturama.mx/docs-multi/api/DELETE-api-lite-cfdis