Los dos códigos
- 4113
- «El XML no cumple con el esquema: se ha superado el límite permitido de registros para el bloque.» Un bloque del XML trae más repeticiones de las que admite.
- 4114
- «El XML no cumple con el esquema: se ha superado el límite máximo permitido de facturas a registrar.» La petición trae más facturas de las permitidas.
Los dos son del apartado que rechaza el envío completo. Según el documento de validaciones de la AEAT, el bloque RegistroFactura se repite de 1 a 1000 veces en cada petición, y altas y anulaciones pueden ir juntas, cada una en su propio RegistroFactura.

Cómo reparte Odoo los envíos
La cola del módulo corre cada 1 minuto y, en cada vuelta, junta los registros pendientes de cada empresa en una sola petición, en orden de cadena. Esa petición nunca pasa de 1000 registros:
- El parámetro verifactu.max_envelope_records fija cuántos registros salen en cada vuelta, y si nadie lo toca vale 1000.
- Lo que no cabe se queda en la cola para la vuelta siguiente.
- Si por cualquier camino se intentaran mandar más de 1000, el cliente del módulo para antes de enviar con «The AEAT accepts at most 1000 records per request.».
Dentro de cada registro, el módulo también ajusta los bloques a sus topes: el desglose se recorta a 12 líneas, sin aviso, y un canje de simplificadas lleva hasta 1000 facturas sustituidas.

El ritmo que marca la AEAT
Además del tamaño, la AEAT marca el ritmo. Cada respuesta trae un TiempoEsperaEnvio, los segundos que hay que esperar antes del siguiente envío, y el módulo lo respeta. Hay una excepción: si ya hay 1000 registros pendientes, no espera, porque la petición está llena. Si la AEAT contesta con un HTTP 429 por exceso de peticiones, el módulo espera lo que indique su cabecera Retry-After y, si no indica nada, 60 segundos.
Si te llega uno
Con el parámetro en su valor, un 4113 o un 4114 no debería darse. Si alguien subió verifactu.max_envelope_records por encima de 1000, devuélvelo a 1000 o déjalo vacío. Después, reenvía los envíos en Failed desde Envío a AEAT › Errores AEAT con Reintentar Selección: la cola los repartirá en peticiones del tamaño correcto.
¿Altas y anulaciones van en la misma petición?
Sí. La AEAT lo admite siempre que cada una vaya en su propio RegistroFactura, y la cola del módulo manda juntas las altas y las anulaciones pendientes de la empresa, en el orden de la cadena.
¿Conviene bajar el parámetro?
No hace falta. Con menos registros por petición se hacen más peticiones, y cada una tiene que esperar el TiempoEsperaEnvio que marque la AEAT.
Si con el parámetro en 1000 te llega uno de estos códigos, escríbenos a comercial@flexigobe.com con la respuesta del envío.
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): data/verifactu_crons.xml
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/Sis
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
