Generalidades del sistema de factura electrónica de la AFIP

En este artículo discutiremos los problemas a superar para conectar un sistema informático con los sistemas de la AFIP.

  • Antes de empezar: requisitos antes de poner en marcha un sistema de facturación.
  • Qué servicios existen en la AFIP para conectarse y qué operaciones se pueden realizar.
  • Esquema de una aplicación que se conecta con los sistemas de la AFIP.
  • Cómo generar un web-service para conectarse con esos sistemas.

Todos los ejemplos de código fuente que se mostrarán a continuación serán en el lenguaje Java. Se podría usar cualquier otro lenguaje orientado a objetos que admita una configuración de web services.

Para comunicarse con la AFIP hay que utilizar Web services. La AFIP implementa un sistema de “Service Oriented Architecture” basado en SOAP-XML. Suena algo primitivo, me recuerda cuando hace 10 años (2007) el XML era toda la onda y parecía que todo se iba a hacer en base a sistemas basados en SOA, ahora la cosa evolucionó un poco y se simplificó llegando a las interfases RESTful y los objetos JSON.

Antes de empezar

La documentación de la AFIP es escueta y requirió algunas horas de experimentación para tenerlo andando. Hay cosas que no quedan claras, y que requirieron tiempo de estudio.

Para hacer andar un sistema de facturación electrónica de la AFIP, hay que tener los siguientes elementos:

  • Clave fiscal nivel 3
  • Certificados digitales, tanto del modo homologación como el de producción
  • Punto de venta creado, del tipo “RECE”

Clave fiscal nivel 3

Se necesita tener una clave fiscal nivel 3 o superior (“habilitada en dependencias de la AFIP”), para acceder a los servicios que se necesitan para generar los certificados. Hay 4 aplicaciones que están relacionadas con la facturación electrónica: por un lado 2 aplicaciones para generar facturas online a través de la misma página de la AFIP, y otras 2 para generar los certificados que se necesitan para utilizar un sistema externo. Estas aplicaciones son:

  • Administración de certificados digitales
  • Comprobantes en línea
  • Comprobantes en línea – simulador
  • WSASS – Autogestión Certificados Homologación

Si no se cuenta con estas aplicaciones entre aquellas que pueden elegirse en “Servicios Administrativos” o “Servicios Habilitados”, hay que ir a activarlos. Para activarlos, ir a “Administrador de Relaciones de Clave Fiscal”. Ahí deberá elegir qué contribuyente va a operar este servicio. Si usted es un monotributista, solamente tendrá su propio CUIT para elegir; pero si usted representa una empresa, también le aparecerá el CUIT de la empresa. Luego, para buscar los servicios mencionados arriba, hay que ir a “Nueva Relación”. Habrá que hacer click en el botón Buscar para que aparezcan los nombres de las entidades que tienen servicios disponibles para adhesión. Hacer click en el que dice AFIP. Luego, la sección Servicios Interactivos. Ahí, buscar los servicios mencionados por el nombre.

Para cada uno de ellos, al generar la adhesión se mostrará un PDF con el ticket de confirmación. Ese ticket no se solicita para nada pero se puede conservar si se desea.

Certificados

Los certificados son esenciales. Sin eso, no se puede empezar a hacer nada. Ya mencioné que existen dos modos de operación: modo homologación y modo producción.

El modo homologación es el que debe utilizarse para generar certificados de prueba, para aplicar en una versión de demostración del sistema o de pruebas, ya que todo lo que se hará durante ese modo no será oficial.

El modo producción es el que debe utilizarse para generar facturas verdaderas que serán contabilizadas por la AFIP.

Los certificados a generar son de la misma clase que los certificados utilizados por las páginas web, que pertenecen al estándar X509. Son, de hecho, un sistema de criptografía de clave pública. Para saber más del tema, consultar el artículo Criptografía de Clave pública.

Si usted desea configurar un sistema de facturación electrónica existente, hay que usar el modo producción. Si por el contrario desea realizar el sistema usted mismo, deberá usar el modo homologación, de manera tal de asegurarse que todo funcione adecuadamente antes de comenzar a emitir facturas de verdad. Luego podrá configurar el modo producción.

Para generar certificados se necesitan los siguientes pasos:

  1. Generación de claves privadas. En un sistema ya existente, este paso seguramente ya será realizado internamente por este, en una sección sobre generación de certificados de AFIP.
  2. Generación de solicitud de certificado. Aquí se genera la clave pública basada en la clave privada ya generada, la cual va contenida en una solicitud de certificado. Al generar esta solicitud, se debe rellenar cuidadosamente cada uno de los campos según las normas de la AFIP. Esto es crucial, ya que la AFIP firma cualquier cosa, no se molesta en verificar ni siquiera si el certificado cumple con sus propias normas, aunque podría.
  3. Importación de certificados en el sistema informático.

Generación de claves privadas y solicitud de certificado

La AFIP da normas precisas para la generación de la solicitud. Estas se explican en el siguiente documento: Especificación del servicio de autenticación. En la sección “Requerimientos de los certificados pertenecientes a los CEE” dice qué requisitos debe cumplir el certificado:

1. Ser emitido por una autoridad certificante reconocida por AFIP.

Esto ya lo tenemos: la propia AFIP es certificante ;-).

2. El DN deberá enmarcarse dentro de la RFC 2253 (http://www.ietf.org/rfc/rfc2253.txt)

DN son las siglas de Distinguished Name, son una terminología del estándar X.500 para determinar los datos que distinguen a un contacto de otro. Un Distinguished Name se supone único para la entidad que requiere el certificado y debe contener los siguientes campos:

C=AR (por Argentina)
CN=Nombre del sistema o aplicación que usará el certificado
O=Empresa SRL (la denominación comercial)

3. El contenido del DN se debe cumplir los siguientes requisitos establecidos por la ?Oficina
Nacional de Tecnologías de Información? (ONTI), disponible en
http://www.sgp.gov.ar/contenidos/onti/productos/docs/infraestructura/Anexo_III_Perfil_Minimo_
de_Certificados_y_CRLs_v1.pdf

Este link está roto y lo más aproximado que encontré fue esto: https://www.argentina.gob.ar/firmadigital/estandares. En ese documento tiene simplemente un montón de palabrerío técnico, y la conclusión es que los certificados que se puedan generar con métodos modernos van a estar bien.

4. Los campos obligatorios son los siguientes:
? Campo ‘commonName’: DEBE corresponder al nombre del servicio o aplicación (ej. Sistema de
Consulta) o al nombre de la unidad operativa responsable del servicio (ej. Gerencia de
Compras).

Esto es salido directamente de la norma mencionada más arriba.

? Campo ‘serialNumber’ (OID 2.5.4.5: Nro de serie): DEBE contener el número de identificación
de la Persona Jurídica Pública o Privada, expresado como texto y respetando el siguiente
formato y codificación: “CUIT numero_de_cuit”

Esto es crítico. Prestarle muchísima atención. (ej: ?CUIT 20123456780?)

? Campo ‘organizationName’: DEBE coincidir con el nombre de la Persona Jurídica Pública o
Privada.

Esto también es crítico. Si no está esto perfecto como lo requiere la AFIP, esta no acepta los certificados. El nombre a utilizar en este campo debe corresponderse exactamente con lo que la AFIP tiene en sus registros.

? Campo ‘countryName’: DEBE representar el país en el cual está constituida la Persona
Jurídica, codificado según el estándar [ISO3166].

Esto también es lo que vimos más arriba, sacado directamente de la norma.

A continuación veremos un ejemplo de generación de los certificados con estos campos. Se utiliza el utilitario OpenSSL. Primero se genera la clave privada.

openssl genrsa -out empresa.key 2048
Generating RSA private key, 2048 bit long modulus
...........+++
.......................................................+++
e is 65537 (0x10001)

Genial, ya tenemos la clave privada en el archivo empresa.key. Ahora el paso crítico, la generación de la solicitud de firma.

openssl req -new -key ./empresa.key -subj '/CN=www.strellis.com.ar/serialNumber=CUIT 30123456789/O=empresa srl/C=ar' -out empresa.csr

Observen esto cuidadosamente: cada uno de los campos mencionados arriba se escribe separado con / y debe especificarse exactamente. De lo contrario, el certificado no servirá.

Este procedimiento deberá realizarse 2 veces: una para modo homologación, y otra para modo producción.

Ahora, para hacer firmar los certificados por la AFIP, hay que acceder con Clave fiscal. Para modo producción, en la sección de Servicios Administrativos, seleccionar la opción Administración de Certificados Digitales. Aquí se debe seleccionar en nombre de qué entidad se usa este servicio, como se explicó anteriormente. Se debe seleccionar a continuación la opción Agregar Alias. Este Alias es una identificación que usted asigna al certificado. Debe representar el propósito, digamos, a qué sistema está asociado, como para reconocerlo más tarde. Se debe tener en cuenta que estos certificados se generan con una validez de 2 años. En esta pantalla además se solicitará el CSR generado anteriormente, empresa.csr.

Luego, seleccionar Agregar Alias. El certificado será generado y estará disponible para bajarlo, seleccionando Ver Detalles del alias recién creado.

Una vez utilizado, el CSR puede borrarse, podrá ser generado nuevamente en caso de ser necesario.

Para el modo de homologación el procedimiento es un poco distinto. En el área de servicios habilitados, buscar WSASS – Autogestión Certificados Homologación. Ahí se accederá al portal de servicios de homologación.

En la opción certificados, se podrán mostrar los certificados ya existentes.

En la opción nuevo certificado, se podrán crear certificados nuevos. Elegir esa opción, si es que todavía no se generó ninguno.

En 1. Nombre simbólico del DN, colocar exactamente el DN ejemplificado más arriba. Luego, pegar el contenido del archivo empresa.csr en 3. Solicitud de certificado en formato PKCS#10.

Luego, presionar el botón crear DN y obtener certificado. El contenido del certificado aparecerá en el cuadro de texto abajo. Hay que copiar ese texto y guardarlo en el archivo empreas.crt.

Después de crear el certificado, hay que Autorizar a la entidad a utilizar el servicio WSFE de facturación electrónica. Seleccionar la opción Crear autorización a servicio.

En la primera casilla aparecerá el DN generado anteriormente. En 5. Servicio al que desea acceder, hay que seleccionar el servicio wsfe – Facturación electrónica. Luego seleccionar crear autorización de acceso.

Importación de los certificados

Punto de venta RECE

En la sección de servicios habilitados, buscar Administración de puntos de venta y domicilios. Ahí seleccionar la empresa a representar. El sistema le aclarará que al crear el punto de venta, debe elegir la opción Agregar abajo de todo. Ahí debe seleccionar el número de punto de venta (diferente a los existentes) y elegir la opción Facturación Electrónica – Web Services.

1 Comment

  1. Buenas tardes sr agustin tuve q escribirle en este artículo ya q no me dejaba en el de Java Spring. Primero que todo felicitarlo por el post muy bueno mi duda es la siguiente estaba en la creación del ejercicio sobre Spring security roles y permisos y me encuentro con algunas dudas quisiera saber si posee el project en si para descargarlo y si puede compartirlo claro esta. le dejo mi correo electrónico. gracias por el post siga así. saludos .

Leave a Reply

Your email address will not be published.


*