Checklist antes de conectar con la AEAT
Repasa esto antes de mandar tu primer registro real. Cada punto es un rechazo que te ahorras.
Identidad y censo
- NIF del emisor válido, con su dígito de control comprobado.
- Razón social exactamente como en el censo de Hacienda. No el nombre comercial. Es el rechazo número uno (error 4104).
- Si declaras el sistema informático: NIF y razón social del fabricante también como constan en el censo (error 1110).
- IdSistemaInformatico de dos caracteres como máximo (error 1177), elegido por ti y declarado en tu declaración responsable.
Huella
- Los tres ejemplos oficiales de la AEAT cuadran byte a byte. Si no cuadran, para y arréglalo: todo lo demás da igual.
- Fechas en la huella en dd-mm-aaaa, no en ISO.
- Sello temporal en ISO-8601 con huso horario.
- Ese sello se guarda y se reutiliza al montar el XML, no se regenera.
- Importes con el mismo formato en la huella y en el XML.
- Huella en hexadecimal mayúsculas.
Cadena
- Una cadena por emisor, y todas las series comparten cadena.
- La escritura está serializada: dos facturas simultáneas no pueden encadenarse al mismo registro anterior.
- El primer registro del emisor se marca correctamente como tal.
- Guardas también número y fecha del registro anterior, no solo su huella: el XML los necesita.
Transporte
- Endpoint correcto. El del servicio web no es el mismo host que el del validador del QR, y los certificados de sello van a un puerto distinto.
- Certificado vigente, y aviso de caducidad configurado.
- Entorno de pruebas y producción separados, incluido el QR.
Comportamiento
- Reintentos con espera creciente para errores transitorios.
- Control de flujo: guardas el tiempo de espera que indica la AEAT y lo respetas.
- Distingues error transitorio (reintentar) de rechazo de contenido (no reintentar, avisar a alguien).
- Los errores se registran de forma que un humano pueda entenderlos.
Antes de abrir el grifo
Recomendación
Pon un solo emisor real en producción y déjalo correr una semana antes de migrar a nadie más.
Los problemas de verdad aparecen con facturación real, no en el sandbox.