Ir al contenido

Activar VeriFactu

Activa el sistema VeriFactu para tu negocio (opt-in voluntario hasta 2027).

  1. Ve a Configuración > Negocio — se abre la configuración del negocio.
  2. Localiza la sección VeriFactu.
  3. Activa el toggle “Activar VeriFactu” — cambia a verde.
  4. Guarda cambios — el sistema actualiza verifactu_opt_in = true.

IMPORTANTE: Necesitas plan Pro o superior y autorización firmada para que VeriFactu funcione.

RequisitoComo verificarlo
Plan Pro o superiorConfiguración > Suscripción
Feature verifactu: trueEn detalles del plan
Autorización firmadaConfiguración > VeriFactu (badge verde)
Datos fiscales completosConfiguración > Negocio (NIF, nombre fiscal)
  • El toggle queda en verde (activado).
  • Al emitir una factura, aparece el badge SENT en VeriFactu.
  • En el PDF de la factura se incluye el código QR de VeriFactu.
MensajeCausaSolución
Toggle deshabilitadoPlan sin feature VeriFactuActualizar a Plan Pro
Facturas no se envíanSin autorización firmadaCompletar autorización en VeriFactu
Facturas no se envíanToggle inactivoActivar toggle de VeriFactu
Campo en businesses
ALTER TABLE businesses
ADD COLUMN verifactu_opt_in BOOLEAN DEFAULT false;

Uso:

  • true: Negocio activó VeriFactu voluntariamente
  • false: VeriFactu desactivado (default hasta 2027)

Actualización:

UPDATE businesses
SET verifactu_opt_in = true,
updated_at = NOW()
WHERE id = '<business_id>';
Verificación de habilitación

Función: isVeriFactuEnabled(supabase, businessId)

Ubicación: supabase/functions/_shared/verifactu/service.ts

Condiciones (todas deben cumplirse):

  1. Opt-in activo:

    SELECT verifactu_opt_in FROM businesses
    WHERE id = '<business_id>'
    -- Debe ser TRUE
  2. Suscripción activa con feature:

    SELECT sp.features->>'verifactu' as verifactu_feature
    FROM business_subscriptions bs
    JOIN subscription_plans sp ON sp.id = bs.plan_id
    WHERE bs.business_id = '<business_id>'
    AND bs.status IN ('active', 'trialing', 'past_due')
    -- verifactu_feature debe ser TRUE
  3. Autorización firmada y no revocada:

    SELECT id FROM verifactu_authorizations
    WHERE business_id = '<business_id>'
    AND status = 'signed'
    AND signed_at IS NOT NULL
    AND revoked_at IS NULL
    -- Debe existir al menos 1 registro

Resultado:

  • Si todas TRUE → VeriFactu HABILITADO
  • Si alguna FALSE → VeriFactu DESHABILITADO (facturas se saltan)

Logs:

[VERIFACTU] Business abc123 is fully enabled - Opt-in: true, Auth ID: xyz789

o

[VERIFACTU] Business abc123 has not opted in to VeriFactu (optional until 2027)