Anular un comprobante electrónico

Descripción

Este endpoint permite solicitar la anulación de un comprobante electrónico ante el SIFEN, como una factura, una nota de crédito, una nota de remisión u otro tipo de documento admitido por la API.

Para realizar la solicitud, debes indicar el identificador del comprobante que deseas anular y proporcionar un token Bearer válido.

La respuesta incluye el campo cancel, que indica si la anulación se realizó correctamente:

  • true: el documento fue anulado.
  • false: el documento no fue anulado.

Si la anulación no se realiza correctamente, la respuesta incluye el campo cancelError, que contiene el motivo del error cuando está disponible.

Endpoint

POST /api/sri_documents/:ID/cancel

Reemplaza :ID por el identificador del documento que deseas anular.

Autenticación

Este endpoint requiere autenticación mediante un token Bearer.

Incluye el siguiente encabezado en la solicitud:

Authorization: Bearer TU_TOKEN

Parámetros de la solicitud

Parámetro Tipo Obligatorio Descripción
ID integer Sí Identificador del comprobante que se desea anular.

Cuerpo de la solicitud

Debes enviar un objeto JSON con el motivo por el cual deseas anular el comprobante.

Ejemplo de JSON

{
    "cancelMotive": "Error en la factura"
}

Descripción de los campos

Campo Tipo Descripción
cancelMotive string Motivo por el cual se solicita la anulación del comprobante.

Ejemplo de solicitud completa

POST /api/sri_documents/178/cancel
Authorization: Bearer TU_TOKEN
Content-Type: application/json

Cuerpo:

{
    "cancelMotive": "Error en la factura"
}

Respuesta cuando la anulación se realiza correctamente

Cuando la solicitud de anulación se procesa correctamente, la respuesta incluye el campo cancel con el valor true.

Ejemplo de respuesta

{
    "@context": "/api/contexts/SriDocument",
    "@id": "/api/sri_documents/178",
    "@type": "SriDocument",
    "id": 178,
    "claveAccesso": "01800870883001001000058322026100917915795219",
    "secuencial": "0000583",
    "estado": "APROBADO",
    "serie1": "001",
    "serie2": "001",
    "cancel": true,
    "approvedDate": "2026-10-09T18:12:07-03:00",
    "qr": "https://ekuatia.set.gov.py/consultas-test/qr?nVersion=150&Id=01800870883001001000058322026100917915795219&dFeEmiDE=323032362d31302d30395431363a31333a3030&dNumIDRec=EQ5369854&dTotGralOpe=35.68000000&dTotIVA=0.97090909&cItems=2&DigestValue=39586d6a2b6f6a4d4b4b34474b347a7069467a4133794e496e6a3649484a7652684b6d6a427847513734453d&IdCSC=0001&cHashQR=2b0581586f2f002e54aba75365706593c1e603bc84f6ac2eae9c8d76be74c9d5",
    "xml": "",
    "cancelMotive": "Error en la factura"
}

En este ejemplo, cancel: true indica que el documento fue anulado. El campo cancelMotive contiene el motivo de anulación enviado en la solicitud.

Respuesta cuando la anulación falla

Si el SIFEN rechaza la solicitud de anulación, la respuesta incluye cancel: false y, cuando está disponible, el campo cancelError con el motivo del rechazo.

Ejemplo: comprobante no encontrado en el SIFEN

{
    "@context": "/api/contexts/SriDocument",
    "@id": "/api/sri_documents/176",
    "@type": "SriDocument",
    "id": 176,
    "claveAccesso": "01800870883001001000058122025061317915729883",
    "secuencial": "0000581",
    "estado": "RECHAZADO",
    "error": "TEST - El número de timbrado no se encuentra vigente a la fecha de emisión del comprobante",
    "serie1": "001",
    "serie2": "001",
    "cancel": false,
    "qr": "https://ekuatia.set.gov.py/consultas-test/qr?nVersion=150&Id=01800870883001001000058122025061317915729883&dFeEmiDE=323032352d30362d31335431363a33353a3030&dNumIDRec=EQ5369854&dTotGralOpe=35.68000000&dTotIVA=0.97090909&cItems=2&DigestValue=5a674f6637434b32706a62575a56664e5452337145706a65346a6b6c3253714a7a514e45776d546c79636f3d&IdCSC=0001&cHashQR=55499797d736b5bff99989ddf1e96f0b2f7d6ed83981d8bf75c8faae43b54bf0",
    "xml": "",
    "cancelMotive": "Error en la factura",
    "cancelError": "TEST - CDC no existente en el SIFEN - código: 4002"
}

El campo cancelError indica que el CDC del comprobante no existe en el SIFEN.

Ejemplo: plazo de anulación vencido

La solicitud también puede fallar cuando se supera el plazo permitido para solicitar la anulación.

{
    "@context": "/api/contexts/SriDocument",
    "@id": "/api/sri_documents/183",
    "@type": "SriDocument",
    "id": 183,
    "claveAccesso": "05800870883001001000000622026100917915839108",
    "secuencial": "0000006",
    "estado": "APROBADO",
    "serie1": "001",
    "serie2": "001",
    "cancel": false,
    "approvedDate": "2026-10-09T19:12:05-03:00",
    "qr": "https://ekuatia.set.gov.py/consultas-test/qr?nVersion=150&Id=05800870883001001000000622026100917915839108&dFeEmiDE=323032362d31302d30395431393a30393a3030&dNumIDRec=EQ5369854&dTotGralOpe=35.68000000&dTotIVA=0.97090909&cItems=2&DigestValue=78636174756730437134532b4e4c565a7470516c514955704b6849446d4c5457713744596d465274704a303d&IdCSC=0001&cHashQR=b0a1c8e8e89eaa84d7451e3e3b4ecad0ec3a297d6ed1d01ddcbfcc27d2fa3037",
    "xml": "",
    "cancelMotive": "Error en la factura",
    "cancelError": "TEST - Plazo de solicitud de cancelación de una FE extemporáneo - código: 4009"
}

En este caso, el comprobante mantiene el estado APROBADO, pero la solicitud de anulación no fue aceptada. El campo cancel: false indica que no se realizó la anulación.

Descripción de los campos de respuesta

Campo Tipo Descripción
@context string Contexto de la representación del recurso.
@id string Ruta del recurso del comprobante en la API.
@type string Tipo de recurso devuelto por la API.
id integer Identificador del comprobante.
claveAccesso string Clave de acceso del comprobante electrónico.
secuencial string Número secuencial del comprobante.
estado string Estado del comprobante, por ejemplo, APROBADO o RECHAZADO.
error string Mensaje relacionado con el rechazo o error del comprobante, cuando está disponible.
serie1 string Primera parte de la serie del comprobante.
serie2 string Segunda parte de la serie del comprobante.
cancel boolean Indica si la anulación se realizó correctamente. true significa que fue anulado; false, que no fue anulado.
approvedDate string Fecha y hora de aprobación del comprobante, cuando está disponible.
qr string URL del código QR para consultar la información del comprobante.
xml string Contenido XML del comprobante, cuando se incluye en la respuesta.
cancelMotive string Motivo de anulación enviado en la solicitud.
cancelError string Mensaje que explica por qué no se realizó la anulación, cuando está disponible.

Consideraciones importantes

  • Incluye un token Bearer válido en el encabezado Authorization.
  • Utiliza el identificador correcto del comprobante que deseas anular.
  • Comprueba siempre el valor de cancel para determinar si la anulación se realizó correctamente.
  • Si cancel es false, consulta cancelError para identificar el motivo del fallo.
  • Un comprobante puede conservar el estado APROBADO y, al mismo tiempo, tener cancel: false. Esto significa que el comprobante fue aprobado originalmente, pero la solicitud de anulación no tuvo éxito.
  • La anulación está sujeta a las validaciones y los plazos establecidos por el SIFEN.