Cancelar un Documento
Cómo cancelar una Factura Electrónica o Nota de Crédito ya aprobada enviando el evento de cancelación a SIFEN.
Si emitiste un DE con datos incorrectos y querés invalidarlo legalmente, tenés que cancelarlo enviando un evento a SIFEN.
Cuándo cancelar
Cancelá un documento cuando:
- El documento está en estado
APROBADO - Detectaste un error en datos del receptor, items o montos
- El receptor aún no lo declaró ante la SET para deducir IVA
- Estás dentro del plazo legal (48 horas según normativa SIFEN)
La cancelación es irreversible. Una vez que SIFEN procesa el evento, el documento queda en estado CANCELADO permanentemente y no se puede revertir.
Cuándo NO podés cancelar
| Estado del DE | Acción correcta |
|---|---|
RECHAZADO | No requiere cancelación, ya es legalmente nulo. Emití uno nuevo |
CANCELADO | Ya está cancelado |
PENDIENTE | Esperá a que SIFEN procese el lote antes de decidir |
| Receptor ya lo declaró | Solo podés emitir una Nota de Crédito para anularlo |
Cómo cancelar
Identificá el CDC del documento a cancelar (44 dígitos).
Enviá el evento de cancelación con un motivo descriptivo (5-500 caracteres):
curl -X POST "https://api.sifende.com.py/api/v1/documento-electronico/01800123451001001000000122026042710000000006/cancelar" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"motivo": "Error en datos del receptor"
}'| Campo | Tipo | Req. | Restricción |
|---|---|---|---|
motivo | string | Sí | 5-500 caracteres |
Sifende reenvía el evento a SIFEN. El documento pasa a estado CANCELADO.
Verificá el estado consultando GET /api/v1/documento-electronico/status/:cdc.
Ejemplo en TypeScript
async function cancelarDocumento(cdc: string, motivo: string) {
const response = await fetch(
`https://api.sifende.com.py/api/v1/documento-electronico/${cdc}/cancelar`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.SIFENDE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ motivo }),
}
);
if (!response.ok) {
const error = await response.json();
throw new Error(`Cancelación fallida: ${error.detail}`);
}
console.log("Documento cancelado correctamente");
}
await cancelarDocumento(
"01800123451001001000000122026042710000000006",
"Error en RUC del receptor"
);Después de cancelar
- El número de documento no se libera: queda registrado como cancelado en SIFEN
- Si necesitás facturar nuevamente, emití un nuevo DE con el siguiente número de la secuencia
- El KuDE original queda invalidado y no debe entregarse al cliente
La cancelación NO consume un nuevo número de timbrado. Solo afecta al documento existente.
Errores comunes
| Error | Causa | Solución |
|---|---|---|
409 evento-cancelacion-error | Documento no está en APROBADO | Verificá el estado con GET /status/:cdc |
404 documento-electronico-not-found | CDC no existe | Verificá los 44 dígitos del CDC |
400 evento-cancelacion-error | Plazo de cancelación vencido | Emití una Nota de Crédito en su lugar |
Próximos pasos
- Inutilizar Numeración: para números no emitidos
- Nota de Crédito: alternativa cuando ya pasó el plazo
- Referencia: Cancelar