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
cancelpara determinar si la anulación se realizó correctamente. - Si
cancelesfalse, consultacancelErrorpara identificar el motivo del fallo. - Un comprobante puede conservar el estado
APROBADOy, al mismo tiempo, tenercancel: 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.