Guia de Invalidación de Documentos Rapida

Aprende a invalidar documentos tributarios electrónicos de forma rápida y sencilla.

Antes de comenzar

Necesitarás tener el código de generación (UUID) del documento que deseas invalidar y, en algunos casos, el código del documento de reemplazo.

Tipos de invalidación

Existen tres tipos de invalidación definidos en el catálogo CAT-024:

Tipo 1

Error en la información
Requiere documento de reemplazo.

Tipo 2

Rescindir la operación
No requiere documento de reemplazo.

Tipo 3

Otro motivo
Requiere documento de reemplazo y justificación.

Restricciones de tiempo importantes

Facturas (01): Se pueden invalidar hasta 3 meses después de emitidas. Otros documentos: Solo dentro de las 24 horas posteriores a la emisión.

Paso 1: Preparar la solicitud de invalidación

Selecciona el tipo de invalidación adecuado para tu caso y prepara la solicitud:

Tipo 1: Sustitución por error

POST /api/v1/invalidation

Invalidación por error con documento de reemplazo

Ejemplo de Solicitud

Request

{
  "generation_code": "UUID-del-documento-original",
  "replacement_generation_code": "UUID-del-documento-nuevo",
  "reason": {
    "type": 1,
    "responsible_name": "Juan Pérez",
    "responsible_doc_type": "36",
    "responsible_num_doc": "04141201721034",
    "requestor_name": "María López",
    "requestor_doc_type": "36",
    "requestor_num_doc": "06142301891012"
  }
}

Tipo 2: Anulación simple

POST /api/v1/invalidation

Invalidación sin documento de reemplazo

Ejemplo de Solicitud

Request

{
  "generation_code": "UUID-del-documento-original",
  "reason": {
    "type": 2,
    "responsible_name": "Juan Pérez",
    "responsible_doc_type": "36",
    "responsible_num_doc": "04141201721034",
    "requestor_name": "María López",
    "requestor_doc_type": "36",
    "requestor_num_doc": "06142301891012"
  }
}

Tipo 3: Anulación con motivo específico

POST /api/v1/invalidation

Invalidación por motivo específico con documento de reemplazo

Ejemplo de Solicitud

Request

{
  "generation_code": "UUID-del-documento-original",
  "replacement_generation_code": "UUID-del-documento-nuevo",
  "reason": {
    "type": 3,
    "responsible_name": "Juan Pérez",
    "responsible_doc_type": "36",
    "responsible_num_doc": "04141201721034",
    "requestor_name": "María López",
    "requestor_doc_type": "36",
    "requestor_num_doc": "06142301891012",
    "reason_field": "Descripción detallada del motivo de invalidación"
  }
}

Paso 2: Enviar la solicitud de invalidación

Envía la solicitud al endpoint de invalidación:

POST /api/v1/invalidation

Enviar solicitud de invalidación

Ejemplo de Solicitud

Request

{
  "generation_code": "UUID-del-documento-original",
  "reason": {
    "type": 2,
    "responsible_name": "Juan Pérez",
    "responsible_doc_type": "36",
    "responsible_num_doc": "04141201721034",
    "requestor_name": "María López",
    "requestor_doc_type": "36",
    "requestor_num_doc": "06142301891012"
  }
}

Ejemplo de Respuesta

Response

{
    "success": true,
    "data": {
        "identificacion": {
            "version": 2,
            "ambiente": "00",
            "codigoGeneracion": "606C41CB-8711-458D-B...",
            "fecAnula": "2025-04-16",
            "horAnula": "15:08:32"
        },
        "emisor": {
            "nit": "00000000000000",
            "nombre": "EMPRESA DE PRUEBAS SA DE CV 2",
            "tipoEstablecimiento": "01",
            "telefono": "21212828",
            "correo": "facturacion@empresa.com.sv",
            "codEstable": "C002",
            "codPuntoVenta": null,
            "nomEstablecimiento": "EJEMPLO"
        },
        "documento": {
            "tipoDte": "01",
            "codigoGeneracion": "UUID-del-documento-original",
            "selloRecibido": "2025F7712422E77541FE8...",
            "numeroControl": "DTE-01-C0020000-000000000000001",
            "fecEmi": "2025-04-16",
            "montoIva": 11.51,
            "codigoGeneracionR": null,
            "nombre": "CLIENTE DE PRUEBA",
            "tipoDocumento": "13",
            "numDocumento": "00000000-0",
            "telefono": "21212121",
            "correo": "cliente@gmail.com"
        },
        "motivo": {
            "tipoAnulacion": 2,
            "motivoAnulacion": null,
            "nombreResponsable": "Juan Perez",
            "tipDocResponsable": "36",
            "numDocResponsable": "06142510921231",
            "nombreSolicita": "Maria Lopez",
            "tipDocSolicita": "36",
            "numDocSolicita": "06142510921232"
        }
    }
}

Paso 3: Verificar el estado de invalidación

Puedes verificar que el documento ha sido invalidado correctamente consultándolo:

GET /api/v1/dte/UUID-del-documento-original

Verificar el estado de invalidación del documento

Ejemplo de Respuesta

Response


    "success": true,
    "data": {
        "control_number": "DTE-01-C0020000-000000000000001",
        "generation_code": "UUID-del-documento-original",
        "reception_stamp": "2025F7712422E77541FE8...",
        "transmission": "NORMAL",
        "status": "INVALIDATED", // Una vez ejecutada la invalidación, el DTE pasará a cambiar su estado
        "created_at": "2025-04-16 02:56:33",
        "updated_at": "2025-04-16 02:56:49",
        "json_data": {
          // El DTE emitido
        }
    }

Consideraciones importantes

Puntos a tener en cuenta

  • Estado del documento: Solo se pueden invalidar documentos en estado "RECEIVED".
  • Documentos de reemplazo: Para tipos 1 y 3, el documento de reemplazo debe existir y estar en estado "RECEIVED".
  • Documentos relacionados: Si un documento tiene documentos relacionados (como notas de crédito), estos no se invalidan automáticamente.
  • Validaciones del tipo 2: En la anulación simple, no debes proporcionar un documento de reemplazo.
  • Validaciones del tipo 3: El campo reason_field es obligatorio y debe proporcionar una explicación detallada.