Manual para Proveedores de Facturación Electrónica de BIESA 1 Contenidos Contenidos ........................................................................................................................ 2 Introducción ...................................................................................................................... 3 Instrucciones de uso ......................................................................................................... 4 Formulario ................................................................................................................ 4 CSV .......................................................................................................................... 4 XML ......................................................................................................................... 5 Formato Fichero Firmado ......................................................................................... 5 Instalación Java................................................................................................................. 6 Protocolo OTA ................................................................................................................. 7 Especificación del formato CSV del fichero de Factura .................................................. 8 Especificación del formato XML del fichero de Factura ............................................... 15 2 Introducción 3 Instrucciones de uso Requisitos para que un proveedor pueda enviar sus facturas a Boehringer de forma electrónica: 1. Ser usuario del Portal del Proveedor de BIESA 2. Estar autorizado y configurado por BIESA como proveedor que puede facturarle electrónicamente 3. Estar en posesión de un certificado digital cualificado y no caducado de persona física o jurídica expedido a nombre del proveedor y perteneciente a alguna de las autoridades de certificación homologadas por la AEAT (ver dirección Autoridades de Certificación ) 4. Instalar en los ordenadores del proveedor que se usarán para conectarse al Portal del Proveedor de BIESA la plataforma estándar de ejecución de Java (un Java Runtime Environment). Ver Instalación Java BIESA pone a disposición de sus proveedores tres diferentes formas de generación y envío de sus facturas electrónicas: 1. Formulario 2. CSV 3. XML Formulario En el portal del proveedor en la pestaña de “Factura Electrónica” existe la opción de “Crear Factura”. Esta opción da acceso a un formulario que permite al proveedor crear su factura a partir de la selección de las líneas de los pedidos afectadas. Este formulario crea la factura como un fichero de texto con formato CSV que el proveedor debe salvar en su sistema de ficheros con el nombre que le parezca oportuno. Seguidamente el formulario presenta la pantalla para realizar la firma electrónica del fichero. El proveedor debe de indicar el fichero que contiene su factura en formato csv, el fichero que contiene su certificado, la contraseña que protege a su certificado y el nombre que desea darle al fichero que contendrá su factura electrónica firmada. Al pulsar el botón de “Firmar” se genera el fichero factura electrónica firmada que se localiza en el directorio “C:\TEMP” en el disco duro del ordenador del proveedor. Finalmente la factura electrónica firmada se envía a BIESA para su tratamiento. CSV En esta opción es el proveedor quien debe generar mediante sus propios medios el fichero de texto CSV con una sola factura a enviar. Este fichero debe respetar el formato CSV especificado más adelante y no debe de estar firmado. Una vez generado el fichero, el proveedor debe de realizar la carga “online” del fichero. Es decir, debe de conectarse al portal del proveedor de BIESA, acceder a la pestaña de “Factura Electrónica” y escoger la opción de “Cargar Factura vía Fichero CSV”. Esta opción da acceso a la pantalla para realizar la firma electrónica. El proveedor debe de indicar el fichero que contiene su factura en formato CSV, el fichero que contiene su certificado, la contraseña del certificado (que se introdujo en su exportación) y el nombre que desea darle al fichero que contendrá su factura electrónica firmada. Al pulsar el botón de “Firmar” se genera el fichero factura electrónica firmada que se localiza en el directorio “C:\TEMP” en el disco duro del ordenador del proveedor. 4 Finalmente al pulsar el botón “Enviar Factura” la factura electrónica firmada se envía a BIESA para su tratamiento. XML En esta opción el proveedor debe de generar mediante sus propios medios el fichero de texto firmado con el contenido de la factura en formato XML según lo especificado más adelante y realizar una transmisión directa de la misma al servidor web de BIESA utilizando el protocolo OTA. Formato Fichero Firmado Tanto si la firma de la factura la realiza el formulario del portal del proveedor (factura en formato CSV) como si la firma la generan los sistemas propios del proveedor (factura en formato XML) el fichero firmado que se envía debe de tener la siguiente estructura: <NOMFIC> … </NOMFIC> <FACB64> … </FACB64> <FIRB64> … </FIRB64> donde, <NOMFIC>: Nombre del fichero factura <FACB64>: Factura en codificación BASE-64. En formato CSV (firmada y enviada desde el portal del proveedor de BIESA) o formato XML (firmada por el proveedor y enviada por protocolo OTA) <FIRB64>: Firma electrónica de la factura en formato PKCS#7, que estará en Base64, donde se firma el resumen SHA-1 en hexadecimal en mayúsculas del contenido de la factura original. La Agencia Tributaria con el fin de facilitar a los contribuyentes el uso del sistema de facturación telemática, proporciona sendos componentes con los que se podrá realizar la firma de la factura según el formato arriba especificado. Estos componentes son un ActiveX y un conjunto de clases java. El proveedor puede optar por usar uno (ActiveX) u otro (clase Java) para realizar sus desarrollo a medida que generará la firma de electrónica de su factura XML. Recordar de nuevo que el proveedor sólo debe de firmar la factura por sus propios medios en el caso que opte por la opción “XML” para la generación y envío de sus facturas. Estos componentes junto con los documentos de la AEAT con las especificaciones técnicas de los mismos acompañan a esta documentación: Doc-Adjunta.zip aeat_factu_cax.zip : contiene dos archivos jar con las clases java aeat_factu_cax.cab : contiene el control ActiveX factucax.pdf : especificaciones técnicas para el uso del control ActiveX factujav.pdf : especificaciones técnicas para el uso de las clases java 5 Instalación Java Para que desde un ordenador del proveedor conectado al Portal del Proveedor de BIESA funcione la pantalla que realiza la firma digital avanzada de la factura es necesario que esté instalado en el mismo un Java Runtime Environment (jre). Es un programa gratuito de Sun Microsystems, Inc. Dependiendo de la configuración del navegador puede que se realice su descarga automática al acceder por primera vez a la pantalla de firma de facturas del Portal del Proveedor. Si no es así hay que instalarlo manualmente. Acompañando a esta documentación se incluye la versión 1.6.0 del jre (jre-6-windowsi586.exe). Para instalarlo sólo hay que ejecutar este fichero. Además hay que modificar un archivo de configuración de este programa (el jre) para que permita a la aplicación de BIESA grabar el fichero firmado generado en el directorio C:\TEMP del ordenador del proveedor. El archivo a modificar es java.policy y se encuentra en el directorio: Archivos de programa o Program Files Java jrex.x.x (p.e.: jre1.6.0 depende de la versión instalada del jre) lib security Hay que editar este archivo de texto (java.policy) y añadir al final del mismo las siguientes líneas: grant { permission java.util.PropertyPermission "java.security.policy", "read"; permission java.security.SecurityPermission "putProviderProperty.IAIK"; permission java.security.SecurityPermission "insertProvider.IAIK"; permission java.io.FilePermission "C:\\Temp\\*", "read,write"; permission java.security.AllPermission; }; 6 Protocolo OTA El protocolo OTA (Oracle Transport Agent) es un protocolo de mensajería para transmitir documentos por HTTP y HTTP Seguro (HTTPS). Funciona por encima del protocolo de Aplicación HTTP. La comunicación se realiza enviando/recibiendo una serie de parejas nombre/valor en el Body HTTP de un HTTP POST/RESPONSE. Entre otros campos con valores fijos, el mensaje OTA que contiene la factura electrónica a enviar debe de tener informados los siguientes campos: Código de Usuario: es el código del usuario del proveedor para acceder al Portal del Proveedor de BIESA Contraseña de Usuario: es la contraseña del usuario del proveedor para acceder al Portal del Proveedor de BIESA Número del Proveedor: es un código único para el proveedor que BIESA asigna para el envío de facturas electrónicas. Número de Factura: el número de la factura que se está enviando Factura firmada: la factura XML firmada Acompañando a esta documentación se incluye un pequeño manual que explica el protocolo OTA (protocolo_OTA.pdf) así como dos ejemplos de programas realizados en java para el envío a BIESA de facturas XML con el protocolo OTA. Uno vía http (SendHTTP.java) y el otro vía https (SendHTTPS.java) 7 Especificación del formato CSV del fichero de Factura Format Setup: <TEMPLATE TYPE> <OUTPUT CHARACTER SET> <NEW RECORD CHARACTER> DELIMITER_BASED iso-8859-1 Carriage Return Format Data Records: 8 Level Max. Length 2 1 2 1 2 CABECERA FACTURA Format Data Value Alpha Alpha Alpha Alpha Alpha RecordType Delimiter InvoiceDocumentType Delimiter InvoiceClass ‘01’ ‘,’ ‘FC’ ‘,’ 1 25 1 10 Alpha Alpha Alpha Date, DD/MM/YYYY Delimiter InvoiceNumber Delimiter IssueDate ‘,’ 1 25 Alpha Alpha Delimiter CorrectiveInvoiceNumber ‘,’ 1 3 Alpha Alpha Delimiter InvoiceCurrencyCode ‘,’ 1 2500 1 Alpha Alpha Alpha NumberTwoDecimal 9999999999990,99 Alpha NumberTwoDecimal 9999999999990,99 Alpha NumberTwoDecimal 9999999999990,99 Alpha NumberTwoDecimal 9999999999990,99 Alpha Delimiter InvoiceComments Delimiter TotalGrossAmount ‘,’ Delimiter TotalTaxOutputs ‘,’ Delimiter TotalTaxesWithheld ‘,’ Delimiter InvoiceTotal ‘,’ Delimiter ‘,’ 1 1 1 1 Req. Sí Comments Sí Tipo de Registro Separador de campos Tipo documento factura. Sólo se admite la factura completa (‘FC’) Separador de campos Clase de Factura. Este dato refleja la clase de factura, a saber: "OO" Original, "OR" Rectificativa. Cuando sea rectificativa debe estar cumplimentado el campo CorrectiveInvoiceNumber con el número de la factura que se rectifica Separador de campos Número de factura. Número asignado por el Emisor Separador de campos Fecha de expedición. Fecha en la que se genera la factura con efectos fiscales. Esta fecha no podrá ser posterior a la fecha de la firma electrónica ni a la fecha de caducidad del certificado con que se firma la factura Separador de campos Número de la factura que se rectifica. Debe informarse si y sólo si es una factura rectificativa Separador de campos Moneda de la operación y del impuesto. Código ISO/ALFA de la moneda en la que se emite la factura y los impuestos Separador de campos Observaciones de la factura Separador de campos Suma total de importes brutos de los detalles de la factura. Siempre con dos decimales Separador de campos Total impuestos repercutidos. Siempre con dos decimales Sí Separador de campos Total impuestos retenidos. Siempre con dos decimales Sí Sí Sí ‘,’ Sí No Sí ‘,’ Sí Sí Separador de campos Total factura. Resultado: Importe Bruto Total + Total Impuestos Repercutidos - Total Impuestos Retenidos. Siempre con dos decimales Separador de campos 9 Level Max. Length 2 1 30 1 80 1 80 1 80 1 20 1 3 1 EMISOR Format Data Value Alpha Alpha Alpha RecordType Delimiter TaxIdentificationNumber ‘02’ ‘,’ Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Delimiter Name Delimiter Address Delimiter PostCodeAndTown Delimiter Province Delimiter CountryCode Delimiter ‘,’ Req. Sí Sí Sí ‘,’ Sí ‘,’ Sí ‘,’ ‘,’ Sí ‘,’ Comments Tipo de Registro Separador de campos Código de Identificación Fiscal del sujeto en cuestión. Se trata de las composiciones de NIF / CIF que marca la Administración correspondiente, precedidas de las dos letras del país si no reside en España Separador de campos Razón Social (persona jurídica) o Nombre completo del individuo (persona física) Separador de campos Calle, denominación, número, piso,... Separador de campos Código Postal y Población Separador de campos Provincia a la que corresponde la Población Separador de campos Código País. ISO 3166 ALPHA-3 Separador de campos 10 Level Max. Length 2 1 30 1 80 1 80 1 80 1 20 1 3 1 RECEPTOR Format Data Value Alpha Alpha Alpha RecordType Delimiter TaxIdentificationNumber ‘03’ ‘,’ Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Alpha Delimiter Name Delimiter Address Delimiter PostCodeAndTown Delimiter Province Delimiter CountryCode Delimiter ‘,’ Req. Sí Sí Sí ‘,’ Sí ‘,’ Sí ‘,’ ‘,’ Sí ‘,’ Comments Tipo de Registro Separador de campos Código de Identificación Fiscal del sujeto en cuestión. Se trata de las composiciones de NIF / CIF que marca la Administración correspondiente, precedidas de las dos letras del país si no reside en España Separador de campos Razón Social (persona jurídica) o Nombre completo del individuo (persona física) Separador de campos Calle, denominación, número, piso,... Separador de campos Código Postal y Población Separador de campos Provincia a la que corresponde la Población Separador de campos Código País. ISO 3166 ALPHA-3 Separador de campos 11 Level Max. Length 2 1 20 1 20 1 1 1 2500 1 30 1 10 1 1 2 1 1 1 1 1 1 5 1 DETALLE FACTURA Format Data Value Alpha Alpha Alpha Alpha Alpha Alpha Integer Alpha Integer RecordType Delimiter LineType Delimiter PurchaseOrderNum Delimiter PurchaseOrderLineNum Delimiter PurchaseOrderShipmentN um Delimiter ItemDescription Delimiter DeliveryNoteNumber Delimiter TransactionDate ‘04’ ‘,’ Delimiter Quantity ‘,’ Delimiter UnitOfMeasure ‘,’ Delimiter UnitPriceWithoutTax ‘,’ Delimiter TotalCost ‘,’ Delimiter DiscountRate ‘,’ Delimiter DiscountAmount ‘,’ Delimiter GrossAmount ‘,’ Delimiter LineTaxWithheldTypeCod e Delimiter LineTaxWithheldRate ‘,’ Separador de campos Clase de impuesto retenido: PF15, PF07, AL18 ‘,’ Separador de campos Porcentaje a aplicar en cada caso Alpha Alpha Alpha Alpha Alpha Date, DD/MM/YYYY Alpha Number 9999999999990,99999 9 Alpha Alpha Alpha NumberSixDecimal 9999999999990,99999 9 Alpha NumberTwoDecimal 9999999999990,99 Alpha NumberFourDecimal 9999999999990D9999 Alpha NumberTwoDecimal 9999999999990,99 Alpha NumberTwoDecimal 9999999999990,99 Alpha Alpha Alpha NumberThreeDecimal 9999999999990,999 Req. Sí Sí ‘,’ ‘,’ ‘,’ ‘,’ Sí ‘,’ ‘,’ Sí Sí Sí Comments Tipo de Registro Separador de campos Tipo de línea de factura: ITEM, FREIGHT o MISCELLANEOUS Separador de campos Referencia de la orden de pedido. Obligatorio para las líneas de tipo ITEM Separador de campos Número de línea de la orden de pedido. Obligatorio para las líneas de tipo ITEM Separador de campos Número de envío de la línea de la orden de pedido. Obligatorio para las líneas de tipo ITEM Separador de campos Descripción del bien o servicio Separador de campos Número de referencia del albarán Separador de campos Fecha concreta de prestación o entrega del bien o servicio. ISO 8601 Separador de campos Número de Unidades servidas/prestadas. Puede ser negativo. Separador de campos Unidad a que está referida la Cantidad: BI-Bidón, CJ-Caja, CM-Centímetro, CRCuota Renting, GR-Gramo, HR-Hora, KG-Kilogramo, KM-Kilómetro, LT-Litro, MMetro, M2-Metro Cuadrado, M3-Metro Cúbico, MS-Mes, TN-Tonelada, U-Unidad Separador de campos Precio de la unidad de bien o servicio servido/prestado, en la moneda indicada en la Cabecera de la Factura. Siempre sin Impuestos. Siempre con seis decimales Separador de campos Cantidad * Precio. Siempre con dos decimales Separador de campos Porcentaje a descontar del Total Importe Bruto (TIB). Los porcentajes se reflejan con 4 decimales Separador de campos Importe a descontar sobre el Total Importe Bruto (TIB). Siempre con dos decimales Sí Separador de campos TotalCost - Descuento. Siempre con dos decimales 12 Level Max. Length 2 1 5 1 1 1 1 IMPUESTOS RETENIDOS Format Data Value Alpha Alpha Alpha Alpha NumberThreeDecimal 9999999999990,999 Alpha NumberTwoDecimal 9999999999990,99 Alpha NumberTwoDecimal 9999999999990,99 Alpha RecordType Delimiter TaxTypeCode Delimiter TaxRate ‘05’ ‘,’ Delimiter TaxableBase ‘,’ Delimiter TaxAmount ‘,’ Delimiter ‘,’ Req. Sí Comments Sí Tipo de Registro Separador de campos Clase de impuesto retenido: PF15, PF07, AL18 Separador de campos Porcentaje a aplicar en cada caso Sí Separador de campos Base imponible de los impuestos. Siempre con dos decimales Sí ‘,’ Sí Separador de campos Cuota. Importe resultante de aplicar a la Base Imponible el porcentaje correspondiente. Siempre con dos decimales Separador de campos 13 Level Max. Length 2 1 5 1 1 1 1 IMPUESTOS REPERCUTIDOS Format Data Value Alpha Alpha Alpha RecordType Delimiter TaxTypeCode ‘06’ ‘,’ Alpha NumberThreeDecimal 9999999999990,999 Alpha NumberTwoDecimal 9999999999990,99 Alpha NumberTwoDecimal 9999999999990,99 Alpha Delimiter TaxRate ‘,’ Delimiter TaxableBase ‘,’ Delimiter TaxAmount ‘,’ Delimiter ‘,’ Req. Sí Comments Sí Tipo de Registro Separador de campos Clase de impuesto repercutido. Concepto Fiscal por el que se tributa.: IVA16, IVA07, IVA04, IVA6A, EXENT, IGIC2, IGIC5, IGIC9, IGI13, EXIGI Separador de campos Porcentaje a aplicar en cada caso Sí Separador de campos Base imponible de los impuestos. Siempre con dos decimales Sí Sí Separador de campos Cuota. Importe resultante de aplicar a la Base Imponible el porcentaje correspondiente. Siempre con dos decimales Separador de campos 14 Especificación del formato XML del fichero de Factura La estructura y sintaxis de la factura XML que admite BIESA están especificadas tanto en el fichero XML Doc Adjunta\FacturaBIEv1_0.xsd como en el fichero DTD Doc Adjunta\FacturaBIEv1_0.dtd. Sendos ficheros acompañan a este documento. También se adjunta a modo de ejemplo el fichero EjemploFacturaBIE.xml que contiene una factura inventada con el formato correcto. A continuación se describen los cuatro grupos de datos que constituyen la e-factura, mostrándose de forma detallada la estructura de los tipos y campos más importantes. Nótese que a efectos de una mejor representación, 'Emisor' y 'Receptor', se han agrupado bajo el tipo 'Sujetos' (‘Parties’). 2.1 FileHeader (Cabecera) El bloque de datos “FileHeader” sólo contiene la versión del formato. 2.2 Parties (Sujetos) 15 El bloque “Parties” identifica al emisor (obligado tributario) y al receptor del lote de facturas. Un mismo lote admite una única relación emisor - receptor. Su estructura y composición son idénticas. Codificación del bloque PartyAddress (Dirección): 16 2.3 Invoices (Facturas) El bloque de datos “Factura” contiene la información requerida en cada factura para identificar claramente la transacción a la que se refiere, como son: los detalles, descuentos, impuestos y totales. En esta versión el lote sólo puede estar constituído por una factura, que presentará una cabecera con sus datos identificativos, sus totales, sus impuestos, y otras informaciones únicas para cada factura. Cada factura contendrá también tantos detalles como items diferentes intervengan en la misma. La codificación de los Impuestos Retenidos y Repercutidos se realiza usando un único tipo, 'Impuesto', reutilizable para todos los tipos de impuestos existentes. Obsérvese que es obligatorio declarar los Impuestos Repercutidos. Igualmente los campos de totales para ambos tipos de impuestos (retenidos o repercutidos) es obligatorio informarlos, rellenándose en su caso a cero. 17 Codificación del bloque Invoices/Invoice/InvoiceHeader (Cabecera Factura): Codificación del bloque Invoices/Invoice/InvoiceIssueData (Emisión Factura): 18 Codificación del bloque Invoices/Invoice/InvoiceTotals (Totales Factura): 19 Codificación del bloque Invoices/Invoice/TaxesOutputs y TaxesWithheld (Impuestos Repercutidos y Retenidos): 20 Codificación del bloque Invoices/Invoice/Items/InvoiceLine (Detalle): 21 22