> ## Documentation Index
> Fetch the complete documentation index at: https://developers.ipsofactura.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cancelar CFDI

> Cancela un CFDI timbrado. Motivos: 01 (con sustitución, requiere uuid_sustitucion), 02, 03, 04.



## OpenAPI

````yaml /openapi.json post /cfdi/cancelar
openapi: 3.1.0
info:
  title: Ipsofactura API
  description: API de timbrado CFDI 4.0 de Palenca.
  version: v1
servers:
  - url: https://api.ipsofactura.com
    description: Producción
  - url: https://sandbox.api.ipsofactura.com
    description: Sandbox (pruebas, sin validez fiscal)
security:
  - apiKeyAuth: []
tags:
  - name: CFDI
    description: Timbrado, complemento de pago, cancelación y descarga de CFDIs.
  - name: Empresas
    description: Alta y consulta de empresas emisoras.
  - name: Certificados
    description: Administración del Certificado de Sello Digital (CSD).
paths:
  /cfdi/cancelar:
    post:
      tags:
        - CFDI
      summary: Cancelar CFDI
      description: >-
        Cancela un CFDI timbrado. Motivos: 01 (con sustitución, requiere
        uuid_sustitucion), 02, 03, 04.
      operationId: cancelar
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelarRequest'
            examples:
              Motivo 02 (sin relación):
                description: Motivo 02 (sin relación)
                value:
                  id: 9a4f07ff-3abc-435f-b7a6-88c2bc65b4c1
                  rfc_emisor: EKU9003173C9
                  motivo: '02'
              Motivo 01 (con sustitución):
                description: Motivo 01 (con sustitución)
                value:
                  id: 9a4f07ff-...
                  rfc_emisor: EKU9003173C9
                  motivo: '01'
                  uuid_sustitucion: <id-del-CFDI-que-sustituye>
        required: true
      responses:
        '200':
          description: CFDI cancelado
          content:
            '*/*':
              example:
                id: 9a4f07ff-...
                estatus: cancelado
                fecha_cancelacion: '2026-07-21T10:00:00'
                acuse: ...
                estatus_cancelacion: '201'
        '400':
          description: >-
            uuid_sustitucion requerido para motivo 01, RFC no coincide, o CFDI
            ya cancelado
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CancelarResponse'
        '404':
          description: CFDI no encontrado
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CancelarResponse'
components:
  schemas:
    CancelarRequest:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          pattern: >-
            ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
        motivo:
          type: string
          minLength: 1
          pattern: 01|02|03|04
        rfc_emisor:
          type: string
          minLength: 1
          pattern: >-
            [A-Z&Ñ]{3,4}[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])[A-Z0-9]{2}[0-9A]
        uuid_sustitucion:
          type: string
          pattern: >-
            ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
      required:
        - id
        - motivo
        - rfc_emisor
    CancelarResponse:
      type: object
      properties:
        id:
          type: string
        estatus:
          type: string
        acuse:
          type: string
        fecha_cancelacion:
          type: string
        estatus_cancelacion:
          type: string
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      description: API key emitida por Ipsofactura, enviada en el header x-api.
      name: x-api
      in: header

````