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.

Tipo de Evento

Para Cancelación, el campo tipoEvento debe ser 2

Plazo Máximo: 48 Horas

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

tipoEvento integer Requerido
Debe ser 2 para Cancelación
cdc string Requerido
CDC (Código de Control) del documento electrónico a cancelar. Es el CDC completo de 44 dígitos
motivo string Requerido
Descripción clara del motivo por el cual se cancela el documento electrónico

Ejemplo de JSON Cancelación

JSON
{
  "tipoEvento": 2,
  "cdc": "054564544001002000000522023101611791662320",
  "motivo": "Error de documento el cliente no pidio factura"
}
CDC Completo

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

JavaScript
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

bash
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:

JavaScript
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

CDC correcto

El CDC debe corresponder a un documento aprobado por SIFEN

Motivo claro

Proporciona un motivo descriptivo que justifique la cancelación

Confirmar antes

Verifica que el documento efectivamente necesita ser cancelado, ya que es irreversible

Fuera de plazo

Si pasaron más de 48 horas, debes usar una Nota de Crédito en lugar de cancelación

Próximos Pasos