Formularios PDF AcroForm en C# para Modelos AEAT, FACe y sector público español
Los formularios PDF AcroForm en C# .NET son el formato técnico dominante de los Modelos AEAT (303 trimestral del IVA, 390 anual del IVA, 347 declaración de operaciones con terceros, 720 declaración informativa de bienes en el extranjero, 130/131 IRPF autónomos), de los formularios FACe para entrada de facturas electrónicas al sector público, de los expedientes administrativos electrónicos bajo Esquema Nacional de Interoperabilidad, y de la mayoría de los formularios oficiales que la AEAT, la TGSS (Tesorería General de la Seguridad Social), la DGT y el resto de organismos publicos españoles publican en sus sedes electrónicas. IronPDF cubre el ciclo completo del AcroForm en .NET: lectura programática del modelo descargado de la sede oficial, validación de campos contra los formatos ibéricos (NIF, cuenta IBAN española, código postal, importes con coma decimal), prefill automático desde el ERP o sistema interno, extracción de datos rellenos por el ciudadano o empleado, y aplanado (flattening) para archivado bajo plazos LGT (4-10 años) o ENI (indefinido).
TL;DR: Guía rápida — formularios PDF para el sector público español
Este tutorial cubre el manejo programático de formularios PDF AcroForm en C# anclado en los flujos del sector público español y en las particularidades formales de los Modelos AEAT, FACe y demás formularios oficiales ibéricos.
- A quién va dirigido: Desarrolladores .NET que construyen sistemas de prefill automático de Modelos AEAT para asesorías, gestorías, despachos profesionales o sistemas internos de gran empresa; integradores que conectan ERP con FACe para envío automatizado de facturas al sector público; ISV que ofrecen software de cumplimiento tributario que integra los formularios oficiales; equipos del sector público que digitalizan sus procesos administrativos bajo ENI.
- Qué construirá: Lectura programática de campos de un Modelo AEAT descargado de la sede electrónica, validación del NIF con dígito de control conforme a la convención ibérica, prefill de cabecera (datos identificativos, ejercicio, período) y de partidas (base imponible, cuota IVA al 21%/10%/4%, retenciones IRPF), extracción de datos cumplimentados por el ciudadano, y aplanado del PDF firmado para archivado bajo plazos de prescripción LGT.
- Dónde se ejecuta: .NET 10, .NET 8 LTS, .NET Framework 4.6.2+ y .NET Standard 2.0. Operación on-premise alineada con LOPDGDD/AEPD; los datos personales del contribuyente no abandonan el perímetro de la organización durante el rellenado.
- Cuándo aplicar este enfoque: Cuando deba automatizar la presentación de Modelos AEAT (gestoría que presenta cientos de Modelos 303 cada trimestre), cuando deba pre-rellenar el formulario FACe con datos del ERP antes de la firma del usuario, cuando construya un flujo de expediente administrativo bajo ENI que captura datos en un AcroForm y los procesa al backend, o cuando deba extraer datos de Modelos rellenos por contribuyentes para registrarlos en la contabilidad interna.
- Por qué importa técnicamente: El AcroForm es el formato técnico que la AEAT, TGSS y otros organismos públicos eligieron para sus formularios oficiales — no podrá sustituirlo por HTML web cuando trabaje con esos flujos. La automatización es lo que diferencia a la asesoría que tramita 50 Modelos 303 al trimestre manualmente de la que tramita 5.000 con calidad consistente y trazabilidad. Bajo VeriFactu, los justificantes de presentación se descargan en PDF AcroForm y deben archivarse durante el plazo LGT con firma PAdES-LTV.
Abra un Modelo AEAT descargado y listar sus campos:
-
Instala IronPDF con el Administrador de Paquetes NuGet
PM > Install-Package IronPdf -
Copie y ejecute este fragmento de código.
using IronPdf; var pdf = PdfDocument.FromFile("modelo-303.pdf"); foreach (var field in pdf.Form.Fields) { Console.WriteLine($"{field.Name}: {field.Value}"); } -
Despliegue para probar en su entorno real
Comienza a usar IronPDF en tu proyecto hoy mismo con una prueba gratuita
Una vez adquirida la licencia de IronPDF o iniciada la prueba de 30 días, registre la clave:
IronPdf.License.LicenseKey = "KEY";
IronPdf.License.LicenseKey = "KEY";
Imports IronPdf
IronPdf.License.LicenseKey = "KEY"
Tabla de contenido
- AcroForm en el ecosistema documental español
- Lectura programática de formularios oficiales
- Cumplimentación con datos ibéricos
- Extracción de datos rellenos
- Flatten, firma PAdES-LTV y archivado
- Procesamiento por lotes para gestorías y grandes contribuyentes
AcroForm en el ecosistema documental español
Modelos AEAT como AcroForm: el formato dominante
Los Modelos AEAT son los formularios oficiales que la Agencia Estatal de Administración Tributaria publica para las distintas obligaciones tributarias. La sede electrónica (sede.agenciatributaria.gob.es) los publica en formato PDF AcroForm — los descarga el contribuyente, los cumplimenta (manualmente, mediante AutoFirma con clave PIN, o programáticamente desde su software de gestión), los firma con certificado FNMT-RCM o equivalente, y los presenta telemáticamente vía sede electrónica. Los Modelos más frecuentes en flujo automatizado:
- Modelo 303 — IVA trimestral. El más voluminoso por frecuencia (cuatro veces al año) y por número de contribuyentes obligados. Una gestoría mediana presenta cientos al trimestre.
- Modelo 390 — IVA anual. Resumen del ejercicio fiscal completo. Presentación obligatoria para sujetos pasivos del IVA en régimen general.
- Modelo 347 — Declaración informativa de operaciones con terceros. Anual; incluye relación detallada de clientes y proveedores con los que se han realizado operaciones superiores a 3.005,06 € en el ejercicio.
- Modelo 720 — Declaración informativa de bienes y derechos situados en el extranjero. Obligatoria para residentes fiscales españoles con bienes superiores a 50.000 € en el exterior.
- Modelos 130 y 131 — IRPF autónomos trimestral (130 estimación directa, 131 estimación objetiva).
- Modelos 200 y 202 — Impuesto sobre Sociedades anual y pagos fraccionados.
- Modelo 100 — IRPF declaración anual del ciudadano.
Cada modelo tiene su versión vigente del PDF AcroForm con sus identificadores de campo específicos. La AEAT publica cada año la versión actualizada (frecuentemente con ajustes técnicos: nuevas casillas para tratamiento de novedades fiscales, ajustes de tipos de IVA, modificaciones en el régimen de IRPF). El desarrollador que automatiza la presentación de Modelos AEAT debe contemplar la evolución anual del formulario — los nombres de campo internos cambian entre versiones.
FACe y los formularios B2G del sector público
FACe (face.gob.es) — el Punto General de Entrada de Facturas Electrónicas de la Administración General del Estado — es el portal donde los proveedores del sector público envían sus facturas electrónicas en formato Facturae XML. Adicionalmente, FACe expone formularios PDF AcroForm para casos donde el envío automatizado no es viable (proveedores ocasionales, pruebas, recuperación de datos para incidencias). Estos formularios incluyen campos identificativos del emisor (NIF/CIF, razón social, dirección fiscal), del receptor (NIF del organismo público destinatario, código DIR3 de la unidad), y de la factura (número, fecha, importe, partidas).
Para Comunidades Autónomas que operan su propio Punto General de Entrada (algunas grandes — Cataluña con e.FACT, País Vasco con eFactura, Madrid con FACeB2B), los formularios pueden diferir ligeramente, pero la estructura técnica AcroForm es la misma.
Justificantes VeriFactu y archivado de presentaciones
Bajo el régimen VeriFactu (RDL 15/2025, vigente desde 1 ene 2027 para Impuesto de Sociedades / 1 jul 2027 para resto), cada factura emitida genera un registro de facturación con su huella encadenada. El justificante de la operación incluye un PDF que en algunos sistemas se distribuye como AcroForm rellenable (especialmente en flujos donde un humano interactúa antes de la presentación definitiva).
Los justificantes de presentación de Modelos AEAT también son AcroForm en muchos casos — la sede AEAT confirma la presentación entregando un PDF firmado con código CSV de verificación, que constituye prueba legal de la presentación. Este PDF debe archivarse bajo plazo LGT (4 años mínimo, ampliables a 10 con interrupción de prescripción).
Lectura programática de formularios oficiales
Abrir y listar campos de un Modelo AEAT
El primer paso de cualquier flujo de automatización es identificar los nombres internos de los campos del formulario. IronPDF expone pdf.Form.Fields con todos los campos del AcroForm cargado:
:path=/static-assets/pdf/content-code-examples/tutorials/pdf-forms-csharp-article/list-form-fields.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
Los nombres de campo en los Modelos AEAT no son legibles — son códigos internos como m303_iva_general_base, m303_iva_general_cuota, m303_nif_declarante. Conviene mantener un mapa entre nombres internos del campo y campos lógicos del dominio del sistema. Estos mapas deben actualizarse anualmente cuando la AEAT publica la versión del Modelo del nuevo ejercicio fiscal.
Tipos de campo en formularios ibéricos
Los Modelos AEAT y formularios FACe usan los cinco tipos estándar de AcroForm:
- Texto — NIF, razón social, dirección, casillas numéricas (importes, contadores).
- Checkbox — opciones binarias (acogimiento a régimen especial, declaración complementaria, etc.).
- Radio button — opciones excluyentes (estimación directa vs objetiva en IRPF, régimen general vs simplificado).
- Dropdown — listas cerradas (provincia, tipo de operación).
- Firma — campo de firma electrónica con certificado FNMT-RCM.
La AEAT habitualmente protege los campos calculados (total a ingresar = base × tipo IVA − retenciones) — son de sólo lectura desde la perspectiva del software cliente. El cálculo lo hace el formulario internamente mediante JavaScript del AcroForm. Esta dependencia interna del formulario es un detalle a respetar: IronPDF puede rellenar los campos de entrada pero los campos calculados se actualizan al abrir el formulario en un visor compatible con AcroForm JavaScript (Adobe Acrobat, FNMT-Ceres).
Cumplimentación con datos ibéricos
Validación del NIF con dígito de control
El NIF español tiene tres variantes formales y un dígito de control calculable. Antes de rellenar el campo NIF del Modelo AEAT, valídelo en cliente para evitar rechazos posteriores en la presentación:
using System.Text.RegularExpressions;
// Validador de NIF español. Cubre las tres variantes: NIF de persona física
// (8 dígitos + letra control), CIF histórico de entidades (letra + 7 dígitos
// + control), y NIE de residentes extranjeros (X/Y/Z + 7 dígitos + letra).
public static class ValidadorNif
{
private const string LETRAS_CONTROL = "TRWAGMYFPDXBNJZSQVHLCKE";
public static bool EsValido(string nif)
{
if (string.IsNullOrEmpty(nif)) return false;
nif = nif.ToUpperInvariant().Replace(" ", "").Replace("-", "");
// NIF persona física: 8 dígitos + letra control
var matchPersona = Regex.Match(nif, @"^(\d{8})([A-Z])$");
if (matchPersona.Success)
{
int numero = int.Parse(matchPersona.Groups[1].Value);
char letraEsperada = LETRAS_CONTROL[numero % 23];
return matchPersona.Groups[2].Value[0] == letraEsperada;
}
// CIF entidad: letra + 7 dígitos + dígito de control
var matchCif = Regex.Match(nif, @"^([A-HJ-NP-SUVW])(\d{7})(\d|[A-J])$");
if (matchCif.Success)
{
// El cálculo del control CIF es más complejo (par/impar, módulo 10).
// En implementación de producción usar librería específica.
return true;
}
// NIE: X/Y/Z + 7 dígitos + letra control
var matchNie = Regex.Match(nif, @"^([XYZ])(\d{7})([A-Z])$");
if (matchNie.Success)
{
int prefijo = "XYZ".IndexOf(matchNie.Groups[1].Value[0]);
int numero = int.Parse(prefijo.ToString() + matchNie.Groups[2].Value);
char letraEsperada = LETRAS_CONTROL[numero % 23];
return matchNie.Groups[3].Value[0] == letraEsperada;
}
return false;
}
}
using System.Text.RegularExpressions;
// Validador de NIF español. Cubre las tres variantes: NIF de persona física
// (8 dígitos + letra control), CIF histórico de entidades (letra + 7 dígitos
// + control), y NIE de residentes extranjeros (X/Y/Z + 7 dígitos + letra).
public static class ValidadorNif
{
private const string LETRAS_CONTROL = "TRWAGMYFPDXBNJZSQVHLCKE";
public static bool EsValido(string nif)
{
if (string.IsNullOrEmpty(nif)) return false;
nif = nif.ToUpperInvariant().Replace(" ", "").Replace("-", "");
// NIF persona física: 8 dígitos + letra control
var matchPersona = Regex.Match(nif, @"^(\d{8})([A-Z])$");
if (matchPersona.Success)
{
int numero = int.Parse(matchPersona.Groups[1].Value);
char letraEsperada = LETRAS_CONTROL[numero % 23];
return matchPersona.Groups[2].Value[0] == letraEsperada;
}
// CIF entidad: letra + 7 dígitos + dígito de control
var matchCif = Regex.Match(nif, @"^([A-HJ-NP-SUVW])(\d{7})(\d|[A-J])$");
if (matchCif.Success)
{
// El cálculo del control CIF es más complejo (par/impar, módulo 10).
// En implementación de producción usar librería específica.
return true;
}
// NIE: X/Y/Z + 7 dígitos + letra control
var matchNie = Regex.Match(nif, @"^([XYZ])(\d{7})([A-Z])$");
if (matchNie.Success)
{
int prefijo = "XYZ".IndexOf(matchNie.Groups[1].Value[0]);
int numero = int.Parse(prefijo.ToString() + matchNie.Groups[2].Value);
char letraEsperada = LETRAS_CONTROL[numero % 23];
return matchNie.Groups[3].Value[0] == letraEsperada;
}
return false;
}
}
Imports System.Text.RegularExpressions
' Validador de NIF español. Cubre las tres variantes: NIF de persona física
' (8 dígitos + letra control), CIF histórico de entidades (letra + 7 dígitos
' + control), y NIE de residentes extranjeros (X/Y/Z + 7 dígitos + letra).
Public Module ValidadorNif
Private Const LETRAS_CONTROL As String = "TRWAGMYFPDXBNJZSQVHLCKE"
Public Function EsValido(nif As String) As Boolean
If String.IsNullOrEmpty(nif) Then Return False
nif = nif.ToUpperInvariant().Replace(" ", "").Replace("-", "")
' NIF persona física: 8 dígitos + letra control
Dim matchPersona = Regex.Match(nif, "^(\d{8})([A-Z])$")
If matchPersona.Success Then
Dim numero As Integer = Integer.Parse(matchPersona.Groups(1).Value)
Dim letraEsperada As Char = LETRAS_CONTROL(numero Mod 23)
Return matchPersona.Groups(2).Value(0) = letraEsperada
End If
' CIF entidad: letra + 7 dígitos + dígito de control
Dim matchCif = Regex.Match(nif, "^([A-HJ-NP-SUVW])(\d{7})(\d|[A-J])$")
If matchCif.Success Then
' El cálculo del control CIF es más complejo (par/impar, módulo 10).
' En implementación de producción usar librería específica.
Return True
End If
' NIE: X/Y/Z + 7 dígitos + letra control
Dim matchNie = Regex.Match(nif, "^([XYZ])(\d{7})([A-Z])$")
If matchNie.Success Then
Dim prefijo As Integer = "XYZ".IndexOf(matchNie.Groups(1).Value(0))
Dim numero As Integer = Integer.Parse(prefijo.ToString() & matchNie.Groups(2).Value)
Dim letraEsperada As Char = LETRAS_CONTROL(numero Mod 23)
Return matchNie.Groups(3).Value(0) = letraEsperada
End If
Return False
End Function
End Module
Bajo LOPDGDD, un Modelo AEAT presentado con NIF inválido entra inmediatamente en el flujo de cola de revisión manual de la AEAT — el contribuyente es notificado de la incidencia y la presentación queda en suspenso hasta su corrección. Validar en cliente evita estas notificaciones y mantiene la trazabilidad del proceso.
IVA al 21/10/4 %, retenciones IRPF y bases imponibles
Los Modelos AEAT distinguen las bases imponibles por tipo de IVA: general (21 %), reducido (10 %), superreducido (4 %), exento, no sujeto. La cuota se calcula multiplicando base × tipo. En el Modelo 303 trimestral las casillas habituales son:
- Casilla 01 — base imponible operaciones interiores tipo general (21 %)
- Casilla 03 — base imponible operaciones interiores tipo reducido (10 %)
- Casilla 05 — base imponible operaciones interiores tipo superreducido (4 %)
- Casilla 02, 04, 06 — cuotas IVA correspondientes a las casillas 01, 03, 05
- Casillas 07-08 — recargo de equivalencia (minoristas en régimen especial)
- Casilla 28 — base imponible operaciones intracomunitarias
- Casilla 41 — retenciones IRPF practicadas en el período
Para servicios profesionales, la retención IRPF es típicamente 15 % (régimen general) o 7 % (alta inicial autónomos durante los tres primeros años). Para arrendamientos urbanos la retención es 19 %. Estos tipos cambian periódicamente — consulte la normativa vigente al inicio del ejercicio fiscal.
Prefill de Modelo 303 desde libro registro SII
Las empresas obligadas al Suministro Inmediato de Información (SII) — facturación superior a 6,01 M €, grupos de IVA, inscritos en REDEME — llevan sus libros registro de IVA electrónicamente y los remiten en tiempo casi real a la AEAT. El Modelo 303 trimestral se puede prefill desde estos libros:
:path=/static-assets/pdf/content-code-examples/tutorials/pdf-forms-csharp-article/prefill-modelo-303-sii.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
El patrón es: el ERP agrega las facturas emitidas y recibidas del trimestre desde el libro SII, calcula las bases imponibles por tipo de IVA, descarga el Modelo 303 vigente desde la sede AEAT, IronPDF rellena los campos numéricos correspondientes, el contribuyente revisa y firma con su certificado FNMT-RCM, y el sistema presenta el Modelo telemáticamente vía la pasarela de la AEAT.
Prefill de Modelo 347 desde extracción de facturas anuales
El Modelo 347 — Declaración informativa de operaciones con terceros — agrega las operaciones con cada cliente y proveedor cuyo total anual supera 3.005,06 €. El prefill desde el ERP requiere:
- Extracción de operaciones anuales agrupadas por NIF de contraparte
- Filtrado de las contrapartes cuyo total anual supera el umbral
- Distinción de operaciones por trimestre (el Modelo 347 desglosa por trimestre)
- Rellenado de la tabla de detalle del Modelo con NIF, razón social, importe trimestral, importe anual
El Modelo 347 puede llegar a tener cientos de líneas de detalle para empresas medianas — la automatización es prácticamente obligatoria. Sin ella, la cumplimentación manual es propensa a errores que la AEAT detecta mediante el cruce automático con los Modelos 347 que presentan los proveedores y clientes (mismatch detection).
Extracción de datos rellenos
Datos cumplimentados por el ciudadano
Cuando el flujo invierte el sentido — un Modelo AEAT cumplimentado por un cliente externo que la gestoría recibe para procesar — la extracción usa el mismo pdf.Form.Fields para leer cada campo:
:path=/static-assets/pdf/content-code-examples/tutorials/pdf-forms-csharp-article/extract-form-data.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
Reconciliación con sistemas internos del despacho
Para gestorías que reciben cientos de Modelos por temporada, la extracción se conecta con el sistema interno de gestión del despacho: cada Modelo extraído se carga en la ficha del cliente correspondiente, los importes se contrastan contra la contabilidad ya cargada en el sistema, y las discrepancias se elevan al gestor para resolución manual. Bajo LOPDGDD, los datos del ciudadano (NIF, importes, datos identificativos) están sujetos a las medidas técnicas y organizativas que el RGPD impone — almacenamiento cifrado, acceso restringido al personal con necesidad operativa, registro de accesos para auditoría.
Flatten, firma PAdES-LTV y archivado
Aplanado del formulario tras la firma
Una vez cumplimentado y firmado el Modelo AEAT, conviene aplanar el AcroForm para fijar los valores y prevenir modificación posterior. El aplanado convierte los campos interactivos en contenido estático:
:path=/static-assets/pdf/content-code-examples/tutorials/pdf-forms-csharp-article/flatten-form.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
El aplanado debe hacerse antes o después de la firma según el flujo:
- Antes de la firma: si la firma debe cubrir el contenido literal del documento. El aplanado se hace, el documento aplanado se firma, el resultado es inalterable.
- Después de la firma: si la firma sólo debe cubrir el AcroForm original (sin aplanar). En este caso el aplanado se hace sobre un duplicado, separando la versión firmada (no aplanada, conservada para verificación criptográfica) del documento aplanado para distribución legible.
Archivado bajo plazos LGT con PAdES-LTV
Los Modelos AEAT presentados deben conservarse bajo los plazos de la Ley General Tributaria (4 años de prescripción general, ampliables a 10 años para inversiones plurianuales o por interrupciones de la prescripción). El justificante de presentación firmado por la AEAT (con código CSV) debe archivarse junto con el Modelo presentado, en formato preservable PDF/A-2b o PDF/A-3b, con firma PAdES-LTV que mantenga la verificabilidad a lo largo del plazo.
El flujo completo de archivado se cubre en detalle en el tutorial Archivado electrónico de facturas y documentos en C# con PDF/A para España. Para el flujo de Modelos AEAT específicamente: PDF AcroForm aplanado → conversión a PDF/A-2b → firma PAdES-LTV con certificado FNMT-RCM del responsable de la presentación → almacenamiento en repositorio documental con política de retención LGT.
Procesamiento por lotes para gestorías y grandes contribuyentes
Batch de Modelos 303 al cierre trimestral
Una gestoría que presenta Modelos 303 de cientos de clientes al final de cada trimestre necesita procesar la cola en paralelo controlado. El patrón:
:path=/static-assets/pdf/content-code-examples/tutorials/pdf-forms-csharp-article/batch-modelo-303.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
Configurar SemaphoreSlim con concurrencia 3-5 evita saturar la pasarela telemática de la AEAT (que tiene umbrales de carga por NIF presentador), y respeta el plazo SII de cuatro días naturales sin acumular operaciones pendientes más allá del periodo permitido.
Generación masiva FACe para sector público
Para proveedores con alto volumen de facturación al sector público (suministradores energéticos, telecomunicaciones, mantenimiento), la generación masiva FACe del cierre mensual sigue el mismo patrón. La diferencia es que cada factura genera no sólo el AcroForm FACe sino también el Facturae XML estructurado, el patrón híbrido PDF/A-3 con Facturae embebido, y la firma PAdES sobre el PDF visualizable. IronPDF puede aplicar todas estas operaciones en un único pipeline.
Próximos pasos
Los formularios PDF AcroForm en el ecosistema documental español son la pieza donde la automatización tributaria y administrativa encuentra su forma técnica concreta — Modelos AEAT, formularios FACe, expedientes administrativos bajo ENI, justificantes VeriFactu. IronPDF cubre el ciclo completo: lectura programática de los campos, validación contra los formatos ibéricos (NIF, importes, fechas), prefill desde sistemas internos, extracción de datos cumplimentados, aplanado tras la firma, y archivado conforme con los plazos legales.
Para profundizar: el tutorial Firma electrónica de PDF en C# para eIDAS QES, FNMT-RCM y flujos españoles cubre la firma PAdES sobre el AcroForm cumplimentado; el tutorial Archivado electrónico de facturas y documentos en C# con PDF/A para España cubre la conservación bajo plazos LGT/ENI; el tutorial Generación de facturas en C# .NET para VeriFactu, TicketBAI y Facturae cubre el flujo de facturación donde el AcroForm FACe se integra con el patrón híbrido Facturae XML embebido en PDF/A-3.
IronPDF — base sobre la que se monta la automatización AcroForm en el ecosistema documental ibérico: lectura, validación, cumplimentación, extracción, aplanado, firma PAdES-LTV, archivado conforme. Operación on-premise dentro del perímetro de la organización, alineada con LOPDGDD/AEPD.
¿Listo para empezar? Descargue IronPDF y pruébelo con una versión de prueba gratuita de 30 días. La biblioteca incluye una licencia de desarrollo gratuita que permite evaluar la lectura programática de Modelos AEAT, el prefill desde libro registro SII, la extracción de datos cumplimentados por el ciudadano, y la integración con el flujo de firma PAdES antes de comprometerse con una licencia de producción. Si tiene dudas sobre la integración con la sede electrónica de la AEAT o sobre el cumplimiento simultáneo de los plazos LGT y de las exigencias del Modelo AEAT vigente, contacte con nuestro equipo de soporte técnico.
Preguntas Frecuentes
¿Qué Modelos AEAT son los más frecuentes en flujo automatizado?
Los Modelos más voluminosos son: Modelo 303 (IVA trimestral, cuatro presentaciones al año, frecuencia operativa más alta para sujetos pasivos del IVA); Modelo 390 (IVA anual, resumen del ejercicio); Modelo 347 (declaración informativa de operaciones con terceros, anual, una línea por contraparte con operaciones superiores a 3.005,06 €); Modelo 720 (declaración informativa de bienes en el extranjero superiores a 50.000 €); Modelos 130 y 131 (IRPF autónomos trimestral, estimación directa vs objetiva); Modelos 200 y 202 (Impuesto sobre Sociedades anual y pagos fraccionados); Modelo 100 (IRPF anual del ciudadano). Cada uno tiene su versión vigente con identificadores de campo internos que la AEAT actualiza anualmente.
¿Cómo se valida el NIF español con dígito de control desde C#?
El NIF tiene tres variantes: persona física (8 dígitos + letra control), CIF de entidades (letra + 7 dígitos + dígito o letra control), NIE de residentes extranjeros (X/Y/Z + 7 dígitos + letra control). Para persona física y NIE, la letra control se calcula con módulo 23 sobre la cadena 'TRWAGMYFPDXBNJZSQVHLCKE'. Para NIE, el prefijo X/Y/Z se convierte en 0/1/2 antes de concatenar con los 7 dígitos. Para CIF, el cálculo del control es más complejo (par/impar, módulo 10) y conviene delegar en biblioteca específica. La validación debe hacerse en cliente antes de presentar el Modelo — la AEAT rechaza presentaciones con NIF inválido y notifica al contribuyente, requiriendo corrección.
¿Cómo se hace prefill de un Modelo 303 desde el libro registro SII?
Las empresas obligadas al SII (facturación > 6,01 M €, grupos de IVA, REDEME) remiten sus libros registro de IVA a la AEAT con un plazo de cuatro días naturales. El ERP que mantiene esos libros puede agregar las facturas emitidas y recibidas del trimestre, calcular las bases imponibles por tipo de IVA (general 21 %, reducido 10 %, superreducido 4 %, exento, no sujeto), y mapear los totales a las casillas correspondientes del Modelo 303 (01 base general, 02 cuota general, 03 base reducido, 04 cuota reducido, 05 base superreducido, 06 cuota superreducido, 28 intracomunitarias, 41 retenciones IRPF). IronPDF descarga el Modelo 303 vigente, rellena los campos numéricos con los valores calculados, el contribuyente revisa y firma con certificado FNMT-RCM, y el sistema presenta telemáticamente vía la pasarela AEAT.
¿Cuándo se debe aplanar un AcroForm — antes o después de la firma?
Depende del flujo. Si la firma electrónica debe cubrir el contenido literal del documento (incluyendo los valores cumplimentados), se aplana primero el AcroForm para fijar los valores como contenido estático, y después se firma el documento aplanado — el resultado es inalterable y la firma cubre exactamente lo que un humano lee. Si la firma sólo debe cubrir el AcroForm en su estructura interactiva (sin aplanar), la firma se aplica primero y el aplanado se hace sobre un duplicado, separando la versión firmada (no aplanada, conservada para verificación criptográfica) del documento aplanado para distribución legible. Para Modelos AEAT presentados telemáticamente la firma habitualmente cubre el AcroForm tal cual; el justificante de presentación firmado por la AEAT viene ya aplanado del lado servidor.
¿Qué plazos de conservación se aplican a Modelos AEAT presentados?
Los plazos derivan de la Ley General Tributaria: prescripción de las obligaciones tributarias a 4 años desde el día siguiente al fin del plazo de presentación, ampliable por cualquier interrupción de la prescripción (notificación administrativa, recurso, reconocimiento de deuda). Para inversiones plurianuales con deducción a lo largo de varios ejercicios el plazo efectivo se extiende a 10 años o más. El Código de Comercio impone adicionalmente 6 años desde el último asiento para documentación mercantil, independientemente del plazo fiscal. La práctica operativa es conservar los Modelos AEAT presentados, sus justificantes de presentación con código CSV firmados por la AEAT, y los libros registro de IVA, en formato PDF/A-2b o PDF/A-3b con firma PAdES-LTV, durante al menos 6 años (intersección LGT-CCom) y prudentemente 10 años para inversiones.
¿Cómo se procesa un batch de Modelos 303 sin saturar la pasarela AEAT?
Las pasarelas telemáticas de la AEAT tienen umbrales de carga por NIF presentador y por dirección IP origen — sobrepasarlos puede producir bloqueo temporal del usuario presentador. La práctica operativa es procesar el batch con SemaphoreSlim configurado a concurrencia 3-5: cinco presentaciones simultáneas máximo, con back-pressure cuando la pasarela responde con timeout o con código de error de saturación. Para gestorías con miles de Modelos al cierre trimestral, conviene distribuir las presentaciones a lo largo de varios días dentro del plazo legal en lugar de concentrarlas en el último día. La AEAT publica recomendaciones operativas sobre ventanas horarias de menor carga (madrugadas, fines de semana) para presentaciones masivas.
¿Cómo afecta LOPDGDD al procesamiento masivo de datos de contribuyentes?
Los datos contenidos en los Modelos AEAT (NIF, razón social, dirección, importes, datos contables) son datos personales bajo RGPD/LOPDGDD cuando el contribuyente es persona física o profesional autónomo. La AEPD supervisa el tratamiento de estos datos por parte de las gestorías y asesorías que actúan como encargadas del tratamiento o como responsables compartidos. Las medidas operativas obligatorias: almacenamiento cifrado de los Modelos cumplimentados, acceso restringido al personal con necesidad operativa, registro de accesos para auditoría, contratos de encargado del tratamiento con cada cliente, política de retención coherente con los plazos LGT y CCom (conservación durante el plazo legal y eliminación segura al término), y notificación de brecha en plazo de 72 horas ante incidentes.
¿Qué hace IronPDF que no pueda hacer la herramienta gratuita de la AEAT?
La AEAT publica herramientas gratuitas para cumplimentar Modelos (programas de ayuda de los Modelos 100, 200, 303, 390, etc.), pero están diseñadas para uso interactivo desde el escritorio del contribuyente — un Modelo a la vez, con interfaz gráfica. IronPDF permite automatización backend: prefill masivo desde libro registro SII o desde extracción ERP, validación de NIF y formatos en el flujo del software de gestión, integración con sistemas de archivado documental (no sólo el repositorio interno de la herramienta AEAT), procesamiento por lotes durante cierres trimestrales, y operación on-premise sin enviar datos a servicios externos (alineado con LOPDGDD/AEPD). Para una gestoría que presenta cientos o miles de Modelos por temporada, la automatización con IronPDF es la diferencia operativa fundamental respecto a la herramienta AEAT manual.
¿Cómo se integra el flujo con plataformas de gestión como A3, Wolters Kluwer, Sage o Holded?
Las plataformas de gestión españolas para asesorías (A3 Software, Wolters Kluwer A3 ASESOR, Sage 200, Holded, Cegid Aplifisa) gestionan internamente los datos contables y fiscales del cliente. La integración típica con IronPDF: la plataforma agrupa los datos del cliente para el ejercicio o trimestre objetivo, exporta el dataset al sistema externo (vía API REST o exportación CSV), el sistema externo descarga el Modelo AEAT vigente desde sede AEAT, IronPDF rellena los campos, la plataforma de gestión muestra el Modelo cumplimentado al gestor para revisión, el gestor revisa y solicita la firma del cliente vía portal, y la presentación telemática se hace desde el sistema externo. IronPDF vive como componente embebido en el sistema externo del integrador, no en la plataforma A3/Sage/Holded directamente.
¿Qué diferencias hay entre los Puntos Generales de Entrada autonómicos y FACe?
FACe (face.gob.es) es el Punto General de Entrada de la Administración General del Estado. Cataluña opera e.FACT (efact.aoc.cat) para sus Comunidades Autónomas y entes locales adheridos; el País Vasco opera eFactura para territorio foral vasco; la Comunidad de Madrid opera FACeB2B y otros sistemas específicos; Comunidad Foral de Navarra tiene su propia plataforma. Operacionalmente son equivalentes — todas aceptan Facturae XML como formato estructurado y AcroForm como alternativa para casos manuales — pero los códigos DIR3 de los organismos receptores y los detalles técnicos de la API SOAP/REST de cada plataforma difieren. Un proveedor multi-jurisdicción debe contemplar la coexistencia: misma factura Facturae generada, ruta de entrega diferente según el receptor.

