Flujo de Cancelación
Producto: PAC Services – Tralix
1 Introducción
El presente manual tiene como propósito proporcionar una guía técnica detallada sobre el Flujo de Cancelación de CFDI a través del producto PAC Services – Tralix. Esta funcionalidad permite a emisores y receptores de comprobantes fiscales digitales realizar y gestionar cancelaciones conforme a los lineamientos establecidos por el Servicio de Administración Tributaria (SAT).
El flujo de cancelación está compuesto por distintos servicios que permiten ejecutar la cancelación de un CFDI, consultar su estatus fiscal, conocer los comprobantes pendientes por cancelación y aceptar o rechazar solicitudes cuando sea necesario. Todos estos servicios se ofrecen a través de interfaces REST que pueden consumir tanto contenido XML como JSON, dependiendo del tipo de operación.
Este documento está dirigido a desarrolladores, integradores y personal técnico responsable de la implementación del servicio en los sistemas del cliente. Cada sección describe el uso adecuado de los endpoints, la estructura de las peticiones y respuestas, los parámetros necesarios, ejemplos prácticos, así como las validaciones y consideraciones técnicas que se deben cumplir para garantizar una integración exitosa.
Además, se incluye información clave sobre autenticación, headers, formatos permitidos, cardinalidad, firma digital y tratamiento de errores, con el fin de facilitar la comprensión y uso correcto de cada componente del flujo.
Nota: Toda consulta de cancelación realizada a través de este servicio consume un timbre del paquete contratado por el cliente.
2 Servicio de Cancelación
El servicio Cancelación permite a los emisores de CFDI realizar la cancelación de uno o varios comprobantes en una sola petición. Esta operación se realiza mediante un servicio REST con contenido en XML y requiere que el XML esté firmado digitalmente con el CSD del emisor.
La cancelación debe cumplir con los lineamientos establecidos por el SAT, incluyendo la especificación del motivo de cancelación y, en su caso, el UUID del CFDI sustituto.
2.1 Estructura general de la petición
El servicio acepta contenido XML con una estructura específica que contiene los datos de cancelación por cada UUID. Se permite cancelar de 1 a 500 comprobantes en una sola petición (cardinalidad 1:500).
2.2 Parámetros requeridos
Endpoint
Esta operación se realiza mediante un servicio REST.
Método | Entorno | URL |
---|---|---|
POST | Pruebas | |
POST | Productivo | 🔗 https://timbrador.tralix.com:8081/cancelCfdi |
Autenticación y Headers
Header | Valor esperado |
---|---|
Content-Type |
application/xml |
ServerKey |
XSA_API (clave proporcionada por Tralix) |
Parámetros
Campo | Descripción |
---|---|
Fecha |
Fecha de la solicitud de cancelación, formato AAAA-MM-DDTHH:MM:SS . |
RfcEmisor |
RFC del emisor que realiza la cancelación. |
UUID |
UUID del CFDI que se desea cancelar. |
Motivo |
Clave del motivo de cancelación (por ejemplo, 01 , 02 , etc.). |
FolioSustitucion |
(Opcional) UUID del CFDI que sustituye al cancelado. Requerido si el motivo lo exige. |
RfcReceptor |
RFC del receptor del CFDI que se cancela. |
Total |
Monto total del CFDI. |
Signature |
Firma digital del XML, generada con el CSD del emisor. |
2.3 Ejemplo de petición
<CancelaCFD xmlns="http://cancelacfd.sat.gob.mx">
<Cancelacion Fecha="[Fecha]" RfcEmisor="[RFC_EMISOR]"
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="[UUID]" Motivo="01" FolioSustitucion="[UUID]"/>
<RfcReceptor>[RFC_RECEPTOR]</RfcReceptor>
<Total>[TOTAL_FACTURA]</Total>
</Folios>
<Folios>
<Folio UUID="[UUID]" Motivo="02" />
<RfcReceptor>[RFC_RECEPTOR]</RfcReceptor>
<Total>[TOTAL_FACTURA]</Total>
</Folios>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" />
</Cancelacion>
</CancelaCFD>
2.4 Ejemplo de respuesta
<CancellationResponses>
<CancellationResponse uuid="[UUID]" estado="[ESTADO_CFDI]">
<CancelaCFDResponse
xmlns="http://cancelacfd.sat.gob.mx"
xmlns:cfdi="http://www.sat.gob.mx/cfd/3"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" />
</CancellationResponse>
<CancellationResponse uuid="[UUID]" estado="[ESTADO_CFDI]">
<Error />
</CancellationResponse>
</CancellationResponses>
2.5 Códigos de respuesta
El atributo estado
dentro del nodo <CancellationResponse>
indicará el resultado para cada UUID:
Estado | Descripción |
---|---|
Cancelado |
El CFDI fue cancelado correctamente. |
Error |
Hubo un problema en la cancelación del CFDI. |
2.6. Consideraciones Técnicas
-
Se permite cancelar hasta 500 CFDIs por solicitud.
-
El XML debe ser firmado con el CSD vigente del emisor.
3. Consulta de Estados de CFDI
El servicio Consulta de Estados permite realizar una búsqueda del estatus fiscal de uno o varios Comprobantes Fiscales Digitales por Internet (CFDIs) entregados al SAT. Este servicio responde con información sobre si el comprobante se encuentra vigente, cancelado o en proceso de cancelación, así como si es cancelable.
Este servicio está disponible en dos formatos, :
-
Consulta individual (1:1) mediante estructura XML.
-
Consulta masiva (1:500) mediante estructura JSON.
3.1 Estructura general de la petición
La petición puede realizarse de dos formas, dependiendo del tipo de consumo:
Tipo de consulta | Formato | Cardinalidad |
---|---|---|
Individual | XML | 1:1 |
Masiva | JSON | 1:500 |
3.2 Parámetros requeridos
Endpoint
Esta operación se realiza mediante un servicio REST.
Método | Ambiente | URL |
---|---|---|
POST | Pruebas | 🔗 https://timbrador.tralix.com:8081/cancela/consultaSoap/ |
Autenticación y Headers
Header | Valor esperado |
---|---|
Content-Type |
application/xml (para XML) | application/json (para JSON) |
ServerKey |
XSA_API |
Parámetros
Para consulta individual (XML):
Campo | Descripción |
---|---|
re |
RFC del emisor |
rr |
RFC del receptor |
tt |
Total del CFDI (ej. 10403.20) |
id |
UUID del CFDI |
Para consulta masiva (JSON):
Campo | Descripción |
---|---|
rfcEmisor |
RFC del emisor |
rfcReceptor |
RFC del receptor |
total |
Total del CFDI |
uuid |
UUID del CFDI |
3.3 Ejemplo de petición
XML (1:1):
<tem:Consulta xmlns:tem="http://tempuri.org/">
<tem:expresionImpresa>
<![CDATA[?re=[RFC_EMISOR]]&rr=[RFC_RECEPTOR]&tt=[TOTAL]&id=[UUID]]]>
</tem:expresionImpresa>
</tem:Consulta>
JSON (1:500):
{
"statusVerifierList": [
{
"rfcEmisor": "[RFC_EMISOR]",
"rfcReceptor": "[RFC_RECEPTOR]",
"total": "[TOTAL]",
"uuid": "[UUID]"
},{
"rfcEmisor": "[RFC_EMISOR]",
"rfcReceptor": "[RFC_RECEPTOR]",
"total": "[TOTAL]",
"uuid": "[UUID]"
}
]
}
3.4 Ejemplo de respuesta
XML (respuesta individual):
<ConsultaResponse xmlns="http://tempuri.org/" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<ConsultaResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio">
<a:CodigoEstatus>S - Comprobante obtenido satisfactoriamente.</a:CodigoEstatus>
<a:EsCancelable>Cancelable con aceptación</a:EsCancelable>
<a:Estado>Cancelado</a:Estado>
<a:EstatusCancelacion>Cancelado con aceptación</a:EstatusCancelacion>
</ConsultaResult>
</ConsultaResponse>
JSON (respuesta masiva):
{
"statusVerifierList": [
{
"estado": "Vigente",
"uuid": "[UUID]",
"codigoEstatus": "S - Comprobante obtenido satisfactoriamente.",
"esCancelable": "Cancelable con aceptación",
"estatusCancelacion": ""
},
{
"estado": "Vigente",
"uuid": "[UUID]",
"codigoEstatus": "S - Comprobante obtenido satisfactoriamente.",
"esCancelable": "Cancelable con aceptación",
"estatusCancelacion": ""
}
]
}
3.5 Códigos de respuesta (debe ser interpretado desde el campo codigoEstatus
)
Código | Descripción |
---|---|
S - Comprobante obtenido satisfactoriamente. |
Consulta exitosa. El CFDI existe y se obtuvo su estado. |
Otros mensajes | Se indicarán mensajes de error específicos si el comprobante no fue localizado o hay un problema de parámetros. |
3.6 Consideraciones Técnicas
-
Los montos (
total
) deben tener exactamente dos decimales y coincidir con el total del CFDI. -
Para consultas masivas, no se puede exceder la cardinalidad de 500 registros por solicitud.
4 Consulta Pendientes por Cancelar
El servicio Pendientes por Cancelar permite a los receptores de CFDI consultar los comprobantes fiscales que se encuentran en proceso de cancelación, es decir, aquellos que requieren aceptación o rechazo por parte del receptor para completar su cancelación.
Este servicio está disponible en dos formatos de consumo:
-
Consulta individual (XML)
-
Consulta individual (JSON)
Esta operación se realiza mediante un servicio REST.
Nota: La información obtenida representa solicitudes de cancelación pendientes, no implica que el CFDI esté cancelado.
4.1 Estructura general de la petición
Tipo de consulta | Formato | Cardinalidad |
---|---|---|
Individual | XML | 1:1 |
Individual | JSON | 1:1 |
4.2 Parámetros requeridos
Endpoint
Esta operación se realiza mediante un servicio REST.
Método | Ambiente | URL |
---|---|---|
POST |
Pruebas |
|
Autenticación y Headers
Header | Valor esperado |
---|---|
Content-Type |
application/xml (para XML) | application/json (para JSON) |
ServerKey |
XSA_API |
Parámetros
Campo | Uso | Descripción |
---|---|---|
rfcReceptor |
Requerido |
RFC del receptor del CFDI |
4.3 Ejemplo de petición
XML
<can:ObtenerPeticionesPendientes xmlns:can="http://cancelacfd.sat.gob.mx">
<can:rfcReceptor>[RFC_RECEPTOR]</can:rfcReceptor>
</can:ObtenerPeticionesPendientes>
JSON
{
"rfcReceptor": "CALJ581101M37"
}
4.4 Ejemplo de respuesta
XML
<ObtenerPeticionesPendientesResponse xmlns="http://cancelacfd.sat.gob.mx"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<ObtenerPeticionesPendientesResult CodEstatus="1100">
<UUID>[UUID]</UUID>
<UUID>[UUID]</UUID>
</ObtenerPeticionesPendientesResult>
</ObtenerPeticionesPendientesResponse>
JSON
{
"codStatus": "1100",
"uuids": [
{
"uuid": "[UUID]"
},{
"uuid": "[UUID]"
}
]
}
4.5. Consideraciones Técnicas
-
Se recomienda validar previamente que el RFC receptor sea correcto y activo.
-
No se permite enviar múltiples RFCs por solicitud (cardinalidad 1:1).
-
El sistema solo devolverá UUIDs con estatus "En proceso" de cancelación.
-
Este servicio no genera cancelaciones ni acepta/rechaza solicitudes, solo consulta el estado actual.
5 Consulta de Aceptación o Rechazo de Cancelación CFDI
El servicio de Aceptación o Rechazo permite a los receptores de CFDI responder una solicitud de cancelación realizada por el emisor. Aplica únicamente para CFDIs que se encuentran con estatus "En Proceso", es decir, aquellos que requieren autorización del receptor para que su cancelación sea válida.
Mediante este servicio, el receptor puede confirmar si acepta o rechaza la cancelación del comprobante correspondiente. La respuesta se debe enviar firmada con el certificado del receptor.
Esta operación se realiza mediante un servicio REST.
5.1 Estructura general de la petición
Tipo de consulta | Formato | Cardinalidad |
---|---|---|
Individual | XML | 1:1 |
5.2 Parámetros requeridos
Endpoint
Esta operación se realiza mediante un servicio REST.
Método | Ambiente | URL |
---|---|---|
POST | Pruebas | 🔗 https://pruebastfd.tralix.com:8081/cancela/answerSoap/ |
Autenticación y Headers
Header | Valor esperado |
---|---|
Content-Type |
application/xml |
ServerKey |
XSA_API |
Parámetros
Campo | Descripción |
---|---|
Fecha |
Fecha y hora de solicitud en formato AAAA-MM-DD HH:MM:SS |
RfcPacEnviaSolicitud |
RFC del PAC que envía la solicitud |
RfcReceptor |
RFC del receptor del CFDI (quien responde la cancelación) |
UUID |
Folio fiscal del comprobante que se desea aceptar o rechazar |
Respuesta |
Acción del receptor: Aceptacion o Rechazo |
Signature |
Nodo con la firma digital del receptor (uso de certificado) |
5.3 Ejemplo de petición
<can:ProcesarRespuesta xmlns:can="http://cancelacfd.sat.gob.mx">
<can:solicitud Fecha="[FECHA]" RfcPacEnviaSolicitud="[RFC_PAC_SOLICITANTE]" RfcReceptor="[RFC_RECEPTOR]">
<can:Folios>
<can:UUID>[UUID]</can:UUID>
<can:Respuesta>[Rechazo/Aceptacion]</can:Respuesta>
</can:Folios>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" />
</can:solicitud>
</can:ProcesarRespuesta>
5.4 Ejemplo de respuesta
<ProcesarRespuestaResponse xmlns="http://cancelacfd.sat.gob.mx"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<ProcesarRespuestaResult Fecha="[FECHA]"
CodEstatus="[COD_ESTATUS]"
RfcPac="[RFC_PAC]"
RfcReceptor="[RFC_RECEPTOR]">
<Folios Respuesta="Rechazo">
<UUID>[UUID]</UUID>
<EstatusUUID>[ESTATUS_UUID]</EstatusUUID>
</Folios>
<Signature Id="SelloSAT" xmlns="http://www.w3.org/2000/09/xmldsig#" />
</ProcesarRespuestaResult>
</ProcesarRespuestaResponse>
5.5 Consideraciones Técnicas
-
El UUID debe haber sido previamente consultado como "En Proceso" por el receptor.
-
Solo se permite un UUID por solicitud (cardinalidad 1:1).
-
La firma digital (
Signature
) debe generarse con el CSD del receptor. -
La respuesta (aceptación o rechazo) será enviada al SAT mediante el PAC y actualizará el estatus del CFDI.
-
El mismo UUID no puede ser respondido más de una vez.
6 Contacto y Soporte
Para soporte técnico o dudas sobre el uso del servicio puede comunicarse con el área de soporte técnico de Tralix vía ticket.
No Comments