Ir al contenido

Revocar Autorización

Cancela la autorización legal que permite a Factux enviar registros a VeriFactu.

  1. Ve a Configuración > VeriFactu.
  2. Localiza la sección de autorización — debe estar en estado Firmada (verde).
  3. Clic en “Revocar autorización a Factux” — se abre diálogo de confirmación.
  4. Lee la advertencia — las facturas dejarán de enviarse a VeriFactu.
  5. Clic en “Revocar” — la autorización se marca como revocada.

ALERTA: Esta acción es irreversible. Deberás crear una nueva autorización si quieres reactivar VeriFactu.

AntesDespués
Facturas se envían a VeriFactuFacturas NO se envían a VeriFactu
Badge Firmada (verde)Badge Revocada (gris)
PDF incluye QR VeriFactuPDF sin QR VeriFactu
Botón “Revocar” visibleBotón “Crear Nueva Autorización” visible
SituaciónAcción recomendada
Ya no quieres usar VeriFactuRevocar + desactivar opt-in
Cambio de razón socialRevocar + crear nueva con nuevos datos
Firma por errorRevocar inmediatamente
Problemas de privacidadRevocar + contactar soporte
  • Badge cambia a Revocada (gris).
  • Aparece fecha de revocación: “Revocada el 16/02/2026”.
  • Botón “Crear Nueva Autorización” disponible.
  • Toast de confirmación: “Autorización revocada”.
  • Las nuevas facturas emitidas NO se envían a VeriFactu.
MensajeCausaSolución
Botón deshabilitadoAutorización no firmadaSolo puedes revocar autorizaciones firmadas
”No authorization to revoke”Sin autorización activaCrear autorización primero
Mutation: revokeAuthorizationMutation

Ubicación: VeriFactuAuthorizationForm.tsx

Flujo:

const { error } = await supabase
.from('verifactu_authorizations')
.update({
status: 'revoked',
revoked_at: new Date().toISOString(),
revoked_by: user.id, // Si está autenticado
revocation_reason: null, // Opcional: motivo
})
.eq('id', authorization.id);

Invalidación de cache:

queryClient.invalidateQueries({
queryKey: ['verifactu-authorization', currentBusinessId]
});
queryClient.invalidateQueries({
queryKey: ['verifactu-status']
});
Verificación de estado revocado

Función: isVeriFactuEnabled()

Condición de revocación:

SELECT id FROM verifactu_authorizations
WHERE business_id = '<business_id>'
AND status = 'signed'
AND signed_at IS NOT NULL
AND revoked_at IS NULL -- Esta condición falla si está revocada

Si revoked_at IS NOT NULL → La query no devuelve resultados → isVeriFactuEnabled() retorna false.

Resultado:

  • Facturas emitidas después de la revocación NO se envían a VeriFactu
  • Campo verifactu_status permanece NULL
  • No se genera CSV ni QR
Crear nueva autorización tras revocación

El índice único solo afecta a autorizaciones activas:

CREATE UNIQUE INDEX idx_one_active_auth_per_business
ON verifactu_authorizations(business_id)
WHERE status IN ('pending', 'signed');

Como status = 'revoked' no está en la condición WHERE, el índice NO impide crear una nueva autorización.

Flujo permitido:

  1. Revocar autorización actual (status = ‘revoked’)
  2. Crear nueva autorización (status = ‘pending’)
  3. Firmar nueva autorización (status = ‘signed’)

Estado final:

  • 1 autorización revocada (histórico)
  • 1 autorización firmada (activa)