Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática ESPECIFICACIONES PARA EL ENVÍO DEL IMPUESTO SOBRE EL VALOR AÑADIDO (DECLARACION-RESUMEN ANUAL) A LA AEAT A TRAVÉS DE LA BANCA ELECTRÓNICA DE UNA ENTIDAD FINANCIERA 1. OBJETIVO Envío del impuesto sobre el valor añadido, declaración-resumen anual (modelo 390) por los contribuyentes que no dispongan de certificado de usuario homologado por la AEAT, a través de la Banca Electrónica de una Entidad Financiera que tenga firmado un convenio con la AEAT que le permita actuar como Colaborador Social. Declaración a la que se refiere esta especificación: 390 – Impuesto sobre el Valor Añadido. Declaración-Resumen anual 2. REQUISITOS DEL CONTRIBUYENTE 2.1. Debe estar en disposición de generar un fichero conteniendo la declaración con el programa PADRE que confecciona la AEAT o empresa de desarrollo, según el esquema publicado. 2.2. Debe disponer de una conexión y acceso a la Banca Electrónica de la Entidad Financiera, para que ésta transmita firmada la declaración a la AEAT, reciba la respuesta y la devuelva al contribuyente. 3. REQUISITOS DE LA ENTIDAD FINANCIERA 3.1. Debe disponer de un servicio de captura del documento XML a transmitir. 3.2. Debe disponer de un mecanismo de transformación del documento XML a plano, según las especificaciones que se detallan en el apartado 9. 3.3. Debe seleccionar determinados campos de la declaración para mostrarlos al contribuyente con objeto de obtener la autorización para su transmisión a la AEAT. 3.4. Debe generar una firma electrónica con el certificado electrónico de la Entidad según se especifica en el apartado 4. 3.5. Debe enviar el documento XML de la declaración, el fichero plano, datos de firma y la firma electrónica según se especifica en el apartado 5. versión 1.0 21/12/2010 11:15:00 Página 1 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática 3.6. Debe devolver al contribuyente los datos en formato html devueltos por la AEAT, como resultado de la aceptación o no de la declaración según se especifica en el apartado 6. 3.7. También es deseable que gestione los errores leves de tipo censal que pueden manifestarse en la presentación de la declaración según se especifica en el apartado 7. A continuación se describe cómo debe implementarse esta funcionalidad. 4. OBTENCIÓN DE LA FIRMA A PARTIR DEL FICHERO QUE CONTIENE LA DECLARACIÓN El documento XML generado por el programa PADRE de la AEAT u otro desarrollador, se deberá transformar en fichero plano. Para ello se podrá utilizar las herramientas que pone la AEAT a disposición de las EECC (ver apartado 9). En el origen de la firma (página 1 + \n + página 6 + \n), se localiza el NIF del declarante (posiciones 15 al 23 de la página 1) que la EEFF deberá contrastar con los datos del usuario, mostrarle los datos de la firma, pedir al usuario la firma o acreditación de la banca electrónica y contrastarla para poder continuar con el envío. La Entidad Financiera tendrá que desarrollar una aplicación en la que firmará los datos origen de firma de la declaración recibida del contribuyente, del que previamente se eliminarán los caracteres de tipo CRLF. La firma generada deberá estar en formato PKCS#7, con el atributo de autenticación signingTime, y no deberá contener el origen de los datos firmados (dettached). El PKCS#7 se generará en formato BASE64. La firma generada debe ser equivalente a la obtenida mediante el método crypto.signText() de JavaScript en el navegador FireFox, aunque sin los CRLFs. El PKCS#7 obtenido se asignará a un campo (FIR) del formulario que se envía. El origen de la firma, posteriormente a la firma, se pasa a Base64 para su envío en otro campo (TXT) del formulario enviado. 5. ENVÍO FIRMADO AL SERVIDOR DE LA AEAT Se enviará a la siguiente URL de la AEAT https://www1.agenciatributaria.gob.es/es13/l/ewtfewlinktf mediante el método POST, un formulario web que contendrá, entre otros, los datos origen de la firma codificados en BASE64, junto con la firma generada. Los datos a enviar serán una cadena de caracteres encapsulada como si fuese desde un formulario por el método POST. Se debe de respetar el orden de las versión 1.0 21/12/2010 11:15:00 Página 2 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática variables, que irán etiquetadas como nombre=valor, separadas mediante el símbolo &, y sólo con el valor en codificación urlencoded. Hay que tener en cuenta que sólo el valor de la variable es el que debe ir como urlencoded, ya que el servidor de la AEAT espera la misma entrada que la que recibiría desde un navegador. El &nombre= tiene que ir sin urlencoded. La mayoría de estos valores se obtiene de la página 1 o página 6 del fichero plano de la declaración entre las posiciones indicadas. El orden de las variables, su nombre y sus contenidos son los indicados a continuación: HID=INF1390A SOP=Vacío o código de entidad de la EEFF (4 caracteres). Nota: este código es el que se utiliza en las estadísticas, por lo que es importante que sea correcto. NAV=Vacío. NDC=NIF del sujeto pasivo. (posiciones 15 al 23 de la página 1) NAP=Apellidos, razón social o denominación del sujeto pasivo (posiciones 24 al 53 de la pagina 1) NOM=Nombre del sujeto pasivo. (posiciones 54 al 68 de la página 1) TEL=Vacío. ADM=Código de delegación (2 caracteres) + código de administración (3 caracteres) (posiciones 10 al 14 de la página 1) EJF=Ejercicio Fiscal. (posiciones 91 al 94 de la página 1) P01=Vacío o resultado de la liquidación [86]. (posición 44 a 60 de la pagina 6) versión 1.0 21/12/2010 11:15:00 Página 3 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática P02=Vacío o resultado de la liquidación anual atribuible al territorio común [94]. (posición 133 a 149 de la página 6) TXT=Datos origen de la firma codificados en Base-64. (página 1 + \n + página 6 + \n). FIR=Firma en formato PKCS#7. CRL=’|’. LEV=Constante 000000000000 (12 ceros) F01=Fichero plano completo de la declaración obtenido a partir del documento XML (ver apartado 9) generado por el programa de Ayuda de la AEAT o empresa de desarrollo, eliminados los saltos de línea, embebido dentro de la estructura que se describe en el apartado 8. PUN=Constante 00000000 (8 ceros) XFI=Documento XML generado por el programa de Ayuda de la AEAT o empresa de desarrollo. CMN=Vacío (Reservado AEAT). FIN=Vacío, indicador de fin de datos. Atención: Se puede invocar al servidor https://www1.agenciatributaria.gob.es (solicita certificado X509v3) o https://www2.agenciatributaria.gob.es (sin certificado) Los datos origen de la firma y la firma se han de enviar como Base-64 y sin que contengan caracteres de tipo CRLF. A continuación se detalla la secuencia de pasos que debe realizar el software comercial para las variables que hemos detectado generan mayor tipo de errores en los envíos: Contenido de la variable F01=: 1. Pasar a ISO-8859-15 la cadena de datos del fichero plano completo de la declaración obtenido a partir del documento XML (ver apartado 9) generado por el programa de Ayuda de la AEAT o empresa de desarrollo, eliminados los saltos de línea, embebido dentro de la estructura que se describe en el apartado 8. 2. Eliminar caracteres de tipo CRLF. 3. Transformar el resultado a URLEncoded. versión 1.0 21/12/2010 11:15:00 Página 4 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática Contenido de la variable TXT=: 1. Obtener el origen de firma (página 1 + \n + página 6 + \n). 2. Pasar el origen de firma a ISO-8859-15. 3. Eliminar caracteres de tipo CRLF. 4. Transformar el resultado a Base64. 5. Transformar el resultado a URLEncoded. Contenido de la variable FIR=: 1. Obtener el origen de firma (página 1 + \n + página 6 + \n). 2. Pasar el origen de firma a ISO-8859-15. 3. Eliminar caracteres de tipo CRLF. 4. Generar el PKCS#7 en formato Base64. 5. Transformar el resultado a URLEncoded. 6. RECEPCIÓN DE LA RESPUESTA DE LA AEAT Y ENVÍO AL CONTRIBUYENTE La AEAT genera, de forma predeterminada para cualquier petición de presentación de declaraciones con certificado electrónico, una respuesta en formato HTML. En caso de aceptación, dicha página contendrá la copia electrónica de la presentación realizada, en formato PDF, embebida dentro de la página. A efectos de la AEAT el justificante de la presentación no es la página HTML devuelta sino el PDF que se encuentra embebido en la misma. En caso de rechazo la página contendrá una lista de los errores encontrados. Para los casos de aceptación de la declaración el título de la página de respuesta correcta comienza por el Código Seguro de Verificación (16 primeros caracteres). El título de la página de rechazo tiene el texto “ERROR”. La página correcta siempre contendrá el código seguro de verificación (variable CEL de Javascript) y la página de respuesta de error nunca lo contendrá. El código seguro de verificación, junto con la fecha y hora (variables Javascript FEC y HOR) y el Nº de entrada de Registro (variable Javascript REG), indican que la declaración se ha aceptado y grabado en el servidor de la AEAT. Para permitir el proceso automatizado de la respuesta, se incluyen en la página HTML, un conjunto de datos en variables JavaScript y etiquetas XML. Las variables javascript disponibles son: Var FEC=”&amp;FEC;”; /* Fecha de la presentación */ versión 1.0 21/12/2010 11:15:00 Página 5 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática Var HOR=’&amp;HOR;’; /* Hora de la presentación */ Var CEL=”&amp;CEL;’”; /* Código Seguro de Verificación */ Var REG=”&amp;REG;”; /* Número de entrada de Registro */ Var NIP=”&amp;NIP;”; /* NIF del Presentador */ Var APP=”&amp;APP;”; /* Apellidos y nombre, razón social o denominación del presentador */ Var CAP=”&amp;CAP;”; /* En calidad de, del presentador */ Var NDC=”&amp;NDC;”; /* NIF del declarante */ Var NAP=”&amp;NAP;”; /* Apellidos y nombre, razón social o denominación del declarante */ Var MOD=”&amp;MOD;”; /* Modelo */ Var EJF=”&amp;EJF;”; /* Ejercicio fiscal */ Var PER=”&amp;PER;”; /* Período */ Var JUS=”&amp;JUS;”; /* Número de justificante */ Var NRC=”&amp;NRC;”; /* Número de Referencia Completo */ Var ING=”&amp;ING;”; /* Importe del ingreso */ Var NRR=”&amp;NRR;”; /* Número de Referencia de Registro */ Var ICO=”&amp;ICO;”; /* Importe de aplazamiento, reconocimiento de deuda, compensación */ Var VIA=”&amp;VIA;”; /* Vía de entrada de la presentación */ Var LOT=”&amp;LOT;” /* ¿Presentación por Lotes? (Reservado AEAT) */ Var IDI=”&amp;IDI;”; /* Idioma de la presentación */ Var PDF=”&amp;PDF;”; /* ¿PDF embebido en la página de respuesta? */ Var YAP=”&amp;YAP;”; /* ¿Presentación realizada con anterioridad? */ Y su contrapartida en etiquetas XML: <FEC>&amp;FEC;</FEC> <HOR>&amp;HOR;</HOR> <CEL>&amp;CEL;</CEL> <REG>&amp;REG;</REG> <NIP>&amp;NIP;</NIP> <APP>&amp;APP;</APP> versión 1.0 21/12/2010 11:15:00 Página 6 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática <CAP>&amp;CAP;</CAP> <NDC>&amp;NDC;</NDC> <NAP>&amp;NAP;</NAP> <MOD>&amp;MOD;</MOD> <EJF>&amp;EJF;</EJF> <PER>&amp;PER;</PER> <JUS>&amp;JUS;</JUS> <NRC>&amp;NRC;</NRC> <ING>&amp;ING;</ING> <NRR>&amp;NRR;</NRR> <ICO>&amp;ICO;</ICO> <VIA>&amp;VIA;</VIA> <LOT>&amp;LOT;</LOT> <IDI>&amp;IDI;</IDI> <PDF>&amp;PDF;</PDF> <YAP>&amp;YAP;</YAP> En caso de error, la página de respuesta nunca contendrá la variable JavaScript CEL= y se podrán identificar las causas del error en las variables JavaScript Err[0]= a Err[99]= . El número máximo de errores que se mostrará será de 100. Variables javascript con la descripción de las causas del error: Err[0]=”&amp;E00;”; Err[1]=”&amp;E01;”; … Err[98]=”&amp;E98;”; Err[99]=”&amp;E99;”; Así mismo, dispondrá de la misma información en pseudoxml: <E00>&amp;E00;</E00><E01>&amp;E01;</E01> … <E98>&amp;E98;</E08><E99>&amp;E99;</E99> No es posible anular declaraciones ya grabadas. versión 1.0 21/12/2010 11:15:00 Página 7 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática En el caso de producirse algún error de comunicaciones durante la transmisión de la declaración a la AEAT, se podrá recuperar la página de aceptación o de error efectuando de nuevo la transmisión de la declaración. Si no hubiese sido recepcionada anteriormente en la AEAT, se obtendrá la página de respuesta correcta o error correspondiente. En el caso de ya haber sido grabada y aceptada en la AEAT, se tratará como una consulta, mostrándose la página HTML de aceptación de la declaración en el momento anterior (que contendrá el texto YA REALIZADA y no contendrá el PDF embebido; si se desea recuperar deberá utilizarse el servicio de Comprobación en la AEAT (Copia Electrónica)). Las páginas de respuesta correcta se han modificado para cumplir con la normativa relacionada con la Ley 11/2007. En el documento “Nuevo justificante de presentación telemática: servicios de ayuda a la presentación de las declaraciones” publicado en https://www.aeat.es/padres/eedd pueden consultarse los detalles. 7. PRESENTACIÓN TELEMÁTICA DE DECLARACIONES CON ERRORES LEVES Los errores de validación de los ficheros de declaración se clasifican en dos tipos: Errores graves: impiden la presentación de la declaración. Deben ser obligatoriamente subsanados. Errores leves: no impiden la presentación de la declaración, aunque se recomienda su subsanación, puesto que reporta beneficios al contribuyente (por ejemplo, agilización de las devoluciones en los modelos que corresponda). Al presentar por primera vez una declaración que contenga errores leves, se obtendrá una página de error con las características indicadas en el apartado anterior. La página de errores leves se distinguirá de la página de errores habitual por las siguientes características: Literal de identificación en el título de la página <title>Error - Pagina de errores leves</title>. Este literal de identificación no será traducido a idiomas. Presencia de la variable PEL, que siempre tomará el valor “1”. No obstante, se puede realizar un segundo intento de presentación de dicha declaración, simplemente modificando el valor de la variable LEV, que en este caso deberá ser LEV=100000000000. La declaración se aceptará en el caso de que sólo se detecten errores leves (no se aceptará si en este segundo envío se detecta algún error grave). Por lo demás, las características del envío y de la respuesta son las mismas que las indicadas en los apartados 5 y 6. 8. ENSOBRADO DEL FICHERO El fichero plano enviado se espera recibir embebido dentro de una estructura de datos que conoceremos como ‘ensobrado’. Esta estructura consta de las siguientes partes: Cabecera inicial versión 1.0 21/12/2010 11:15:00 Página 8 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática La constante <T390020110A0000>. Válida para el ejercicio 2011, para otros ejercicios consultar la documentación sobre el vector auxiliar que se encuentra en http://www.agenciatributaria.es/AEAT_Colaboradores/EEDD_ECR/Modulos_XML_Java/200 9/Ficheros/AUX_GENERAL.xls Vector auxiliar Información de la declaración delimitada entre los literales <AUX> y </AUX>. Esta información se encuentra detallada en el documento http://www.agenciatributaria.es/AEAT_Colaboradores/EEDD_ECR/Modulos_XML_Java/200 9/Ficheros/AUX_GENERAL.xls Se deben rellenar los siguientes campos: o Origen: contante ‘W’ o NIF de la etiqueta: NIF del sujeto pasivo (posiciones 15 al 23 de la página 1) o Tres letras de la etiqueta: Tres primeras letras de los apellidos y nombre o razón social (posiciones 24 a 26 de la página 1) o Idioma de la declaración: Uno de los siguientes literales ‘E’ para Español, ‘C’ para Catalán, ‘G’ para Gallego y ‘V’ para Valenciano o Identificador de presentador colectivo: constante 0 El resto de los campos deben ir a blanco. Vector de páginas Área de 300 caracteres delimitada por los literales <VECTOR> Y </VECTOR>. Se trata de un vector de 100 elementos de 3 caracteres cada uno que indica qué páginas componen la declaración. Después del último número de página válido se introduce el literal FIN y se rellena el área a blancos hasta completar los 300 caracteres. Fichero de la declaración Fichero plano de la declaración. Un único registro que incluye los datos de la declaración, separados por páginas. Han de venir en igual número y orden que el indicado en el vector de páginas. La longitud dependerá del número de hojas de las que conste la declaración. Cabecera final La constante </T390020110A0000>. Válida para el ejercicio 2011, para otros ejercicios consultar la documentación sobre el vector auxiliar que se encuentra en http://www.agenciatributaria.es/AEAT_Colaboradores/EEDD_ECR/Modulos_XML_Java/200 9/Ficheros/AUX_GENERAL.xls 9. OBTENCION DEL FICHERO PLANO A PARTIR DEL DOCUMENTO XML El envío de la declaración a la AEAT obliga a convertir el documento XML a fichero plano. La AEAT pone a disposición de las EEFF un programa Java que se puede utilizar como programa autónomo o como applet. Este programa se distribuye como un archivo comprimido (.zip) que contiene el fichero: versión 1.0 21/12/2010 11:15:00 Página 9 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática iva.jar – Archivo java con los ejecutables del transformador. El programa puede descargarse en el portal de Empresas de Desarrollo (http://www.agenciatributaria.es/AEAT.desarrolladores/Desarrolladores/Desarrolladores.ht ml en Inicio > Descarga de módulos > Ejercicio 20111) y Entidades colaboradoras (http://www.agenciatributaria.es/AEAT.colaboradores/Colaboradores/Colaboradores.html). Actualmente contiene los recursos necesarios para realizar las transformaciones de los documentos correspondientes a los ejercicios 2004, 2005, 2006, 2007, 2008, 2009, 2010 y 2011. Se actualizará todos los años para contener las nuevas versiones del modelo. El fichero plano obtenido contendrá un conjunto de líneas, cada una corresponde a una página del modelo, las páginas se encuentran delimitadas por los literales <T390PP> y </T390PP>, donde PP es el número de página. 10. ENLACE CON EL FORMULARIO La invocación al servicio se realizará a través de un formulario HTML en la siguiente URL: https://www2.agenciatributaria.gob.es/es13/h/servurlp.html?WEB=INTERNET&PRG=390& EJE=2011&VER=1.00&URL=PIR&IDI=E&EXT=?FIC=<camino_al_fichero> Donde la variable ‘FIC’ de la URL contendrá el camino, en el sistema de ficheros local, al fichero,- en formato XML generado por el programa de ayuda - que se desea presentar telemáticamente. Esta variable es opcional, si no se utiliza, se presentará al usuario una página HTML que permite seleccionar, a través de una ventana de diálogo, el fichero a presentar telemáticamente. El servicio de Presentación Telemática procederá a la transformación del fichero XML a fichero plano y la firma electrónica de la declaración utilizando el certificado electrónico solicitado al contribuyente y realizará la petición correspondiente a los programas HOST de la AEAT, que validarán la declaración y la firma y devolverán al contribuyente una página HTML con el resultado de la presentación. 11. COMPROBACIÓN DE LA PRESENTACIÓN DE LA DECLARACIÓN La Entidad Financiera puede proporcionar a sus clientes la posibilidad de comprobar que su declaración ha sido admitida por la AEAT, para lo cual puede utilizar distintas alternativas: A. Comprobación en la AEAT (Copia Electrónica): Se enviará a la siguiente URL, mediante el método POST, un formulario que contendrá los datos necesarios para identificar la declaración presentada. Desde el servidor de la AEAT únicamente se muestran previa autenticación de certificado electrónico del titular o presentador. 1 http://www.agenciatributaria.es/AEAT_Desarrolladores/EEDD/DescargaModulos/2011/Ficheros/IVAXMLaFi jo2011.zip versión 1.0 21/12/2010 11:15:00 Página 10 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática https://www1.agenciatributaria.gob.es/es13/l/ewsfewlinksf Los datos a enviar son una cadena de caracteres encapsulada como si fuese desde un formulario por el método POST. Se ha de respetar el orden de las variables, que irán etiquetadas como nombre=valor, separadas mediante el símbolo &, y sólo con el valor en codificación urlencoded. El orden de las variables, su nombre y su contenido son los indicados a continuación: HID=Constante COINX390. NIF=NIF del declarante. EJF=2011 (constante, identifica el ejercicio consultado). PER=Vacío CEL=Código seguro de verificación obtenido en la presentación (opcional). EXP=Vacío NIU=Vacío IDI=Constante ES VIA=Vacío FIN=Vacío, (indicador de fin de datos). La respuesta del servidor consistirá en una página html de respuesta de selección múltiple (incluso en el caso de que sólo haya una declaración para el NIF indicado) con las declaraciones/Códigos Seguros de Verificación para el NIF indicado. B. Almacenamiento de la respuesta correcta por la Entidad Financiera. La EF podrá almacenar en sus sistemas la respuesta correcta devuelta por la AEAT en su día, la cual podrá mostrar a su cliente cada vez que este se lo solicite. 12. ACTUALIZACIÓN DEL DOCUMENTO Este documento estará publicado en los portales de Empresas de Desarrollo y Entidades Colaboradoras: http://www.agenciatributaria.es/AEAT.desarrolladores/Desarrolladores/Desarr olladores.html versión 1.0 21/12/2010 11:15:00 Página 11 Departamento de Informática Tributaria Agencia Tributaria Subdirección General de Planificación y Coordinación Informática http://www.agenciatributaria.es/AEAT.colaboradores/Colaboradores/Colabora dores.html Las novedades o correcciones se irán incorporando a este documento, remarcándolas con _________________. versión 1.0 21/12/2010 11:15:00 Página 12