Cancelación CFDI
Producto: PAC Tralix
1 Introducción
El Web Service de Cancelación proporcionado por Tralix tiene la misma definición que el servicio del SAT expuesto hacia los PAC’s, esto tiene como consecuencia que el cliente al hacer la petición de cancelación hacia el servicio de Tralix debe emplear obligatoriamente XMLSignature para firmar la petición.
Una vez teniendo la petición formada puede ser enviada a Tralix en donde, Tralix como PAC se encarga de añadir un Token de Autenticación proporcionado por el SAT para hacer 100% valida la petición de cancelación.
De esta manera se lleva a cabo el proceso de cancelación de CFDI mediante la llamada directa al Web Service de Tralix.
Nota: Cada solicitud de cancelación consumirá un timbre de su paquete.
2 Estructura del Servicio
2.1 Firma XML (XML Signature)
Antes de enviar la solicitud, esta debe estar firmada digitalmente. Aunque la generación de la firma no se detalla en este documento, se explican los elementos relevantes:
Elemento | Descripción |
---|---|
DigestValue |
Contiene el resultado de aplicar el algoritmo hash a el (o los) recurso(s) transformado(s). |
SignatureValue |
Contiene el resultado de una firma codificada en Base64 (la firma generada con los parámetros especificados en el elemento SignatureMethod del elemento SignedInfo después de aplicar el algoritmo especificado por el CanonicalizationMethod. |
X509IssuerName |
Contiene el Qualified Name del certificado con el que se firma la petición. |
X509SerialNumber |
Número de serie del certificado con el que se firma la petición. |
X509Certificate |
Es el certificado en base64 con el que firma la petición. |
Fragmento de ejemplo del nodo de firma:
<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>x4XBfF1LtX9WSj8pBp3mG96OWaE=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>cP+JbE40A8apElFcXgmv0W2FwPve3hDphTCOkpWc9JW3w2YX0V6P4E4/7y4a8SM0H2fkF3a2lZv3hyCp7R2XXsaHraurmAv0KaHs7so8/dN7d4OTVqa17584ays027zkYcUZeda3o4dcTGROnrlaEEtAEW/IDkTnKSDZwWsvpg=</SignatureValue>
Nota: este manual no explica la manera de llevar a cabo la firma mediante XML Signature ya que esta fuera del alcance, sin embargo, se definen algunos elementos que generalmente causan confusión al momento de firmar la petición.
2.2 Parámetros requeridos
Endpoint
POST http://IP_DOMAIN:8081/ HTTP/1.1
Método | Ambiente | Ruta |
POST | Pruebas | 🔗 https://pruebastfd.tralix.com:8081 |
POST | Productivo | 🔗 https://timbrador.tralix.com:8081 |
Autenticación y Headers
Header | Value |
Accept-Encoding |
gzip,deflate |
User-Agent |
Jakarta Commons-HttpClient/3.1 |
Content-Length |
4145 |
Parámetros
Parámetro | Tipo | Uso | Descripción |
---|---|---|---|
Content-Type |
Header | Requerido | text/xml; charset=UTF-8 |
SOAPAction |
Header | Requerido | "http://cancelacfd.sat.gob.mx/ICancelaCFDBinding/CancelaCFD" |
CustomerKey |
Header | Requerido | customer_key_id. Clave única del cliente asignada por Tralix |
Body |
Cuerpo | Requerido | XML firmado del CFDI a cancelar |
2.3 Ejemplo de petición
NOTA: El REQUEST de la petición debe estar sellada con el CSD con el que emiten.
Encabezado HTTP:
POST / HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "http://cancelacfd.sat.gob.mx/ICancelaCFDBinding/CancelaCFD"
CustomerKey: customer_key_id
Cuerpo (Body):
<CancelaCFD xmlns="http://cancelacfd.sat.gob.mx">
<Cancelacion Fecha="2024-05-08T10:15:04" RfcEmisor="TME960709LR2">
<Folios>
<Folio UUID="96EB0C3F-1F5F-3FAD-9AF5-42B618BC5F4D" Motivo="01" FolioSustitucion="82EB0C5F-5F6F-3FAD-9AF5-42B618BC5F4D"/>
</Folios>
<!-- Nodo de firma XML Signature aquí -->
</Cancelacion>
</CancelaCFD>
XML Original
<CancelaCFD xmlns="http://cancelacfd.sat.gob.mx">
<Cancelacion Fecha="2019-05-08T10:15:04" RfcEmisor="TME960709LR2"
xmlns="http://cancelacfd.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Folios>
<Folio UUID="96EB0C3F-1F5F-3FAD-9AF5-42B618BC5F4D" Motivo="01"
FolioSustitucion="82EB0C5F-5F6F-3FAD-9AF5-42B618BC5F4D"/>
</Folios>
Datos que se sellan
<Cancelacion Fecha="2019-05-08T10:15:04" RfcEmisor="TME960709LR2"
xmlns="http://cancelacfd.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Folios>
<Folio UUID="96EB0C3F-1F5F-3FAD-9AF5-42B618BC5F4D" Motivo="01"
FolioSustitucion="82EB0C5F-5F6F-3FAD-9AF5-42B618BC5F4D"/>
</Folios>
</Cancelacion>
Request
<CancelaCFD xmlns="http://cancelacfd.sat.gob.mx">
<Cancelacion xmlns="http://cancelacfd.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Fecha="2018-09-01T17:01:50"
RfcEmisor="TME960709LR2">
<Folios>
<Folio UUID="96EB0C3F-1F5F-3FAD-9AF5-42B618BC5F4D" Motivo="01"
FolioSustitucion="82EB0C5F-5F6F-3FAD-9AF5-42B618BC5F4D"/>
</Folios>
<Folios>
<Folio UUID="82EB0C3F-1F6F-3FAD-9AF5-42B618BC5F4D" Motivo="02"/>
</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>POBrgi6EjPKzezz790pnVkYJfXA=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>XYvWTI87pX/3Sgk5gXIbceMPpisykxuNudjVeQGJZYyVp3kRRZTLm5qLwr/YulfXQpjSpGkeUXPh
w0lHd9dqgDlY5rqgZkMZJWYgDacw/zl+qdK0NTTGuBbU+2hS4Kg7tWip5rKKAvy4VKryzNLmpUx7
EaeOlz6p1+Q1ksX08Xb3CBumzkpkEMX4UXESkulkYA928hOsmINK8bQAjPSCJUwRlqrq3McV4ukb
JAjfL6aaca9Rez5aOoMbg5o6ZOhvr0J0wLrp/MpDlC9QV6RzwPlCMp3b6AoQlUzs9z4UDrQkIIkc
R5j6/HCk1teAZiM0ZQhl0seABPNkPvcabQkCYA==</SignatureValue>
<KeyInfo>
<X509Data>
<X509IssuerSerial>
<X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: ACDMA,
OID.2.5.4.45=SAT970701NN3, L=Coyoac?n, ST=Distrit o Federal, C=MX,
OID.2.5.4.17=06300, STREET="Av. Hidalgo 77, Col. Guerrero",
EMAILADDRESS=asisnet@pruebas.sat.gob.mx, OU=Administraci?n de Seguridad
de la Informaci?n, O=Servicio de Administraci?n Tributa ria, CN=A.C. 2
de pruebas(4096)</X509IssuerName>
<X509SerialNumber>286524172099382162235533054548081509963388106291</X509SerialNumber>
</X509IssuerSerial>
<X509Certificate>MIIFzDCCA7SgAwIBAgIUMjAwMDEwMDAwMDA
zMDAwMjI3NjMwDQYJKoZIhvcNAQELBQAwggFmMSAw
HgYDVQQDDBdBLkMuIDIgZGUgcHJ1ZWJhcyg0MDk2KTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRt
aW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1
cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMu
c2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNV
BBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UE
BwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxITAfBgkqhkiG9w0BCQIMElJlc3Bv
bnNhYmxlOiBBQ0RNQTAeFw0xNjEwMjEyMDU0MDFaFw0yMDEwMjEyMDU0MDFaMIG4MRwwGgYDVQQD
ExNJTk1PQiBFRE1BIFNBIERFIENWMRwwGgYDVQQpExNJTk1PQiBFRE1BIFNBIERFIENWMRwwGgYD
VQQKExNJTk1PQiBFRE1BIFNBIERFIENWMSUwIwYDVQQtExxUTUU5NjA3MDlMUjIgLyBIRUdUNzYx
MDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxFTATBgNVBAsUDFBydWViYXNf
Q0ZESTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJgqZ+ezJyeJXACMK8ehFp64ecAl
8jfYKB4xMJy0RRb+qXKRewxtLojiTFECWdCx283tEkdHUj8bLzsCfFAMnsP2G4CS2aE2/1LLCHoZ
pdImaasLX1YJL2bUzxKQKi+RlL63M49yyfvGBjEgG7f6TMwVSUSbgDFpYAFHqx4LK+p2GVHuUUzo
iIm8xRYaW1YPMa457be5W8wsjw0nGRLfo8hRIjPHedkwtcqYPj57xsPXMfxWP45vOlW7GuLkMq/E
CccHxJiPitiThcDFKlf/mAR0kaux9LTffvWilA2uQAlyVyNVjqfdpvDdq4ycTaoIMYKrv/9R31dQ
0AmdXT8cfbcCAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEL
BQADggIBAF5kwvyBUp7Ad99DktzEhrJwnMQyhA79sVc4Ns2SpLON/cV244ZnG5hgXk2awKbHEiSj
/ke7EhgEpGS818ERsj7eW/wRgugBZraVn48GOn6qX0uV9EjwWEGK5uT6IDN25igeXxVJHP3hn40f
X2BPqsaqRP49YMxcOWD7mhWRh2E6BnoKYjgHVJbavUN6pjCBLmy4hKwfitbjqtUiiWOmBDvvmLFp
EGXG8OXn2xladBUkfC4sfgMBpVZVuEV7RqAgCSCZ2xo6UEyd4KKpTjbdp0Tj5gw+NmiovAZHwU/N
PRojN95f/ibj7268LBr2DcO5rlmr7szwJ3dtwu86N7HkUxW3vo3qGHTVK2HRBArda9VN4pEyIL0Q
t46ci5rFYXB2cCWU8XAh8gaZnxJoNTSY4A4yMJG9UfM/2rHC+YvOouIZ2kJZ2h+SwKOYGJOX749P
/QeF4Z/L/ODs3E08bV7IQna1ZHmd6ydYhZVpheMgNoNnIG6jdzfyuo8NZAIIW/JGmPTANPCwTSHq
BY1lmnp/oZNrkxGWtGhbltRfBoFQfTqCZALm6fsVeQqHQ6a7W45FJ2RD1nltPSdniMo3Iz/t4eHC
jFvM3aORvA9oJEPr5ZzzBV2fQOXkyS8QdsSVb5ZmJG+FqZKKlsiaX6xhqK6gqTLyJN+7/yr9T/ZZ
4M7VrRoL</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Cancelacion>
</CancelaCFD>
2.4 Ejemplo de respuesta
Respuesta exitosa
<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="2021-12-15T18:54:48.8228124" RfcEmisor="AXT940727FP8">
<Folios>
<UUID>682ACECE-54CF-4A07-84B9-0916DA34A18F</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Folios>
<UUID>E6F9F159-B0DE-400B-8834-4B0AB4C1D4B8</UUID>
<EstatusUUID>209</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>4bvFycaQnpXVZ1R78WYEyO7tteJ5qYJD2hFEiSu/kKIt6dN6MSuS9YxS9MLyEnLtxn/vtxSaalZOZqKiPYRxiA==</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>NXhxBDAJ1OekLzhtuWeKIkpLEDobiBr6eFuErkqLZZ04Gq2r/TiC9R8ANZl5/cMnyIr6u1iKjV8DChljrQoijw==</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>
3 Motivos de Cancelación
Código | 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 |
4 Códigos de Respuesta
Los códigos de error y la descripción de los mismos contenidos en la excepción CancellationClientException en caso de que se lance son los siguientes:
Código | Descripción |
201 | Petición aceptada. |
202 |
Folio Fiscal Previamente Cancela |
203 | Folio Fiscal No Correspondiente al Emisor |
204 | Folio Fiscal No Aplicable a Cancelación |
205 | Folio Fiscal No Existente |
206 | UUID no corresponde a un CFDI del Sector Primario |
207 | No se especificó el motivo de cancelación o el motivo no es valido |
208 | Folio Sustitución invalido |
209 | Folio Sustitución no requerido |
210 |
La fecha de solicitud de cancelación es mayor a la fecha de declaración |
211 |
La fecha de solicitud de cancelación límite para factura global |
212 | Relación no valida o inexistente |
300 | Usuario No Válido |
301 | XML mal formado. |
302 | Sello mal formado o inválido. |
303 | Sello no corresponde a emisor o caduco. |
304 | Certificado revocado o caduco. |
305 | Certificado Inválido |
306 | El certificado no es de tipo CSD. |
307 | El CFDI contiene un timbre previo. |
308 | Certificado no expedido por el SAT. |
309 | Certificado Inválido |
310 | CSD Inválido |
402 | RFC del emisor no se encuentra en el régimen de contribuyentes. |
407 | Error en el servicio de cancelación del SAT. |
901 | El cliente con el CustomerKey proporcionado no es válido. |
902 | El RFC no está registrado como cliente. |
903 | El RFC se encuentra inactivo por el momento. |
904 | No cuenta con licencia para realizar peticiones. |
905 | El RFC no pertenece al cliente con el CustomerKey que proporcionó. |
906 | Ha expirado su periodo de pruebas. |
910 | No se puede determinar el cliente a partir del RFC. |
998 | Error en el cliente. |
999 | Error en el servidor. |
5 Estados del CFDI
Estos son los estados posibles al consultar un CFDI:
- VIGENTE
- CANCELABLE_CON_ACEPTACION
- CANCELABLE_SIN_ACEPTACION
- NO_CANCELABLE
- NO_ENCONTRADO
- EN_PROCESO
- CANCELADO_PLAZO_VENCIDO
- CANCELADO_CON_ACEPTACIÓN
- CANCELADO_SIN_ACEPTACIÓN
- SOLICITUD_RECHAZADA
6 Consideraciones Técnicas
-
La firma XML debe realizarse con el CSD vigente del emisor.
-
Toda petición debe estar completamente firmada y codificada en UTF-8.
-
Se requiere un
CustomerKey
válido proporcionado por Tralix. -
El proceso consume un timbre del paquete del cliente.
7 Contacto y Soporte
Para soporte técnico, dudas sobre el uso del servicio o solicitud de su CustomerKey, puede comunicarse con su ejecutivo o con el área de soporte técnico de Tralix vía ticket.
No Comments