Saltar a contenido

Referencia

  • https://api.csfacturacion.com/cscancelacion/v4

API REST application/json

Credenciales de contratación vigente mediante Http Basic

Cancelación de CFDI y CFDI de Retenciones

/cancelar Solicitar Cancelación de CFDI

Petición

Tipo

application/json

Cuerpo

Campo Descripción Requerido
uuid El UUID de la factura a cancelar
key La llave privada del CSD en base64 (una línea)
cer El certificado del CSD en base64 (una línea)
keyPass La contraseña de la llave privada
tipoPeticion Debe ser "reten" o "cfdi"
emailEmisor Email del emisor (para la notificación) No
emailReceptor Email del receptor (para la notificación) No
rfcEmisor RFC del emisor de la factura a cancelar
rfcReceptor RFC del receptor de la factura a cancelar
total Total de la factura a cancelar
tipoComprobante Tipo de Factura (I, N, T, P, E) No aplica retenciones
motivo Motivo o justificación de la cancelación
acuse Requiere acuse de cancelación (SI/NO)
uuidRelacion UUID de la factura que se sustituye mediante 01 No

Ejemplo
POST /cscancelacion/v4/cancelar HTTP/1.1
Content-Type: application/json
Host: api.csfacturacion.com
Content-Length: 325

{
    "uuid": "4AA1138B-BF2E-0143-B7D0-CC2AA44E1DC2",
    "key": "",
    "cer": "",
    "keyPass": "pass",
    "tipoPeticion": "cfdi",
    "emailEmisor": "foo@bar.com",
    "emailReceptor": "foo@bar.com",
    "rfcReceptor": "XAXX010101000",
    "rfcEmisor": "AAA010101AAA",
    "total": "138132",
    "motivo": "02",
    "acuse": "SI",
    "tipoComprobante": "I"
}

Response

200 OK

application/json

Ejemplo
{
    "codigo": 201,
    "mensaje": "Solicitud de cancelación recibida con exito",
    "acuse": "${BASE_64_ACUSE}",
    "fechaOperacion": "2023-04-13T17:03:48",
    "fechaCancelacion": "2023-04-13T17:03:48"
}
422 Certificado Inválido

Tipo

application/json

Cuerpo

Certificado Inválido
{
    "codigo": 320,
    "mensaje": "320 Certificado no estaba vigente a la fecha de cancelacion (expiracion); Certificado no es el RFC del Emisor; rfc cert=CSO1304138Z0   rfc emisor=AAA010101AAA; Certificado Apocrifo;"
}
422 Datos Inválidos

Tipo

application/json

Cuerpo

Campo Inválido
{
    "codigo": 422,
    "mensaje": "Error de validación",
    "errores": {
        "tipoComprobante": "tipoComprobante must be in `{ \"I\", \"E\", \"P\", \"N\", \"T\" }`"
    }
}

Cuerpo de la respuesta

Campo Descripción
codigo Código de la operación (consulte referencia abajo)
mensaje Mensaje descriptivo del código de operación
acuse Acuse de la operación (en base64)
fechaOperacion Fecha de la operación
Código Descripción
201 Solicitud de Cancelación recibida con éxito
202 UUID Previamente Cancelado
203 UUID No encontrado o no corresponde en el emisor
204 UUID No aplicable para cancelación
205 UUID No existe
206 UUID no corresponde a un CFDI del Sector Primario
301 XML mal formado (Revisar descripción)
302 Sello mal formado o inválido
303 Sello no corresponde al emisor
304 Certificado revocado o caduco
305 Certificado inválido
310 Uso de certificado de e.firma inválido
320 Certificado revocado o caduco

Verificación de estatus

Se recomienda ampliamente hacer el monitoreo de los procesos de cancelación, se hace el recordatorio de que el código 201 devuelto por la autoridad o los proveedores autorizados de certificación no garantiza que el CFDI fue cancelado con éxito, sino que, la solicitud de cancelación fue aceptada para proceder con la cancelación. Por diversos motivos la autoridad puede no proceder con la cancelación (saturación, confusión, entre otros) por lo que es recomendable monitorear su estatus después de recibir un código 201. Para llevar a cabo esta tarea, la API dispone de un endpoint para la verificación de estatus de cancelaciones: /verificar

/verificar Consultar estatus CFDI

Petición

Tipo

application/json

Cuerpo

Campo Descripción
rfcEmisor RFC del emisor del comprobante
rfcReceptor RFC del receptor del comprobante
total Total exacto del comprobante
uuid Folio fiscal del comprobante (UUID)

Ejemplo
POST /cscancelacion/v4/verificar HTTP/1.1
Content-Type: application/json
Host: api.csfacturacion.com
Content-Length: 325

{
    "rfcReceptor": "AAA010101AAA",
    "total": "1334.00",
    "rfcEmisor": "AAA010101AAA",
    "uuid": "4AA1138B-BF2E-0143-B7D0-CC2AA44E1DC2"
}

Response

200 OK [CFDI Encontrado]

application/json

CFDI Encontrado
{
    "codigo": "201",
    "mensaje": "S - Comprobante obtenido satisfactoriamente.",
    "estatusCfdi": "Cancelado",
    "esCancelable": "Cancelable con aceptación",
    "estatusCancelacion": "Plazo vencido"
}
200 [CFDI NO ENCONTRADO]

Tipo

application/json

Cuerpo

205 CFDI NO ENCONTRADO
{
    "codigo": "205",
    "mensaje": "205 Uuid no existe  4AA1138B-BF2E-0143-B7D0-CC2AA44E1DC2",
    "estatusCfdi": null,
    "esCancelable": null,
    "estatusCancelacion": null
}
422 Datos Inválidos

Tipo

application/json

Cuerpo

Campo Inválido
{
    "codigo": "400",
    "mensaje": "Error de validación",
    "errores": {
        "rfcReceptor": "RFC invalido."
    }
}

Cuerpo de la respuesta

El servicio entrega cuatro valores: estado de la consulta, estado del cfdi, estado de cancelabilidad, estado de cancelación.

Campo Descripción
codigo Código de referencia de la respuesta (ver códigos en la tabla siguiente)
mensaje Mensaje descriptivo de la operación
estatusCfdi El estatus actual del comprobante ante el SAT (Vigente, Cancelado)
esCancelable Condiciones de cancelación (No cancelable, Cancelable con aceptación, Cancelable sin aceptación)
estatusCancelacion Condición bajo la cual procedió o no la cancelación (Cancelado con aceptación, Cancelado sin aceptación, Rechazada, Plazo Vencido, En proceso)

codigo (estado de consulta)

Este estado está relacionado con la solicitud de información al SAT. No al CFDI.

Código Descripción
201 El comprobante está registrado en el SAT
205 El comprobante con los datos dados no existe en el SAT
901 cancelación en proceso (obsoleto)
902 cancelación rechazada por receptor (obsoleto)
903 No cancelable (obsoleto)
904 No se efectuó la cancelación, intente de nuevo (obsoleto)
905 Cancelación procesando en el SAT; Intente de nuevo (obsoleto)

estatusCfdi (estado del cfdi)

Este estado se debe entender como que el SAT reconoce el CFDI y su estado general.

  • Vigente: El comprobante está vigente al momento de la consulta
  • Cancelado: El comprobante está cancelado al momento de la consulta

esCancelable (estado de cancelabilidad)

Se refiere a que si en el momento de la consulta el CFDI se puede cancelar.

  • No cancelable: No se puede cancelar, tal vez ya hay documentos relacionados.
  • Cancelable sin aceptación: Se puede cancelar de inmediato.
  • Cancelable con aceptación: Se puede cancelar, pero requiere aceptación por parte del receptor.

estatusCancelacion (estado de cancelación)

Se refiere al estado de la cancelación solicitada previamente.

  • (ninguno/vacío): El estado vacío es que no tiene estado de cancelación, porque no fue solicitada.
  • Cancelado sin aceptación: Se canceló y no fue necesaria la aceptación.
  • En proceso: En espera de que el receptor o el SAT la autorice.
  • Plazo vencido: Cancelado por vencimiento de plazo en que el receptor podía denegarla.
  • Cancelado con aceptación: Cancelado con el consentimiento del receptor.
  • Solicitud rechazada: No se realizó la cancelación por rechazo del receptor
Campos vacíos

Los campos estatusCfdi, esCancelable y estatusCancelacion son vacíos cuando se obtiene un codigo distinto a 201.