Evento Cancelación
El evento de Cancelación permite anular un Documento Electrónico (DE) dentro de un plazo máximo de 48 horas desde su aprobación. Es útil cuando se emitió un documento por error.
Para Cancelación, el campo tipoEvento debe ser 2
Solo puedes cancelar un documento dentro de las 48 horas siguientes a su aprobación por SIFEN
Casos de Uso
Cliente Incorrecto
Cuando se emitió factura al cliente equivocado
Error en Montos
Si hay errores en cálculos o montos que no pueden corregirse con Nota de Crédito
Duplicación
Cuando se emitió el mismo documento por duplicado
Cancelación vs Nota de Crédito
| Característica | Cancelación | Nota de Crédito |
|---|---|---|
| Plazo | Máximo 48 horas | Sin límite de tiempo |
| Efecto | Anula totalmente el documento | Puede ser parcial o total |
| Uso | Errores graves inmediatos | Devoluciones, ajustes normales |
| Visibilidad SIFEN | Marca como cancelado | Genera nuevo documento |
| Fiscalmente | Como si nunca existió | Operación contable registrada |
Parámetros del JSON
2 para Cancelación
Ejemplo de JSON Cancelación
{
"tipoEvento": 2,
"cdc": "054564544001002000000522023101611791662320",
"motivo": "Error de documento el cliente no pidio factura"
}
Asegúrate de usar el CDC completo de 44 dígitos tal como lo devuelve la API al crear el documento
Ejemplo de Solicitud Completa
const formData = new FormData();
const cancelacionData = {
tipoEvento: 2,
cdc: "054564544001002000000522023101611791662320",
motivo: "Error de documento el cliente no pidio factura"
};
formData.append('dataJson', JSON.stringify(cancelacionData));
formData.append('recordID', 'TU_RECORD_ID');
fetch('https://api.factpy.com/facturacion-api/evento/', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
if (data.status) {
console.log('✓ Cancelación exitosa:', data.fecha);
} else {
console.error('✗ Error:', data.code);
}
});
Ejemplo cURL
curl -X POST https://api.factpy.com/facturacion-api/evento/ \
-H "Content-Type: multipart/form-data" \
-F "dataJson={\"tipoEvento\":2,\"cdc\":\"054564544001002000000522023101611791662320\",\"motivo\":\"Error de documento el cliente no pidio factura\"}" \
-F "recordID=TU_RECORD_ID"
Verificar si está Dentro del Plazo
Antes de intentar cancelar, verifica que el documento fue aprobado hace menos de 48 horas:
function puedeSerCancelado(fechaAprobacion) {
const fecha = new Date(fechaAprobacion);
const ahora = new Date();
const horasTranscurridas = (ahora - fecha) / (1000 * 60 * 60);
if (horasTranscurridas <= 48) {
console.log(`✓ Puede cancelarse (${horasTranscurridas.toFixed(1)} horas)`);
return true;
} else {
console.log(`✗ Fuera de plazo (${horasTranscurridas.toFixed(1)} horas)`);
console.log('Usa Nota de Crédito en su lugar');
return false;
}
}
// Ejemplo de uso
puedeSerCancelado('2025-01-20 10:30:00');
Notas Importantes
El CDC debe corresponder a un documento aprobado por SIFEN
Proporciona un motivo descriptivo que justifique la cancelación
Verifica que el documento efectivamente necesita ser cancelado, ya que es irreversible
Si pasaron más de 48 horas, debes usar una Nota de Crédito en lugar de cancelación