# VeriFactu Fase 3: Envio a la AEAT

## Que es la Fase 3

La Fase 3 de VeriFactu es el envio automatico de los registros de facturacion a la Agencia Tributaria (AEAT) mediante mensajes SOAP/XML. Complementa las fases anteriores (hash SHA-256 y QR) con la transmision efectiva de cada alta y anulacion de factura al sistema SII de la AEAT.

Con esta fase activa, Frihet genera el XML conforme a la Orden HAC/1177/2024, lo firma con tu certificado digital y lo envia directamente a los servidores de la AEAT. Todo ocurre en segundo plano, sin intervencion manual.

:::info VeriFactu ≠ SII
Esta pagina describe el envio **VeriFactu** a la AEAT. El **SII (Suministro Inmediato de Información)** —obligatorio para empresas con facturacion superior a 6M EUR— es un sistema distinto y **forma parte de la hoja de ruta de Frihet** (planificado, todavia no disponible). No confundas ambos: solo VeriFactu envia hoy en dia de forma directa a la AEAT.
:::

## Certificado digital

Para enviar registros a la AEAT necesitas un certificado digital vigente. Frihet acepta certificados en formato `.pfx` o `.p12`.

### Donde obtener un certificado

| Emisor                                                                     | Tipo                      | Coste    |
| -------------------------------------------------------------------------- | ------------------------- | -------- |
| [FNMT (Fabrica Nacional de Moneda y Timbre)](https://www.sede.fnmt.gob.es) | Persona fisica o juridica | Gratuito |
| [CamCert (Camaras de Comercio)](https://www.camerfirma.com)                | Empresa                   | Variable |
| [ACCV (Comunitat Valenciana)](https://www.accv.es)                         | Regional                  | Gratuito |

### Subir el certificado

1. Ve a **Ajustes** > **Cumplimiento**
2. En la seccion **Certificado Digital**, haz clic en **Subir certificado**
3. Selecciona tu archivo `.pfx` o `.p12`
4. Introduce la contrasena del certificado

:::info Cifrado de la contrasena
La contrasena de tu certificado se cifra con AES-256-GCM antes de almacenarla. En ningun momento se guarda en texto plano.
:::

### Sandbox vs Produccion

El toggle **Modo sandbox** en **Ajustes** > **Cumplimiento** permite enviar registros al entorno de pruebas de la AEAT antes de activar el envio real.

- **Sandbox**: los registros se envian al endpoint de pruebas. La AEAT los valida pero no los registra oficialmente. Util para verificar que el certificado y los datos son correctos.
- **Produccion**: los registros se envian al endpoint oficial. Las facturas quedan registradas en el sistema SII de la AEAT.

:::tip
Activa el modo sandbox durante los primeros dias para confirmar que tu certificado funciona correctamente y que los datos se generan sin errores.
:::

## Envio automatico

### Activacion

1. Ve a **Ajustes** > **Cumplimiento**
2. Activa el toggle **Enviar automaticamente a AEAT**

Con este toggle activo, cada factura emitida o anulada se envia automaticamente:

### Flujo de alta (factura emitida)

1. Se calcula el hash SHA-256 de la factura (cadena inmutable)
2. Se genera el XML de alta conforme a la especificacion AEAT
3. Se firma el XML con tu certificado digital
4. Se envia via SOAP al endpoint de la AEAT
5. Se almacena la respuesta (CSV asignado o error)

### Flujo de anulacion (factura cancelada)

1. Se calcula el hash de anulacion con los 5 campos requeridos
2. Se genera el XML de anulacion
3. Se firma y envia al endpoint de la AEAT
4. Se almacena la respuesta y el estado de anulacion

Ambos flujos son fire-and-forget: el usuario puede seguir trabajando mientras el envio se procesa en segundo plano.

## Envio manual

Si el envio automatico no esta activo, o si necesitas reenviar una factura especifica:

1. Abre la factura en cuestion
2. Haz clic en el menu de acciones (tres puntos)
3. Selecciona **Enviar a AEAT**
4. Se muestra un dialogo de confirmacion con la preview del hash
5. Confirma para iniciar el envio

El envio manual sigue el mismo flujo tecnico que el automatico.

## Estados de envio

Cada factura muestra un badge con su estado de envio a la AEAT:

| Estado    | Badge               | Descripcion                                                 |
| --------- | ------------------- | ----------------------------------------------------------- |
| Pendiente | Outline (sin color) | Hash calculado, envio no iniciado                           |
| Enviado   | Gris                | Mensaje SOAP enviado, esperando respuesta de la AEAT        |
| Aceptado  | Verde               | La AEAT ha aceptado el registro y ha asignado un codigo CSV |
| Rechazado | Rojo                | La AEAT ha rechazado el registro. Ver detalle del error     |
| Error     | Rojo                | Error tecnico en el envio (red, certificado, timeout)       |

### Consultar el estado

El estado de envio es visible en:

- La vista de detalle de cada factura (badge junto al numero)
- El listado general de facturas (columna de estado)
- El [libro registro ampliado](#libro-registro-ampliado) (columnas adicionales)

## Reintentos automaticos

Cuando un envio falla por error tecnico (timeout, error de red, servicio AEAT no disponible), Frihet reintenta automaticamente:

- **Frecuencia**: cada 15 minutos
- **Maximo de intentos**: 3
- **Tras 3 fallos**: el estado queda como Error y requiere intervencion manual

Para reintentar manualmente una factura con estado Error:

1. Abre la factura
2. En el badge de estado rojo, haz clic en **Reintentar**
3. Se ejecuta un nuevo intento de envio

## Indicadores en PDF

Las facturas aceptadas por la AEAT incluyen informacion adicional en el PDF generado:

- **Badge "Registrada en AEAT"** en la cabecera del documento
- **Codigo CSV** asignado por la AEAT, junto al QR de verificacion

Estos indicadores solo aparecen cuando el estado de envio es **Aceptado**.

## Libro registro ampliado

Con la Fase 3 activa, el [libro registro](/cumplimiento/libro-registro) de facturas emitidas incluye 3 columnas adicionales:

| Columna               | Descripcion                                                                            |
| --------------------- | -------------------------------------------------------------------------------------- |
| Estado Envio AEAT     | Estado del envio del registro de alta (Pendiente, Enviado, Aceptado, Rechazado, Error) |
| CSV AEAT              | Codigo seguro de verificacion asignado por la AEAT al aceptar el registro              |
| Estado Anulacion AEAT | Estado del envio del registro de anulacion (si aplica)                                 |

Estas columnas se anaden al final del CSV exportado, despues de las 12 columnas estandar.

## Solucion de problemas

### "Certificado no configurado"

No se ha subido un certificado digital. Ve a **Ajustes** > **Cumplimiento** y sube tu archivo `.pfx` o `.p12`.

### "NIF no configurado"

El perfil fiscal no tiene NIF. Ve a **Ajustes** > **Perfil Fiscal** y completa tu identificador fiscal.

### Error SOAP / Error de conexion

Posibles causas:

- **Certificado expirado**: verifica la fecha de validez de tu certificado. Los certificados FNMT tienen una validez de 4 anos.
- **Contrasena incorrecta**: vuelve a subir el certificado con la contrasena correcta.
- **Servicio AEAT no disponible**: la AEAT tiene ventanas de mantenimiento. El sistema reintentara automaticamente.
- **Datos fiscales incompletos**: verifica que tu NIF, direccion fiscal y datos de empresa estan completos.

:::warning Certificado expirado
Un certificado expirado bloquea todos los envios. Renueva tu certificado en la FNMT o CamCert antes de la fecha de vencimiento.
:::

### Factura rechazada por la AEAT

La AEAT puede rechazar un registro por:

- NIF del emisor no coincide con el certificado
- Formato de fecha incorrecto
- Tipo de factura no valido para la operacion

Revisa el mensaje de error en el detalle de la factura. Corrige los datos y usa **Reintentar** para volver a enviar.

## Calendario legal

La obligacion de envio a la AEAT tiene plazos escalonados segun el RDL 15/2025:

| Tipo de contribuyente      | Fecha limite       |
| -------------------------- | ------------------ |
| Sociedades (S.L., S.A.)    | 1 de enero de 2027 |
| Autonomos (persona fisica) | 1 de julio de 2027 |

:::info
Frihet ya soporta el envio a la AEAT. Se recomienda activar el modo sandbox con antelacion para validar la configuracion antes de que la obligacion entre en vigor.
:::

## Relacion con otras fases

- **Fase 1 (Hash SHA-256)**: se calcula automaticamente en cada factura. Es la base del registro. Ver [VeriFactu](/cumplimiento/verifactu).
- **Fase 2 (QR AEAT)**: el codigo QR en el PDF enlaza a la sede electronica de la AEAT para verificacion.
- **Fase 3 (Envio AEAT)**: esta pagina. Transmision efectiva del registro a la AEAT via SOAP/XML.

---

**Anterior:** [VeriFactu](/cumplimiento/verifactu) | **Siguiente:** [Inmutabilidad y registro](/cumplimiento/inmutabilidad)
