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

🔗 https://pruebastfd.tralix.com:8081/cancelCfdi

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.

Esta operación se realiza mediante un servicio REST.
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

🔗 https://pruebastfd.tralix.com:8081/cancela/pendientesSoap/

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
Back to top