Cancelar

Cancelar un CFDI

La solicitud se firma con el sello que cargaste y va directo al SAT. Lo que pasa después depende de si el receptor tiene que aceptarla.
  1. 1

    Pide la cancelación

    Con el folio fiscal y el motivo. Con el motivo 01, también el UUID del CFDI que lo sustituye.

    curl https://pruebas.timbrado.idea15.com/api/cancelarCFDI \
      -u "$DUBSARIA_USUARIO:$DUBSARIA_CLAVE" \
      -H "Content-Type: application/json" \
      -d '{"rfcEmisor":"EKU9003173C9","rfcReceptor":"EKU9003173C9","uuid":"988B5F3A-889E-4C9C-BAC7-0FEE99589858","total":"116.00","motivo":"02","uuidRelacionado":""}'
  2. 2

    Lee la respuesta del SAT

    CódigoHTTPQué significa
    201200Solicitud recibida.
    202200Ya estaba cancelado.
    203200El folio no corresponde al emisor.
    204200No aplica para cancelación.
    205200El SAT no tiene ese folio (en pruebas, siempre: ahí los timbres no llegan al SAT).
    301200El uuid, el uuidRelacionado o el rfcEmisor no tienen el formato del SAT; nada salió al PAC.
    500200No hay CSD cargado para el RFC emisor.
  3. 3

    Confirma cómo terminó

    Si el CFDI es «cancelable con aceptación», el receptor tiene tres días hábiles para responder; si no responde, se cancela. Consulta el estado final con consultarEstatusCFDI.

    curl https://pruebas.timbrado.idea15.com/api/consultarEstatusCFDI \
      -u "$DUBSARIA_USUARIO:$DUBSARIA_CLAVE" \
      -H "Content-Type: application/json" \
      -d '{"uuid":"988B5F3A-889E-4C9C-BAC7-0FEE99589858","rfcEmisor":"EKU9003173C9","rfcReceptor":"EKU9003173C9","total":"116.00"}'

Motivos

MotivoCuándo
01uuidRelacionadoComprobante emitido con errores con relación: ya timbraste el que lo sustituye.
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.

En pruebas

Los CFDI de pruebas no llegan al SAT, así que la respuesta real de pruebas es 205:

cancelarCFDI · HTTP 200
{
  "Codigo": "205",
  "Mensaje": "El SAT no tiene registrado este folio fiscal",
  "Acuse": "<Acuse Fecha=\"2026-10-29T21:24:26.5212341\" RfcEmisor=\"EKU9003173C9\"><Folios xmlns=\"http://cancelacfd.sat.gob.mx\"><UUID>988B5F3A-889E-4C9C-BAC7-0FEE99589858</UUID><EstatusUUID>205</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>+FR9CVmLaeOCE5bd7MLMgIaM3pe9DvC9wmAn107QQJ8Mc22Z3sNoPMnFEFgpfqp+bmeerW6DuwY+OKOLA9Z8/g==</DigestValue></Reference></SignedInfo><SignatureValue>oK8NmWydi+tEK/TMYQfeQPzs7pFBh1RxOUhXi+PN0GlY4BLjItZIWKnstGWJ+EnrBuj3CywB9uGGVa1vSPpd6Q==</SignatureValue><KeyInfo><KeyName>30001000000500002554</KeyName><KeyValue><RSAKeyValue><Modulus>hUcUOoGEtSDAlrF8KegQkGKY8aDAe9tNRkf48uj1+YirDP4cMEd8YEelQY1jLu1GINYKf9N9XxmOfHdL4FUr+cuOgrBviaGWcIsJfZ80IGpvox6kUSHoRt+h32yQayW0HuNOp0b3yiBp9Y6jTdYTFTAVzgzUjf4LfVt8n5FejVZ2xERIyROnGgbK8A4xBsPpFazHQkK2PCiYe+LYBm0Ux9UZYkYJ9Mu9rL5c51Sjgq8JJekorp0BzfKadRrSEFyD2Z6GwB0RswjLZQspojZGxUnqlbldvO6TjFUV4MT7EV8P7f2VTS0yr4qSwx0y080zoK10CbIoJXfsFROHypFj5w==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo></Signature></Acuse>"
}

Retenciones

Se cancelan con cancelarRetencion. Usa el PFX que cargaste con cargarPfx (y su contraseña en passwordPfx) o, si no hay, tu CSD.