3.2 KiB
VeriFactu - Protocolo AEAT
Qué es VeriFactu
Sistema mandatory de facturación electrónica de la AEAT (Agencia Estatal de Administración Tributaria) de España.
Obligatoriedad
A partir de cierta fecha, todas las facturas emitidas deben registrarse en VeriFactu, independientemente del formato (digital).
Operaciones
Alta
Registrar una factura nueva en el sistema.
Tipos de factura:
- F1: Factura completa
- F2: Factura simplificada (ticket)
- R1-R5: Rectificativas
Anulación
Cancelar una factura previamente registrada.
Subsanación
Corregir errores en facturas ya registradas.
Consulta
Buscar facturas previamente enviadas.
Encadenamiento de Hash
Cada factura incluye el hash de la anterior. El formato exacto validado por la AEAT es:
SHA256("IDEmisorFactura=NIF&NumSerieFactura=SERIE&FechaExpedicionFactura=dd-mm-yyyy&TipoFactura=F1&CuotaTotal=21.00&ImporteTotal=121.00&Huella=HASH_ANTERIOR&FechaHoraHusoGenRegistro=yyyy-mm-ddThh:mm:ss+hh:mm")
Para el primer registro de un emisor, Huella se deja vacío y en el XML se envía <PrimerRegistro>S</PrimerRegistro>. Para el resto, se envía <RegistroAnterior> con los datos de la factura anterior (nunca ambos a la vez).
URLs
Testing (Preproducción)
https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP
Producción
https://www1.agenciatributaria.gob.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP
Formato
SOAP 1.1 sobre HTTPS con mTLS (certificado cliente cualificado). Namespaces requeridos:
xmlns:sum→https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsdxmlns:sum1→https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd
Campos específicos a tener en cuenta:
TipoHuella: valor01(noSHA-256)FechaHoraHusoGenRegistro: formato ISO 8601 con huso horario (yyyy-mm-ddThh:mm:ss+hh:mm)IdSistemaInformatico: 2 caracteres (01, no1)Encadenamiento: usaxs:choice— oPrimerRegistrooRegistroAnterior, nunca los dos
CSV
Código de Verificación asignado por la AEAT con formato A-XXXXXXXXXXXXX. Acredita el registro de la factura en Hacienda. Cuando la API opera en modo fallback local devuelve el hash SHA-256 en su lugar y el estado indica Correcto (local).
Fallback Local
Cuando AEAT no está disponible (error de red, servidor caído, etc), la API guarda la factura localmente:
- Genera el hash localmente
- Guarda en
./data/(hash storage) - Devuelve el hash como CSV temporal
- Estado: "Correcto (local)"
Esto permite seguir operando sin conexión a AEAT.
Certificado Cliente
La AEAT requiere certificado cliente para aceptar requests (mTLS):
certificates:
storage_path: ./data/certs/
cert_file: ./data/certs/personal.p12
cert_password: tu_contraseña
Sin certificado válido, la API cae en fallback local.
Datos Obligatorios
- NIF del emisor
- Número de serie
- Fecha de expedición
- Tipo de factura
- Base imponible IVA
- Cuota IVA
- Importe total
Límites
- Máximo 1000 facturas por request
- Rate limit: consultar documentación AEAT