manual de usuario conector - insigna.mx tipos de cfdi ... o soporte ilimitado para criptografía en...
TRANSCRIPT
Página | 1
MANUAL DE USUARIO
CONECTOR INSIGNA
Página | 2
CONTENIDO
1. Introducción ........................................................................................................................................ 4 1.1 Tipos de CFDI ................................................................................................................................. 4
2. Funcionalidad del Conector .............................................................................................................. 4 2.1 Timbrado, Cancelación y Validación de CFDI ................................................................................ 4 2.2 Lectura de datos a través de un sistema de archivos ................................................................... 5 2.3 Guardado de XML timbrados ........................................................................................................ 5 2.4 Generación de representación impresa personalizable (PDF) ..................................................... 5 2.5 Envío de correo electrónico .......................................................................................................... 6 2.6 Manejo seguro de información sensible ....................................................................................... 7
3. Requisitos ............................................................................................................................................ 7 3.1 Conector ........................................................................................................................................ 7 3.2 SAT ................................................................................................................................................ 8 3.3 INSIGNA ......................................................................................................................................... 8
4. Instalación ........................................................................................................................................... 8 4.1 Procedimiento de instalación ....................................................................................................... 8 4.2 Configuración archivo .properties .............................................................................................. 12 4.3 Configuración de cuenta INSIGNA .............................................................................................. 13 4.4 Instalación de certificado SSL de INSIGNA .................................................................................. 14 4.5 Configuración de contraseñas .................................................................................................... 14 4.6 Instalación de certificado de sello digital (CSD) y su llave privada ............................................. 15 4.7 Alta/Baja de empresas en archivo rfc.properties ....................................................................... 15 4.8 Alta/Baja de unidades de negocio en archivo rfc.properties ..................................................... 16 4.9 Revisión de instalación ................................................................................................................ 16
5. Ejecución ........................................................................................................................................... 18 6. Apagado del Conector ..................................................................................................................... 18 7. Configuración de correos ................................................................................................................ 19 8. Timbrado de CFDIs ........................................................................................................................... 21
8.1 Creación de archivos XML ........................................................................................................... 21 8.2 Proceso de timbrado ................................................................................................................... 23 8.3 Manejo de Addendas .................................................................................................................. 24
9. Cancelación de CFDIs....................................................................................................................... 26 10. Recuperación de CFDIs ................................................................................................................ 26 11. Validación de CFDIs ...................................................................................................................... 30
11.1 Proceso de Validación ................................................................................................................. 30 11.2 Resultados de Validación ............................................................................................................ 30
12. Representación Impresa .............................................................................................................. 31 12.1 Archivo Catalogs.properties ........................................................................................................ 31
13. Errores ............................................................................................................................................ 32 14. Anexos ............................................................................................................................................ 38
14.1 Propiedades de configuración ........................................................................................................ 38 14.2 Cuerpo del correo electrónico ........................................................................................................ 47 14.3 Formato CSV ................................................................................................................................... 47 14.4 Comandos ....................................................................................................................................... 51 14.5 Extensión de Criptografía en Java ................................................................................................... 57
Página | 3
15. MailSender ..................................................................................................................................... 58 15.1 Configuración .................................................................................................................................. 60 15.2 Ejecución ......................................................................................................................................... 61 15.3 Errores ............................................................................................................................................. 63
16. Glosario .......................................................................................................................................... 64
Página | 4
2. Introducción
El Conector INSIGNA es una aplicación cliente desarrollada en Java cuya función es la de
efectuar el timbrado, cancelación y validación de CFDIs. Esto lo realiza mediante la conexión
a un servidor del sistema INSIGNA. La naturaleza misma de la aplicación permite que sea
instalada y ejecutada en diferentes sistemas operativos.
El Conector está diseñado como una herramienta de timbrado rápida y segura. Es capaz de
timbrar CFDIs generados en archivos de texto, soportando los formatos CSV y XML.
En este documento se describen las características del Conector, así como la lista de los
requerimientos mínimos para su instalación y funcionamiento.
1.1 Tipos de CFDI
En el Conector INSIGNA se identifica como un CFDI a los siguientes tipos de comprobantes:
Comprobante Fiscal Digital por Internet (CFDI V3.3)
Documento Electrónico de Retenciones e información de Pagos (Retención Pago V1.0)
Por lo que al hacer referencia a un CFDI dentro de este manual tomaremos en cuenta los comprobantes previamente mencionados.
3. Funcionalidad del Conector
La funcionalidad del Conector se resume en los siguientes puntos:
1. Timbrado, Cancelación y Validación de CFDIs. 2. Lectura de datos a través de un sistema de archivos. 3. Guardado de XML timbrados. 4. Generación de representación impresa personalizable. 5. Envío de correo electrónico personalizable. 6. Manejo seguro de información sensible.
2.1 Timbrado, Cancelación y Validación de CFDI
La comunicación entre las aplicaciones es configurable para adaptarse a la operación del cliente. La siguiente gráfica muestra la comunicación entre las diferentes aplicaciones:
Página | 5
Internet
Cliente
Servidor CERTIPASS
Conector
2.2 Lectura de datos a través de un sistema de archivos
La lectura de datos desde un sistema de archivos permite timbrar archivos XML o CSV leyéndolos desde una carpeta configurada en el Conector. Esto permite que se ingrese la información desde cualquier sistema que pueda escribir un archivo en un fichero, incluyendo programas como una macro en Microsoft Excel, un ERP o un sistema hecho a la medida.
2.3 Guardado de XML timbrados
El Conector puede guardar los CFDIs timbrados para su almacenamiento y administración en 2
lugares:
1. Sistema de archivos. Si está configurado el modo lectura desde sistema de archivos,
la salida de XML y PDF a un sistema de archivos es obligatoria para que el usuario
reciba esta información.
2. Envío por email. Para el modo de entrada por sistema de archivos con formato CSV
(se excluye XML), se puede configurar el envío de emails con los archivos adjuntos XML
y PDF como se detalla más adelante.
2.4 Generación de representación impresa personalizable (PDF)
Una vez timbrado un XML, el Conector puede generar la representación impresa del CFDI en
formato PDF para facilitar su lectura.
Página | 6
INSIGNA soporta distintas opciones de representaciones impresas a elegir para que se adecuen
a las necesidades del cliente. Cada RFC con el que se desee emitir en el Conector puede
tener una representación impresa diferente.
En el caso de requerir otro diseño con imágenes y colores diferentes a los proporcionados,
INSIGNA ofrece un servicio de personalización el cual puede solicitarse a Servicio al Cliente.
2.5 Envío de correo electrónico
El Conector puede ser configurado para enviar correos electrónicos con la información de los
CFDIs timbrados a los usuarios administradores del sistema y/o al receptor del CFDI.
El correo electrónico adjunta los archivos generados del CFDI: un archivo XML timbrado y su
representación impresa en PDF.
El texto del email es personalizable y se puede enviar un texto diferente por cada RFC
emisor.
Usuario
Conector
Servidor SMTP
IMPORTANTE: Para utilizar esta funcionalidad es requisito que el cliente tenga un servidor de
correos en su infraestructura.
Página | 7
2.6 Manejo seguro de información sensible
El certificado, la llave privada y la contraseña de un emisor se consideran información
importante y sensible.
El Conector ofrece una mayor seguridad cifrando todas las contraseñas a través de una frase
única (masterkey) manejada por el administrador del sistema. Esto previene la obtención de
la información sensible en caso de un acceso indebido a los servidores donde se encuentra la
instalación del Conector.
4. Requisitos
Durante el proceso de configuración será requerida información que corresponde al SAT e
INSIGNA. Se sugiere revisar cada uno de los requisitos para una correcta instalación.
3.1 Conector
Hardware
Un servidor con conexión a Internet de 512 Kb libres o mayor1, 256 MB libres en RAM y 100 MB
libres de disco duro para la instalación.
Posteriormente, se requerirán 7 MB por cada 100 CFDIs generados.
Si se utilizará la conexión mediante TCP a los servicios de INSIGNA, es necesario que el
servidor cuente con una IP pública (homologada). En caso que se utilice la conexión mediante
Web Service a INSIGNA no es necesario contar con la IP pública.
Software
Sistema operativo:
o Windows Server 2003, 2008 o 2012.
Máquina virtual de Java (JVM) con JRE versión 1.8 o superior.
o http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-
2133155.html
Soporte ilimitado para criptografía en Java (Ver Anexo 14.5).
o http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-
2133166.html
OpenSSL:
o 0.9.8 para Unix
1 Velocidad de salida para la carga de archivos
Página | 8
o Cygwin con OpenSSL 0.9.8 para Windows
Para envío de correos:
o Servidor SMTP
3.2 SAT
Certificado de sello digital (CSD) para facturar electrónicamente. http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/tramite_csd.aspx
http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/certificado_sello_di
gital.aspx
3.3 INSIGNA
Cuenta de acceso a INSIGNA. Timbres suficientes para realizar cada operación. Certificado SSL para la comunicación segura, si es que se utilizará una conexión
mediante el protocolo TCP.
Tanto la cuenta de acceso como el certificado SSL se generan durante el proceso de
contratación.
5. Instalación
Antes de iniciar con los pasos de la instalación, se debe saber cuál es la funcionalidad que se
va a activar para esta instancia de Conector.
4.1 Procedimiento de instalación
1. Descomprimir el archivo Conector.zip en la carpeta donde se desee hacer la instalación; se puede utilizar cualquier software que descomprima archivos .zip. El archivo Conector.zip será enviado por INSIGNA al cliente vía correo electrónico.
Página | 9
2. Se declara la variable de entorno2 CONECTOR_HOME3. El valor que se establece en la variable debe ser igual a la carpeta de instalación del Conector.
SET CONECTOR_HOME= C:\conector\
3. Para la ejecución de los comandos, la variable de entorno JAVA_HOME debe apuntar a la instalación requerida de Java (como se observa en la imagen, JAVA_HOME apunta al directorio donde está instalado Java).
Esto se puede validar tecleando el comando “java”. Si la variable JAVA_HOME está configurara correctamente, la consola reconocerá el comando “java” y desplegará lo siguiente, independientemente del directorio en el que esté posicionada.
2 Para mayor información acerca de cómo configurar variables de entorno visite la siguiente liga: http://support.microsoft.com/kb/310519/es 3 En caso de que no se haya configurado la variable de entorno, al ejecutar cualquiera de los comandos del mismo
se pedirá dicha variable. La variable es establecida en la sesión de consola.
Página | 10
4. Configurar la ruta de archivo para el guardado de la bitácora del Conector, para lo cual es necesario abrir el archivo ubicado en %CONECTOR_HOME%\config\logging.properties y configurar la propiedad java.util.logging.FileHandler.pattern4, donde por default se encuentra el valor “conector%u.%g.log”. El valor de esta propiedad debe ser una ruta de archivo absoluta para asegurar que la bitácora sólo sea guardada en esa ubicación y no de forma relativa a la posición actual en la consola.
Ejemplo: C:/conector/bin/conector%u.%g.log
Nota: Es importante señalar que para la definición de esta ruta no es posible
4 Revisar la documentación sobre la clase FileHandler de Java 6
Página | 11
utilizar cualquier variable de entorno. Además, es imperativo usar como
separador de directorios la diagonal, más específicamente, el carácter “/”.
5. Verificar la instalación del Conector ejecutando el comando conector help.
%CONECTOR_HOME%/bin/conector help
Respuesta al comando conector help al ejecutarse en el sistema operativo Windows.
6. Extensión de Criptografía en Java
Las librerías de criptografía de Java por defecto no soportan llaves de más de 128 bits. Para
utilizar una llave SSL de INSIGNA (de 1024 bits) se necesita reemplazar un par de archivos en
la instalación de Java (ver sección 4.1, paso 3).
Los archivos se encuentran disponibles en el zip del Conector:
O bien pueden descargarse en las siguientes rutas:
Java 8 (archivo jce_policy-8.zip) http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
Página | 12
Antes de proseguir es necesario revisar el valor de la variable JAVA_HOME (ver punto #3 de la
sección 4.1).
A continuación, se toman los archivos local_policy.jar y US_export_policy.jar (contenidos en
el archivo zip descargado) y se colocan en el directorio definido en
%JAVA_HOME%/lib/security:
Hecho este procedimiento se podrá utilizar sin problemas la conexión SSL con INSIGNA. Se
recomienda hacer esta sustitución de archivos con el Conector apagado.
4.2 Configuración archivo .properties
En esta sección, y en otras posteriores, se estarán configurando propiedades en archivos tipo
.properties de Java. Es importante revisar la documentación de Java referente al formato de
los archivos de propiedades5, para aclarar la forma en que estos archivos deberán ser
llenados. También podrás encontrar en la carpeta “/conector/docs/config” ejemplo de dos
archivos de configuración listos para su funcionamiento con el RFC emisor LAN7008173R5
1. Archivo program.properties: Configurar ruta/ubicación del comando OpenSSL y tipo de conexión a INSIGNA.
5http://docs.oracle.com/cd/E23095_01/Platform.93/ATGProgGuide/html/s0204propertiesfileformat01.html
Página | 13
%CONECTOR_HOME%/config/program.properties
openssl.command.path = [Ruta del comando OPENSSL]
Tipo de dato: cadena (Ejemplo: C:/cygwin/bin/openssl) Requerido: sí, cuando el tipo de conexión es TCP o si se tiene configurado un rfc con sus
respectivos archivos cert y key.
connection.type = [Tipo de conexión a INSIGNA]
Tipo de dato: selector (1, 2). Si se desea la conexión mediante el protocolo TCP, ingresar el valor “1”; si se desea la conexión mediante Web Service, ingresar “2”.
Requerido: No Valor default: 1
4.3 Configuración de cuenta INSIGNA
Si en el archivo program.properties (ver paso 4.2) no se especificó un tipo de conexión o se
especificó el tipo de conexión 1 (conexión mediante TCP) es necesario configurar:
1. Archivo pac_client.properties: configurar cuenta de acceso y revisar servidor TCP de INSIGNA.
%CONECTOR_HOME%/config/pac_client.properties
pac.tcp.server = [Dirección TCP de INSIGNA y puerto]
Formato: [dirección]#[puerto] Requerido: sí Valor default: signer.insigna.mx#2700
pac.tcp.username = [Nombre de usuario INSIGNA]
Requerido: sí
*Se puede encontrar más información de cada una de las propiedades de este archivo a
detalle en la sección 14.1, Tabla 4.
Si en el archivo program.properties se especificó el tipo de conexión 2 (conexión mediante
Web Service) es necesario configurar:
1. Archivo ws_client.properties: configurar cuenta de acceso y URL del Web Service de INSIGNA.
%CONECTOR_HOME%/config/ws_client.properties
Página | 14
pac.ws.wsdl = [Dirección del WSDL del Web Service de INSIGNA]
Formato: [URL]/services?wsdl Requerido: no Valor default: https://ws.insigna.mx/services?wsdl
pac.ws.username = [Nombre de usuario INSIGNA]
Requerido: sí
*Se puede encontrar más información de cada una de las propiedades de este archivo a
detalle en la sección 14.1, Tabla 5.
4.4 Instalación de certificado SSL de INSIGNA
Si en el archivo program.properties (ver paso 4.2) no se especificó un tipo de conexión o se
especificó el tipo de conexión 1 (conexión mediante TCP) es necesario configurar:
1. Añadir los archivos tcp-server.pem y el archivo tcp-client.pk12 a la carpeta SSL
C:\conector\config\ssl
Ambos archivos se generan durante el proceso de contratación con INSIGNA. El archivo tcp-server.pem será proporcionado directamente por INSIGNA, mientras que el archivo tcp-client.pk12 será generado de acuerdo a las indicaciones dadas por INSIGNA. Es importante que los archivos tengan los nombres tcp-server.pem y tcp-client.pk12, para que el Conector los pueda procesar.
4.5 Configuración de contraseñas
Todas las contraseñas en el Conector se manejan a través del comando conector masterkey.
%CONECTOR_HOME%/bin/conector masterkey
Con el comando conector masterkey se define una contraseña única que engloba a todas las
demás. Este manual se referirá a esta contraseña como llave maestra.
El comando es ejecutado en consola con el comando conector masterkey el cual ejecuta el proceso para definir una nueva llave maestra y las contraseñas correspondientes. Se tiene un máximo de 3 intentos para definir cada contraseña; en el caso de las cuentas INSIGNA, TCP-INSIGNA, y WS-INSIGNA estos intentos cuentan de manera conjunta. Las contraseñas que el comando pide son:
Llave maestra.
Contraseña de usuario INSIGNA.
Página | 15
Contraseña de la llave privada que corresponde al certificado SSL entregado por
INSIGNA (solo si el tipo de conexión es TCP).
Contraseña de servidor de correo (en caso de implementarse).
Contraseña de la llave privada de cada RFC agregado.
El comando sólo pide las contraseñas necesarias para la configuración que se tenga hasta ese
momento.
Para más información sobre el comando conector masterkey referirse a la sección 14.4.
4.6 Instalación de certificado de sello digital (CSD) y su llave privada
1. Renombrar cada uno de los archivos (.cer y .key) bajo el nombre de su RFC. 2. Depositar ambos archivos en la carpeta llamada ‘CERTS’ dentro del conector
C:\conector\config\certs
Si el tipo de conexión seleccionado en el paso 4.2 fue “Web Service” y el certificado y llave privada del RFC ya fueron dados de alta en la página web de INSIGNA, no es necesario incluir dichos archivos en Conector.
4.7 Alta/Baja de empresas en archivo rfc.properties
1. El último paso consiste en configurar los RFCs
%CONECTOR_HOME%/config/rfc.properties
rfc.emisor.list = RFC1,RFC2,RFC3
Tipo de dato: cadena (RFCs separados por comas) Requerido: obligatorio
Importante: Para dar de baja un RFC del listado, sólo se requiere borrarlo de la propiedad rfc.emisor.list 2. Ejecutando el comando conector masterkey6 se puede determinar la contraseña de la llave privada para cada RFC.
%CONECTOR_HOME%/bin/conector masterkey
6 Ver punto 4.5 de este manual.
Página | 16
4.8 Alta/Baja de unidades de negocio en archivo rfc.properties
Muchas empresas tienen sucursales o unidades de negocio que utilizan el mismo RFC para facturación, en caso de requerir una representación impresa del CFDI diferente para cada unidad de negocio es necesario dar de alta la unidad de negocio.
1. Establecer las unidades de negocio relacionadas al RFC, este previamente tuvo que
haber sido dado de alta.
[RFC].rfc.busUnit.list = [UNIDADDENEGOCIO],[UNIDADDENEGOCIO]
Tipo de dato: cadena (Nombre identificador de la unidad de negocio separado por comas) Requerido: Sólo si necesita representaciones impresas de CFDI para un mismo RFC
Importante: Para dar de baja una unidad de negocio del listado, sólo se requiere borrarlo de la propiedad [RFC].rfc.busUnit.list 2. Establecer la plantilla correspondiente para cada unidad de negocio.
[RFC].rfc.busUnit.[UNIDADDENEGOCIO].pdf.template =
Tipo de dato: Nombre de plantilla sin extensión(referirse a las contenidas en la carpeta establecida en program.properties en la propiedad pdf.template.path
Requerido: Requerido por cada UNIDADDENEGOCIO declarada en [RFC].rfc.busUnit.list
3. Establecer el valor a coincidir con el campo serie del CFDI para determinar la
pertenencia de un CFDI con determinado RFC a una UNIDADDENEGOCIO declarada.
[RFC].rfc.busUnit.[UNIDADDENEGOCIO].value =
Tipo de dato: Cadena Requerido: Requerido por cada UNIDADDENEGOCIO declarada en [RFC].rfc.busUnit.list
4.9 Revisión de instalación
El comando conector test verifica la información existente de la aplicación Conector.
%CONECTOR_HOME%/bin/conector test
Durante la ejecución, el comando solicita la llave maestra para ejecutar el set de pruebas
completo. En el caso de pasar toda revisión se puede ejecutar la aplicación.
La siguiente imagen muestra un ejemplo de resultado cuando se configura el Conector
utilizando el tipo de conexión a INSIGNA mediante TCP:
Página | 17
En caso de que el Conector encuentre un error en alguno de los puntos anteriores, mostrará
en pantalla un mensaje de error indicando los puntos en donde se encuentra el problema.
*Se pueden encontrar todas las revisiones a detalle que hace el comando conector test en los anexos.
Página | 18
6. Ejecución
La ejecución del Conector se hace con el comando conector run.
%CONECTOR_HOME%/bin/conector run
Con este comando el Conector estará activo y conectado al Servidor TCP de INSIGNA para
ejecutar el proceso de timbrado, cancelación y validación de CFDIs. El usuario no tendrá que
preocuparse por dicha conexión dada la implementación de un administrador automático de
conexiones que las gestiona de una forma eficiente y silenciosa para solventar las peticiones
de timbrado y cancelación que el Conector realice.
IMPORTANTE: el Conector no soporta múltiples ejecuciones, es decir, para un cliente de
INSIGNA en específico sólo podrá existir un Conector en ejecución.
7. Apagado del Conector
Si se desea apagar el Conector en ejecución es necesario hacerlo usando el comando conector
stop.
Para poder ejecutarlo es requerido que se abra una nueva consola y se ejecute la siguiente
línea:
%CONECTOR_HOME%/bin/conector stop
Página | 19
8. Configuración de correos
Para utilizar la funcionalidad de envío de correos en cada una de las empresas, se necesita
realizar los siguientes pasos:
1. Editar el archivo program.properties: Activar la funcionalidad de envío de correos
%CONECTOR_HOME%/config/program.properties
activate.mail = true Tipo de dato: booleano (true/false) Requerido: obligatorio
2. Editar el archivo mail.properties: Configurar servidor de correo SMTP y plantillas
%CONECTOR_HOME%/config/mail.properties
config.smtp.url = [dirección del servidor de correo SMTP]
Formato: [dirección]:[puerto] Ejemplo: mailserver.example.com:25
La dirección del servidor de correo debe ser una URL válida, y se sugiere utilizar el puerto 25, el cual es el más común para el protocolo SMTP.
Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos. Tanto la dirección como el puerto son obligatorios.
config.smtp.user = [Nombre de usuario del correo electrónico]
Tipo de dato: cadena Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos
mail.templates = [Nombre de plantilla]
Tipo de dato: cadena (nombres de plantillas separados por comas). Los nombres de plantilla deberán ser de una sola palabra, es decir no deberán contener espacios intermedios.
Ejemplo: plantilla1, plantilla2, plantilla3 Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos
[Nombre de plantilla].mail.from = [Dirección de correo del remitente]
Tipo de dato: cadena (correo electrónico) Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos
Página | 20
[Nombre de plantilla].mail.cc = [Dirección de correo para recibir una copia]
Tipo de dato: cadena (correo electrónico, sólo se admite una dirección) Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos
[Nombre de plantilla].mail.bcc = [Envío de copia oculta a correo electrónico]
Tipo de dato: cadena (correo electrónico, sólo se admite una dirección) Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos
[Nombre de plantilla].mail.subject = [Asunto del correo]
Tipo de dato: cadena Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos
[Nombre de plantilla].mail.body = [Cuerpo del correo]
Tipo de dato: cadena especial*** Esta cadena puede contener texto en general, además de que puede ser particionada con el
carácter "\", esto para generar cuerpos de correo largos conservando su visibilidad en pantalla.
Además, pueden ser introducidos los caracteres especiales de cadenas (String Java 6. Para mayor
información) como el caso del salto de línea "\n" para formatear el cuerpo del correo. Por último,
se pueden añadir variables que corresponden al CFDI enviado en el correo para personalizar el
mensaje.
Datos en las variables: - receptorName - invoiceDate
Formato de entrada de variables: - <variable>receptorName</variable>
Ejemplo: Estimado <variable>receptorName</variable>:\n\nPor medio del \ presente correo nos permitimos hacerle llegar el CFDI correspondiente \ a su compra efectuada el día <variable>invoiceDate</variable>.\n\n\ Nuevamente, reiteramos nuestro compromiso con usted y todos nuestros \ clientes. Además, le informamos que pronto tendremos promociones \ especiales, ¡Esté atento!\n\nAtentamente\n\nEmpresa Pruebas XYZ S.A.\ de C.V.
Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos
Para eliminar una plantilla es necesario borrar su nombre de la lista de plantillas activas en
la propiedad mail.templates. No es necesario el borrado de sus propiedades, sólo de la lista
de plantillas activas. No debe haber empresas que sigan haciendo referencia a plantillas
eliminadas o el Conector no iniciará ejecución.
3. - Editar el archivo rfc.properties; seleccionar la plantilla de correo para una empresa
%CONECTOR_HOME%/config/rfc.properties
Página | 21
Se pueden configurar las plantillas de correo para cada RFC una vez que las plantillas estén
hechas.
En el archivo rfc.properties se define la propiedad [RFC].mail.template7 en el cual se agrega
el nombre de la plantilla que se desee seleccionar.
[RFC].mail.template = [nombre de la plantilla] *** Referirse a las plantillas definidas en el archivo mail.properties
Tipo de dato: cadena (valores como los utilizados en la propiedad "mail.templates") Requerido: Obligatorio cuando se activa la funcionalidad de envío de correos.
9. Timbrado de CFDIs
8.1 Creación de archivos XML
El Conector lee los archivos de la carpeta filesystem.cfdi_to_sign. Cada archivo representa un
CFDI a ser timbrado. El archivo debe estar en formato XML o CSV (el formato CSV no aplica
para la versión 3.3 de CFDI y está limitado a los tipos de comprobantes mencionados en esta
sección) y guardado en codificación UTF-8 y el tamaño del CFDI que generen no debe superar
los 5 MB. Como referencia, una factura normal oscila entre 4 y 8 kb.
El contenido del archivo CSV para Retención Pago V1.0 tiene el siguiente formato:
[PRIMER RENGLÓN]
retencion,claveRetencion,folioInterno,descripción,fechaExpedición
[SEGUNDO RENGLÓN]
emisor,rfc,nombreDenominaciónRazonSocial,curp
[TERCER RENGLÓN]
receptor-nacional,rfc, nombreDenominaciónRazonSocial,curp
receptor-extranjero, nombreDenominaciónRazonSocial,numeroRegistroIdFiscal
[CUARTO RENGLÓN]
periodo,mesInicio,mesFin,añoEjercicioFiscal
[QUINTO RENGLÓN]
totales,montoTotalOperacion,montoTotalGravado,montoTotalExento,montoTotalRetenciones
7 Ver punto 14.1, Tabla 2.
Página | 22
[N RENGLONES POR IMPUESTO RETENIDO]
impuestoretenido,montoRetenido,tipoPagoRetención,baseImpuesto,tipoImpuesto
[ÚLTIMO RENGLÓN]
complemento,enajenaciondeacciones,contratoIntermediación,ganancia,pérdida
complemento,operacionesconderivados,montoGananciaAcumulable,montoPerdidaDeducible
complemento,sectorfinanciero,idFideicomiso,nombreFideicomiso,descripciónFideicomiso
complemento,intereses,provieneDeSistemaFinanciero,interesesRetirados,correspondeAOperacionFinancieraDerivada,montoInterésNominal,montoInteresesReales,pérdida
complemento,arrendamientoenfideicomiso,pagoFiduciarioArrendador,remdimientosObtenidos,deduccionesArrendamiento,montoTotalRetención,montoResfiscalFIBRAS,montoOtrosConceptosDistribuidos,descripciónConceptosDistribuidos
complemento,premios,entidadFederativaPago,montoPago,montoGravado,montoTotalExento
complemento,pagosaextranjeros,esBeneficiarioDirecto,paisDeResidencia,conceptoPagoNB,descripcionConceptoNB,rfc,Curp,razónSocialB,conceptoPagoB,descripcionConceptoB
complemento,planesderetiro,sistemaFinanciero,montoTotAportAnioInmAnterior,montoIntRealesDevengAniooInmAnt,huboRetirosAnioInmAntPer,montoTotRetiradoAnioInmAntPer,montoTotExentRetiradoAnioInmAnt, montoTotExedenteAnioInmAnt,huboRetirosAnioInmAnt,montoTotRetiradoAnioInmAnt
complemento,intereseshipotecarios,creditoOtorgadoPorInstFinanciera,saldoInsoluto,proporciónDeducibleDelCrédito,montoTotaInteresesNominalesDevengados,montoTotaInteresesNominalesDevengadosPagados,montTotaInteresesRealesPagadosDeducibles,numContratoCréditoHipotecario
*Información a detalle sobre el formato completo para la inserción de datos en archivos CSV se puede encontrar en la sección 14.3.
Por defecto, el delimitador es una coma simple para la separación de datos; las comillas se
utilizan como carácter de escape de la coma simple. Los delimitadores pueden ser
modificados en las propiedades del archivo program.properties8.
Creación de archivo XML
En caso de tratarse de un CFDI V3.3, el XML debe cumplir con el esquema descrito por la SAT
en el anexo 20.
http://www.sat.gob.mx/informacion_fiscal/factura_electronica/paginas/anexo_20_version3.
3.aspx
En caso de ser una Retención Pago V1.0, el XML debe cumplir con el esquema descrito por la
SAT en el documento Retención Pago.
8 Ver punto 14.1, Tabla 1.
Página | 23
http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/retenciones/Ret
encionPago.pdf
8.2 Proceso de timbrado
Como se menciona en la sección 5, este proceso se efectúa con el comando conector run. El
Conector toma los archivos de la carpeta de entrada y procesa cada uno como un CFDI. El
tiempo de este ciclo está determinado por timer.period que por defecto es de 10 segundos.
En caso de éxito, se escribirá un archivo XML con el CFDI timbrado y un PDF como
representación impresa, ambos usando como nombre de archivo el generado por el formato
definido de nombre de archivo para el RFC emisor del CFDI ( propiedad
[RFC].cfdis.file_name_format ). Éstos son escritos en las carpetas [RFC].signed_cfdis y
[RFC].cfdi_pdfs.
Al ocurrir un error en los datos de entrada o un error de comunicación se generan dos nuevos
archivos en la carpeta filesystem.cfdis_failed_to_sign; el primero es el archivo de entrada y el
segundo un log (archivo de texto) con la descripción del error ocurrido, el cual se crea con el
mismo nombre y agregando el sufijo “_log”. En caso de nombres repetidos, se agrega el sufijo
_#. En el caso de que existan más de 3 intentos de timbrado fallidos de manera consecutiva,
es decir se obtenga un error (2500), el conector se detendrá para que se ejecute una revisión
manual de esos archivos y después se podrá iniciar nuevamente.
Página | 24
8.3 Manejo de Addendas
INSIGNA permite la inclusión de addendas dentro de los archivos XML que se van a timbrar.
Las addendas soportadas por INSIGNA (en modo de archivo XML) son XML, EDIFACT y texto
libre. Por el momento, el Conector no soporta el manejo de addendas en archivos CSV.
Para el caso de las adendas en XML (es decir, no EDIFACT ni texto libre) es necesario
proporcionar la definición de dicha addenda en un archivo XSD (XML Schema Definition). La
ubicación del archivo se especifica en la propiedad addendas.path, como se puede consultar
en la Sección 14.1 (Tabla 1) de este manual.
A continuación se muestran ejemplos de los distintos tipos de Addendas soportados por
INSIGNA:
XML
Página | 25
<Addenda>
<Tienda>
<Tienda:Discos>
<Tienda:Disco id="201203048843" precio="125.00"/>
<Tienda:Disco id="201115234533" precio="185.00"/>
<Tienda:Discos/>
<Tienda:Libros>
<Tienda:Libro id="PR2323388" precio="325.00"/>
<Tienda:Libro id="CL8484320" precio="45.00"/>
<Tienda:Libros/>
</Tienda>
</Addenda>
EDIFACT
<Addenda>
<Documento>
UNB+IATB:1+6XPPC+LHPPC+940101:0950+1'
UNH+1+PAORES:93:1:IA'
MSG+1:45'
IFT+3+XYZCOMPANY AVAILABILITY'
ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'
ODI'
TVL+240493:1000::1220+FRA+JFK+DL+400+C'
</Documento>
</Addenda>
Página | 26
TEXTO LIBRE
<Addenda>
Este es un ejemplo de addenda con texto libre. El contenido no necesita seguir ninguna
estructura en XML, con tal de que la codificación sea la misma que en el resto del
archivo (UTF-8). Aquí se puede poner texto a discreción del usuario.
</Addenda>
10. Cancelación de CFDIs
El proceso de cancelación se lleva a cabo de la misma forma que el proceso de timbrado.
El proceso inicia leyendo de la carpeta filesystem.cfdis_to_cancel, donde el cliente debe
depositar los archivos CFDIs a cancelar. El proceso lee los archivos en formato XML y arroja
los acuses de recibo (recibidos directamente del SAT) en la carpeta [RFC].canceled_cfdis
para las cancelaciones exitosas. Para las cancelaciones fallidas se deja en la carpeta
filesystem.cfdis_failed_to_cancel el archivo original (XML) de la cancelación así como un
archivo de log con la descripción del error.
XML
El XML insertado en el sistema de archivos para ser cancelado debe ser el mismo que el XML
timbrado.
11. Recuperación de CFDIs
El Conector permite a un usuario recuperar los CFDIs que dicho usuario ha timbrado con
INSIGNA. Para ello es necesario realizar los siguientes pasos:
1. Descargar el reporte de CFDIs timbrados del sitio de INSIGNA, disponible en la dirección
https://www.insigna.mx/jsf/invoicer/report/report.jsf . Es necesario que el usuario se
autentique proporcionando el nombre de usuario INSIGNA (ver sección 4.4) y la contraseña de
usuario INSIGNA (ver sección 4.6).
Página | 27
2. Una vez descargado este reporte (un archivo en formato CSV) se requiere colocarlo en una
carpeta dentro de la instalación del conector, definida por la propiedad
filesystem.cfdis_input_report, cuyo valor por defecto se puede consultar en la sección 13.1
(Tabla 1).
Es importante que el reporte CSV sea el único archivo presente en la carpeta, dado que el
Conector no pide de antemano un nombre para dicho archivo, sino que procesa el primero
que encuentre en el directorio especificado.
3. La recuperación de CFDIs no se ejecuta de modo paralelo al timbrado y a la cancelación,
por lo cual, en caso de que el conector esté ejecutándose, es necesario detenerlo mediante
el comando conector stop (ver sección 6).
4. Si el conector no se encuentra en proceso de timbrado o de cancelación, se podrá ejecutar
el comando de recuperación de CFDIs:
%CONECTOR_HOME%/bin/conector download
Página | 28
5. Como parte de la ejecución, se validará la configuración del conector, incluyendo la parte
de contraseñas (llave maestra).
6. Si las validaciones de configuración son exitosas, el conector comenzará a procesar el
reporte, avisando con el texto:
7. De existir algún problema con el reporte, el conector avisará con un mensaje de error:
Las posibles causas de error son las siguientes:
No se encontró ningún archivo en el directorio. Se encontró un archivo que no es de tipo CSV. No se encontraron UUIDs a procesar en el reporte. El reporte excede el tamaño permitido a procesar del Conector (5 MB). Se encontró una carpeta adicional en el directorio. Ocurrió un error de IO (InputOutput) al intentar abrir el archivo.
8. Si el reporte es procesado correctamente, se mostrará un mensaje de confirmación y se
generarán los archivos XML correspondientes:
Página | 29
9. De existir algunos errores encontrados en el reporte (por ejemplo, si el archivo fue
accidentalmente modificado) se generará un archivo txt con el mismo nombre del reporte y la
terminación “…_log.txt”:
10. Si se desea que el Conector reanude el procesamiento de facturas (timbrado, cancelación
y validación), se necesita introducir el comando conector run (Ver sección 5).
%CONECTOR_HOME%/bin/conector run
Página | 30
12. Validación de CFDIs
11.1 Proceso de Validación
El Conector lee los archivos de la carpeta filesystem.validation.new. Cada archivo dentro de
esa carpeta debe ser un CFDI timbrado y en formato XML. El tamaño máximo que puede tener
un CFDI es de 5 MB; como referencia, un CFDI regular oscila entre los 4 y 8 KB.
Como se menciona en la sección 5, el proceso de validación se efectúa con el comando
conector run. El Conector toma los archivos de la carpeta de entrada e intenta procesar cada
uno como un CFDI para validarlo en el sistema de INSIGNA. El tiempo en que se ejecuta este
comando de manera recurrente, se define en la propiedad timer.period dentro del archivo
program.properties; por defecto esta variable tiene un valor de 10 segundos.
Tras validar los CFDIs que se pusieron en la carpeta filesystem.validation.new, el Conector los
moverá a otras 3 carpetas dependiendo del resultado de la validación, estas carpetas son las
que se indiquen en las propiedades: filesystem.validation.successful,
filesystem.validation.failed, y filesystem.validation.no_validated. El resultado de la
validación de los CFDIs puede ser: válido, inválido, y no validado.
Además de mover los archivos según el resultado de la validación, se generará un reporte con
los resultados de las validaciones realizadas. Dicho reporte se creará en la carpeta indicada
en la propiedad filesystem.validation.report dentro del archivo program.properties. El
reporte contendrá información detallada respecto a los resultados, si hubo algún error o el
archivo es inválido, se indicará con los errores correspondientes; estos se pueden consultar en
la sección 13 de este documento.
11.2 Resultados de Validación
En la sección anterior se menciona que la validación de un CFDI tiene 3 posibles resultados:
Válido: el documento cumple con la estructura que el SAT dicta para un CFDI y también se encuentra en los sistemas del SAT.
Inválido: el documento no cumple con la estructura que el SAT dicta para un CFDI o no se encuentra en los sistemas del SAT.
No validado: el documento no es un CFDI en formato XML, hubo un problema al comunicarse con el SAT, o el cliente no tiene timbres disponibles.
Página | 31
13. Representación Impresa
El Conector permite generar representaciones impresas de CFDIs o Retenciones que ya hayan
sido timbrados previamente. La generación la hace obteniendo los archivos que se encuentren
dentro de la carpeta indicada en la propiedad filesystem.print_representation.new dentro
del archivo program.properties.
La generación de representación impresa se efectúa con el comando conector run. Si el RFC
emisor tiene configurada una plantilla se tomará dicha plantilla para la representación
generada por el conector, en caso que no se tenga una plantilla se utilizará una plantilla
genérica.
Los archivos PDF de las representaciones genéricas generadas, así como el archivo fuente en
formato XML, serán colocadas por el Conector dentro de la carpeta configurada en la
propiedad filesystem.print_representation.successful dentro del archivo program.properties.
Si la representación impresa no se pudo generar, se copiará el archivo fuente a la carpeta
indicada en la propiedad filesystem.print_representation.failed que se configuró en el
archivo program.properties, y también se creará un archivo de tipo TXT donde se indicará la
causa por la que no se pudo generar la representación impresa del archivo correspondiente;
el nombre del archivo será igual que el archivo fuente pero con la terminación “_log.txt”.
12.1 Archivo Catalogs.properties
Existe un archivo llamado Catologs.properties dentro de la carpeta “bundles” donde se
encuentra instalado el conector, dicho archivo contiene las descripciones de las claves de los
catálogos del SAT y esas descripciones son usadas en las plantillas. Este archivo puede ser
modificado para cambiar las descripciones que vienen predeterminadas por descripciones que
los usuarios consideren más adecuadas o se sean más claras para su negocio y esos cambios
solo se verán reflejados en los PDF generados, ya sea por el proceso de timbrado o por la
regeneración de la representación impresa.
Los catálogos que se pueden modificar son:
Forma de pago
Método de pago
Tipo de relación
Régimen fiscal
Tipo comprobante
Página | 32
Uso CFDI
Tipo de Cadena de Pago (solo aplica para complemento de pago)
Ejemplo de Uso
Cambiar la forma de pago “02-Cheque nominativo” por solo “Cheque”.
Antes del cambio
Despues del cambio
14. Errores
A continuación se muestra una lista de errores locales, es decir que son validaciones propias del conector, existen catálogos de errores adicionales que son proporcionados por el SAT, por ejemplo CFDI33### para CFDI 3.3, NOM### para recibos de nómina y CCE### para complemento de comercio exterior. http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/matriz%20de%20errores/MatrizDeErrores_CFDI_v33.xls http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/Complementoscfdi/matriz_erroresnomina_v12.xls http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/matriz%20de%20errores/MatrizDeErrores_CCE_v11.xls
Página | 33
Código de
Error
Mensaje Detalles
CON-10202 No se pudo encontrar
el archivo: X.
El programa no pudo encontrar la ubicación de un archivo
de configuración del Conector.
CON-10400 Error de conector en
el proceso de
configuración: X.
Existe un error de configuración del Conector, revisar los
archivos de configuración. Para mayor información ir a la
sección 4 de la guía de usuario.
CON-20101 La URL del servidor
de correos es
inválida: X.
Revisar en el archivo mail.properties que la URL del servidor
de correos tenga un formato válido. Para mayor información
ir a la sección 7 de la guía de usuario.
CON-20102 El CFDI: X es inválido. Revisar la carpeta de error configurada en la propiedad
filesystem.failed_to_sign. El error de validación se
especifica en un archivo .txt con el mismo nombre que el
archivo de entrada más el sufijo “_log”.
CON-20103 Una o más
direcciones de correo
electrónico son
inválidas: X.
Revisar en el archivo mail.properties que las direcciones de
correo electrónico tengan un formato válido. Para mayor
información ir a la sección 7 de la guía de usuario.
CON-20104 El CFDI: X es inválido. Revisar la carpeta de error configurada en la propiedad
filesystem.failed_to_sign. El error de validación se
especifica en un archivo .txt con el mismo nombre que el
archivo de entrada más el sufijo “_log”.
CON-20105 Sello inválido del
CFDI: X.
Revisar en la carpeta de CFDIs por timbrar, el campo sello
del CFDI [X]. Para mayor información sobre la carpeta de
CFDIs por timbrar ir a la sección 11 de la guía de usuario.
CON-20106 Se encontró elemento
TimbreFiscalDigital,
posiblemente porque
el CFDI ya fue
timbrado: X.
El archivo XML procesado contiene un elemento que sólo
debe estar presente en los CFDIs ya timbrados. Revisar que
no se estén enviando a la carpeta de CFDIs por timbrar
aquellos CFDIs ya timbrados.
CON-20204 No se pudo leer el
CFDI: X.
El Conector tuvo problemas con la lectura del CFDI [X],
revisar que el CFDI [X] se encuentre en la carpeta de CFDIs
por timbrar y que la carpeta cuente con permisos de
lectura.
Página | 34
CON-20205 No se pudo crear el
CFDI: X.
El Conector tuvo problemas con la creación del CFDI [X],
revisar que el CFDI [X] se encuentre en la carpeta de CFDIs
por timbrar, en caso de que el CFDI [X] exista el error
puede deberse a que no puede guardarse el PDF del CDFI [X]
en la carpeta de PDFs. Para mayor información sobre la
carpeta de CFDIs por timbrar ir a la sección 11 de la guía de
usuario.
CON-20206 No se pudo escribir el
CFDI: X.
El Conector no pudo guardar el PDF correspondiente al CFDI
[X].
CON-20207 No se pudo cerrar el
CFDI: X.
El Conector no pudo cerrar la ruta de escritura del PDF
correspondiente al CFDI [X].
CON-20208 El tamaño del archivo
excede el límite
establecido: X.
El tamaño máximo del archivo a timbrar es de 5MB.
CON-20400 Error de sistema en el
procesamiento de
CFDIs: X.
El Conector tuvo un error inesperado durante el
procesamiento de CFDIs (para su timbrado o cancelación).
CON-20501 Ocurrió un error al
intentar enviar el
correo electrónico
correspondiente al
CFDI: X.
Revisar que los campos del archivo mail.properties estén
correctos. Para mayor información consultar la sección 7 de
la guía de usuario.
CON-20601 Error al inicializar la
fábrica de PDFs al
intentar generar el
archivo del CFDI: X.
Existe un error con la plantilla de PDFs (archivo de
extensión .jasper).
CON-20602 No se pudo generar el
archivo PDF del CFDI:
X.
Existe un error al generar el PDF del CFDI usando la plantilla
de PDFs.
CON-30101 Sello inválido del
CFDI: X.
Revisar en la carpeta de CFDIs por cancelar el campo sello
del CFDI [X]. Para mayor información sobre la carpeta de
CFDIs por cancelar ir a la sección 11 de la guía de usuario.
CON-30102 El CFDI: X es inválido. Existe un error con el CFDI [X] que se quiere cancelar.
Revisar el CFDI [X] en la carpeta de CFDIs por cancelar. Para
mayor información ir a la sección 11 de la guía de usuario.
Página | 35
CON-30105 Ocurrió un error al
analizar la gramática
del archivo ubicado
en la ruta: X.
El archivo ubicado en la ruta [X] tiene errores en la
estructura de la información, revisar que el archivo tenga
los datos estructurados de acuerdo al formato de CSV de
este manual o que sea un XML bien formado con la
estructura del CFDI explicada en el anexo 20 del SAT.
CON-30201 No se pudo encontrar
el CFDI: X.
No se pudo encontrar el CFDI [X] enviado a cancelar. Para
mayor información ir a la sección 11 de la guía de usuario.
CON-30204 No se pudo leer el
CFDI: X.
Pudo haber un error al leer el CFDI [X] enviado a cancelar o
un error al intentar guardar el archivo XML del CFDI
cancelado. Revisar la carpeta de CFDIs por cancelar. Para
mayor información ir a la sección 11 de la guía de usuario.
CON-30205 El tamaño del archivo
excede el límite
establecido: X.
El tamaño máximo del archivo a cancelar su timbrado es de
5MB.
CON-30206 El tipo de archivo no
coincide con los
archivos soportados:
X.
El archivo no coincide con las extensiones CSV ni XML.
CON-40401 Error al intentar
apagar el Conector:
X.
Existe un error en el Conector al intentar apagarse.
CON-50202 CFDI previamente
cancelado.
El CFDI enviado a cancelar ya había sido previamente
cancelado.
CON-50203 El UUID del CFDI no
concuerda con el
RFC.
El UUID no fue emitido por el RFC proporcionado, verificar
que la información en el archivo de entrada sea correcta.
Para mayor información sobre el archivo de cancelación ir a
la sección 9 de la guía de este manual.
CON-50205 El UUID no existe. El UUID a cancelar no está registrado en INSIGNA, verificar
que la información en el archivo de entrada sea correcta.
Para mayor información sobre el archivo de cancelación ir a
la sección 9 de este manual.
CON-50302 Sello mal formado o
inválido.
El UUID a cancelar se envió con una llave y/o certificado
que no corresponden al RFC con que dicho UUID fue
emitido.
Página | 36
CON-50303 El RFC del certificado
no coincide con el
RFC emisor.
El certificado CSD configurado no corresponde al RFC
emisor. Para mayor información ir a la sección 3.2 de este
manual.
CON-50304 El certificado se
encuentra revocado.
El certificado CSD configurado se encuentra revocado. Se
tiene que configurar el certificado activo proporcionado por
la SAT y correspondiente al RFC emisor. Para mayor
información ir a la sección 3.2 de este manual.
CON-50305 La fecha de emisión
no se encuentra
dentro del rango de
validez del
certificado.
La vigencia del certificado configurado no cubre la fecha
para la que se está emitiendo la factura. Para mayor
información ir a la sección 3.2 de este manual.
CON-50306 Certificado inválido. El certificado configurado es inválido. Se tiene que
configurar el certificado CSD (no FIEL) proporcionado por la
SAT y correspondiente al RFC emisor. Para mayor
información ir a la sección 3.2 de este manual.
CON-50307 El CFDI contiene un
timbre previo.
Se está procesando un CFDI que ya fue enviado a timbrar
anteriormente.
CON-50308 Certificado no
firmado por el CA
(certificate
authority).
El certificado CSD configurado es inválido. Se tiene que
configurar el certificado activo proporcionado por la SAT y
correspondiente al RFC emisor. Para mayor información ir a
la sección 3.2 de este manual.
CON-50401 El tiempo entre la
fecha de emisión y
fecha del timbrado
excede el límite
establecido.
La fecha de
cancelación se
encuentra fuera de
los límites
establecidos.
Revisar que la fecha de emisión proporcionada corresponda
con la fecha actual.
Revisar que la hora de la máquina corriendo el Conector
corresponda con la fecha actual.
CON-50402 El certificado no se
encuentra en la lista
de LCO.
El emisor no tiene
El certificado configurado es inválido. Se tiene que
configurar el certificado activo proporcionado por la SAT y
correspondiente al RFC emisor. Para mayor información ir a
la sección 4 de la guía de usuario.
Página | 37
obligaciones fiscales.
CON-50403 La fecha de emisión
es anterior al límite
establecido.
Revisar que la fecha de emisión proporcionada corresponda
con la fecha actual.
CON-52309 No hay timbres
disponibles / El RFC
está bloqueado.
Asegurarse que existan timbres disponibles para el usuario
INSIGNA configurado en el Conector y que el RFC emisor no
se encuentre bloqueado.
CON-52500 Error en el servidor. Ocurrió un error desconocido en el servidor. Favor de
comunicarse a INSIGNA.
CON-60101 El archivo XML es
Inválido.
El archivo que se validó en INSIGNA no cumple con las
validaciones de un CFDI correcto.
CON-60102 El archivo XML es una
Retención no un
CFDI.
El archivo XML que se trató de validar es un archivo
correspondiente a una Retención.
CON-60201 No se pudo leer el
archivo del CFDI.
No se pudo obtener el archivo correspondiente al CFDI que
se quería validar.
CON-60202 El tamaño del archivo
excede el máximo
soportado.
El archivo que se trató de validar excede al tamaño máximo
permitido.
CON-60203 El tipo de archivo no
coincide con los
archivos soportados.
El archivo que se trató de validar no es de tipo XML, es un
tipo de archivo no soportado para validación.
CON-70001 No se pudo leer el
archivo.
No se pudo leer o escribir en el archivo relacionado a la
representación impresa.
CON-70002 El tamaño del archivo
excede el máximo
soportado.
El archivo que se trató de obtener para generar la
representación impresa excede al tamaño máximo
permitido.
CON-70003 El tipo de archivo no
coincide con los
archivos soportados.
El archivo que se trató de obtener para generar la
representación impresa no es de tipo XML, es un tipo de
archivo no soportado para esta funcionalidad.
CON-70004 El archivo XML es
inválido.
El archivo que se trató de obtener para generar la
representación impresa no cumple con las validaciones
propias de un CFDI o Retención.
Página | 38
CON-70005 Sello del CFDI
inválido.
El CFDI o Retención a la que se trató de generar
representación impresa, no contiene un sello válido.
CON-70006 Error al intentar
generar el archivo
PDF.
Ocurrió un error desconocido al momento de intentar
generar la representación impresa del CFDI o Retención.
CON-70007 Error mientras se
escribía el archivo
PDF.
Ocurrió un error desconocido al momento de generar la
representación impresa del CFDI o Retención.
CON-70008 No se encontró el
CFDI.
No se encontró el CFDI o Retención a la que se trató de
generar la representación impresa.
15. Anexos
14.1 Propiedades de configuración
El Conector permite su configuración a través de cinco archivos (se genera un archivo extra en
memoria para almacenar las contraseñas, las cuales no estarán visibles).
Sólo el archivo “logging.properties” sigue las especificaciones de logging de Java, por lo que
no es presentado.
A continuación se muestra una descripción de los parámetros de configuración del Conector.
Tabla 1 Propiedades configurables del archivo program.properties
Nombre Propiedad Descripción Tipo de dato Default
Modo de
entrada de
CFDIs
input.mode Modo de entrada de CFDIs al
Conector
Selector(1,2) 1. Base de datos 2.- Archivos en carpetas del sistema.
2
Salida de
CFDIs
output.filesystem Salida de CFDIs al Conector Booleano (true/false)
false
Separador de
datos CSV
csv.separator Separador de datos que se
usará en los archivos de
sistema que corresponderán a
los CFDIs por procesar en
formato CSV.
Caracter ,
Carácter de csv.escape.charact Carácter de escape que se Caracter “
Página | 39
escape CSV er usará en los archivos de
sistema que corresponderán a
los CFDIs por procesar en
formato CSV.
Carpeta CFDIs
por timbrar
filesystem.cfdis_to
_sign
Dirección de sistema en
donde se colocarán los CFDIs
listos para timbrarse
Cadena (dirección de
archivos del sistema)
./default/
Timbrado/
nuevos
Carpeta CFDIs
fallidos por
timbrado
filesystem.cfdis_fai
led_to_sign
Dirección de sistema en
donde se colocarán los CFDIs
que fallaron en el proceso de
timbrado junto con sus logs.
Los logs se presentarán con el
mismo nombre del archivo
del CFDI añadiendo el
postfijo "_log"
Cadena (dirección de
archivos del sistema)
./default/
Timbrado/f
allados
Carpeta CFDIs
por cancelar
filesystem.cfdis_to
_cancel
Dirección de sistema en donde se colocarán los CFDIs a cancelar junto con sus logs. Los logs se presentarán con el mismo nombre del archivo del CFDI añadiendo el postfijo "_log" y contendrán información del proceso de cancelación.
Cadena (dirección de
archivos del sistema)
./default/
Cancelacio
n/nuevos
Carpeta de
CFDIs fallidos
por
cancelación
filesystem.cfdis_fai
led_to_cancel
Dirección de sistema en
donde se colocarán los CFDIs
que fallaron en el proceso de
cancelación junto con sus
logs. Los logs se presentarán
con el mismo nombre del
archivo del CFDI añadiendo el
postfijo "_log"
Cadena (dirección de
archivos del sistema)
./default/
Cancelacio
n/fallados
Carpeta de
CFDIs a
validar
filesystem.validati
on.new
Dirección de sistema en
donde se colocarán los CFDIs
listos para validarse
Cadena (dirección de
archivos del sistema)
./default/
Validacion/
nuevos
Carpeta de
CFDIs válidos
filesystem.validati
on.successful
Dirección de sistema en
donde se colocarán los CFDIs
que pudieron ser enviados a
INSIGNA y que son válidos.
Cadena (dirección de
archivos del sistema)
./default/
Validacion/
validos
Carpeta de
CFDIs
inválidos
filesystem.validati
on.failed
Dirección de sistema en
donde se colocarán los CFDIs
que pudieron ser enviados a
Cadena (dirección de
archivos del sistema)
./default/
Validacion/
invalidos
Página | 40
INSIGNA y que son inválidos.
Carpeta de
CFDIs no
validados
filesystem.validati
on.no_validated
Dirección de sistema en
donde se colocarán los CFDIs
que no pudieron ser enviados
a INSIGNA.
Cadena (dirección de
archivos del sistema)
./default/
Validacion/
no_validad
os
Ubicación de
reporte de
validación de
CFDIs
filesystem.validati
on.report
Dirección de sistema en
donde se colocará el reporte
con el resultado de las
validaciones a los CFDIs.
Cadena (dirección de
archivos del sistema)
./default/
Validacion/
Carpeta de
logs de
operación
filesystem.operatio
n_log
Dirección de sistema en
donde se colocarán los
archivos que contendrán la
información concerniente a
los procesos del sistema en
forma de bitácora de
operación
Cadena (dirección de
archivos del sistema)
./log
Carpeta
plantillas PDF
pdf.template.path Dirección de sistema en donde se encuentran las plantillas para la creación de los PDFs. *La carga de cualquier otro tipo de archivo puede causar problemas en la funcionalidad del conector.
Cadena (dirección de
archivos del sistema)
./config/te
mplates
Carpeta para
generación de
representació
n impresa de
CFDIs
filesystem.print_re
presentation.new
Dirección de sistema en donde se encuentran los CFDIs a los que se generará una representación impresa.
Cadena (dirección de
archivos del sistema)
./default/
Generacion
de
Representa
cion
Impresa/nu
evos
Carpeta de
representacio
nes impresas
falladas
filesystem.print_re
presentation.failed
Dirección de sistema en donde se encuentran los archivos a los que no se les pudo generar una representación impresa.
Cadena (dirección de
archivos del sistema)
./default/
Generacion
de
Representa
cion
Impresa/fa
llados
Carpeta de
representacio
nes impresas
generadas
filesystem.print_re
presentation.succe
ssful
Dirección de sistema en donde se encuentran las representaciones impresas generadas de manera exitosa.
Cadena (dirección de
archivos del sistema)
./default/
Generacion
de
Representa
cion
Página | 41
Impresa/re
presentaci
ones_impre
sas_genera
das
Carpeta
certificados y
llaves de los
RFCs
certs_pks.path Dirección de sistema en
donde se encuentran los
certificados y llaves privadas
Cadena (dirección de
archivos del sistema)
./config/ce
rts
Número de
CFDIs a
bloquear por
proceso de
timbrado
database.rows.per.
process
Número de CFDIs que se
bloquearán por proceso de
timbrado del sistema. (sólo
modo base de datos)9
Entero Positivo
(1-500)
20
Activación de
envío de
CFDIs
activate.mail Activar o desactivar el envío
de CFDI por correo
electrónico
Booleano (true/false) false
Puerto de
conexión para
apagado del
sistema
shutdown.port Puerto para establecer la
conexión con el sistema en el
proceso de apagado del
mismo.
Entero positivo (recordar que está sujeto a número de puertos del S.O.)
26632
Path del
comando
openssl
openssl.command.
path
Ruta del comando openssl. Cadena (dirección de
archivos del sistema)
*Debe de
ser
establecido
por el
usuario
Periodo de
proceso
timer.period Periodo de tiempo que el sistema tardará en volver a realizar el proceso de timbrado. *Tiempo Menor 1 segundo – Mayor 999999
- "s" para segundos - "m" para minutos - "h" para horas - "d" para días - "w" para semanas
10s
Carpeta para
XSDs
addendas.path Dirección de sistema en
donde se encuentran los
esquemas de las addendas
con extensión .xsd que serán
cargados por el sistema
Cadena (dirección de
archivos de sistema)
*Definido
por el
usuario. No
es
requerido
9 El bloqueo al cual se hace referencia es a nivel de registros de la base de datos. Los CFDIs a procesar, sea cual sea el número, serán bloqueados para no permitir que otras aplicaciones pudieran modificarlos en ese momento.
Página | 42
Ancho de
pantalla
out.message.width Ancho en número de
caracteres para el correcto
formateo de los mensajes
Entero positivo
(60-200)
80
Tipo de
conexión a los
servicios de
INSIGNA
connection.type Tipo de conexión que se
utilizará para conectarse a
los servicios de INSIGNA
Selector (1, 2)
1 – TCP
2 – Web Service
1
Habilitar
respaldo de
CFDIs
enable.output.back
up_cfdis
Permite habilitar la
configuración de respaldo de
los CFDIs emitidos por el
conector
Booleano (true/false) false
Salida de
respaldo de
CFDIs
output.backup_cfdi
s
Permite utilizar una dirección
donde se guardan respaldos
de los CFDIs emitidos por el
conector
Cadena (dirección de
archivos de sistema)
./default/
Respaldo:C
FDIsYaTimb
rados_Mail
Sender
Pausa entre
firmado de
XML
pause.between.sig
ns
Tiempo de espera (en
milisegundos) después de
firmar un XML antes de
firmar el siguiente
Entero positivo 0
Activación de
la escritura
del carácter
BOM – UTF-8
filesystem.utf8.wit
h.bom
Permite indicar si se desea
que se escriba el carácter
BOM para UTF-8
Booleano (true/false) false
Url
cancelación
de
retenciones
retention.cancel.n
amespace
Url para generar el sello de
cancelación de retenciones
Cadena http://ww
w.sat.gob.
mx/esque
mas/retenc
ionpago/1
Tabla 2 Propiedades configurables del archivo rfc.properties
Nombre Propiedad Descripción Tipo de dato Default
RFCs
emisores
activos
rfc.emisor.list RFCs que estarán
configurados en la parte
inferior del documento,
además de que se
encontrarán activos listos
para poder timbrar CFDIs
Cadena (RFCs
separados por comas)
*Debe de ser
establecido por el
usuario
Página | 43
donde ellos sean los
emisores
Formato del
nombre de
archivo para
los CFDIs
(PDF/XML)
[RFC].cfdis.file_na
me_format
Formato para el nombre de los archivos de salida PDF/XML para el resultado de proceso de timbrado o cancelación. Es obligatorio incluir el uuid. En caso de repeticiones de nombre de archivo, se renombran usando un sufijo “_#” para diferenciarlos entre sí.
- rfc_emisor - rfc_receptor - año $(yyyy) - mes $(mm) - día $(dd) - hora $(hh) - minuto $(mi) - segundo $(ss) - uuid
$(yyyy)$(mm)$(dd
)_$(rfc_receptor)_
$(uuid)
Carpeta PDFs [RFC].cfdi_pdfs Dirección de sistema en
donde se encontrarán los
archivos PDF de los CFDIs
timbrados
Cadena (dirección de
archivos de sistema)
./default/Timbrad
o/timbrados
Carpeta
CFDIs
timbrados
[RFC].signed_cfdis Dirección de sistema en
donde se encontrarán los
archivos XML de los CFDIs
timbrados
Cadena (dirección de
archivos de sistema)
./default/
Timbrado/timbrad
os
Carpeta
CFDIs
cancelados
[RFC].canceled_cfd
is
Dirección de sistema en
donde se encontrarán los
archivos XML de los CFDIs
cancelados
Cadena (dirección de
archivos de sistema)
./default/Cancela
cion/cancelados
Plantilla de
correo
[RFC].mail.templat
e
Plantilla de correo que
será utilizada para el
envío de los CFDIs
correspondientes al RFC
Cadena (valores
como los utilizados
en la propiedad
mail.templates del
archivo
mail.properties)
*Requerido (sólo si
se activa la
propiedad
activate.mail)
Plantilla PDF [RFC].pdf.template Plantilla de PDF que será
utilizada para la creación
de los archivos PDF para
los CFDIs
Nombre de plantilla (Nombre del archivo contenido en la carpeta de Plantillas PDF sin hacer uso de su extensión)
Default(correspon
de a
default.jasper)
Lista de
unidades de
negocio
[RFC].rfc.busUnit.li
st
Listado de unidades de
negocio correspondientes
a un RFC, en caso de
querer diferentes
representaciones
impresas para un mismo
Cadena (Nombres identificadores de las unidades de negocio separados por comas)
*Debe ser
establecido por el
usuario, si lo
requiere
Página | 44
RFC
Plantilla PDF
para la
unidad de
negocio
[RFC].rfc.busUnit. [UNIDAD DE
NEGOCIO].pdf.tem
plate
Nombre de la plantilla
asociada a la unidad de
negocio, referirse a las
contenidas en la carpeta
establecida en
pdf.template.path
Nombre de plantilla (Nombre del archivo contenido en la carpeta de Plantillas PDF sin hacer uso de su extensión)
*Debe ser
establecido por el
usuario si declaró
una unidad de
negocio en
particular
Valor a
coincidir
[RFC].rfc.busUnit.
[UNIDAD DE
NEGOCIO].value
Valor que debe coincidir
con el campo serie del
CFDI y con el RFC para
determinar su
correspondencia a una
unidad de negocio
Cadena (Valor a coincidir)
*Debe ser
establecido por el
usuario si declaró
una unidad de
negocio en
particular
Logo plantilla
[RFC].pdf.template
.logo
Permite introducir el logo
que será utilizado en los
archivos PDF
Cadena (Nombre del archivo del logotipo contenido en la carpeta de Plantillas PDF, por ejemplo: images/default.png)
Ninguno
Plantilla PDF
Retención
[RFC].retention.te
mplate
Permite introducir la
plantilla de PDF que será
utilizada para las
retenciones
Cadena (Nombre del archivo sin extensión, ejemplo: defaultRetention)
defaultRetention
Logo de
plantilla
Retención
[RFC].retention.te
mplate.logo
Permite introducir el logo
que será utilizado en los
archivos PDF creados
para los CFDIs
Retenciones
Cadena (Nombre del archivo del logotipo contenido en la carpeta de Plantillas PDF, por ejemplo: images/default.png)
Ninguno
Tabla 3 Propiedades configurables del archivo mail.properties
Nombre Propiedad Descripción Tipo de dato Default
URL del
servidor
config.smtp.url Dirección y el puerto
donde se encuentra
ubicado el servidor.
Cadena
[dirección]:[puerto]
*Requerido
Usuario config.smtp.user Nombre de usuario de
correo
Cadena *Requerido
Requiere
contraseña
el servidor
config.smtp.requires.
password
Indica si se utilizará
contraseña para el
correo electrónico
Booleano
(true/false)
false
Página | 45
Formato de
fecha
config.mail.date.for
mat
Formato de fecha que
será usado las fechas que
pudieran encontrarse en
el cuerpo del correo
http://docs.oracle.com
/javase/6/docs/api/jav
a/text/SimpleDateForm
at.html
dd/MM/yyyy
HH:mm:ss
Lista de
plantillas de
correo
mail.templates Conjunto de plantillas
que estarán configuradas
en la parte inferior de
este documento y
disponibles para ser
asignadas en los RFCs del
archivo "rfc.properties"
Cadena (nombres de
plantillas separados por
comas)
Ejemplo: t1, t2, t3
*Requerido
Correo-De [plantilla].mail.from Dirección de correo
desde donde será
enviado el correo
electrónico
Cadena
(correo electrónico)
*Requerido por
cada plantilla
que se desee
definir
Correo-Con
copia
[plantilla].mail.cc Dirección de correo a
donde será enviada una
copia del correo
electrónico
Cadena
(correo electrónico)
*Requerido por
cada plantilla
que se desee
definir
Correo-Con
copia oculta
[plantilla].mail.bcc Dirección de correo a
donde será enviada una
copia oculta del correo
electrónico
Cadena
(correo electrónico)
*Requerido por
cada plantilla
que se desee
definir
Correo-
Asunto
[plantilla].mail.subje
ct
Sí, sólo en caso de que
"activate.mail" se
encuentre "true", es
decir, cuando la
propiedad que activa el
envío de correos se
encuentre activada.
Cadena *Requerido por
cada plantilla
que se desee
definir
Correo-
Cuerpo
[plantilla].mail.body Cuerpo del correo
electrónico
Anexo 14.2 Cuerpo del
correo electrónico
*Requerido por
cada plantilla
que se desee
definir
Permite usar
SMTP con
TLS
mail.smtp.starttls.en
able
Permite configurar si el
SMTP usará o no TLS
Booleano (true/false) false
Pausa
después de
enviar un
mail.pause.between.
sends
Tiempo de espera
(milisegundos) después
de enviar un correo para
Entero Positivo
0
Página | 46
correo evitar que el sistema
envíe muchos correos en
poco tiempo
Tabla 4 Propiedades configurables del archivo pac_client.properties
Nombre Propiedad Descripción Tipo de dato Default
Dirección
del servidor
INSIGNA TCP
pac.tcp.server Dirección y el puerto
donde se encuentra
ubicado el servidor.
Cadena
Formato:
[dirección]#[puerto]
*Debe de ser
definido por el
usuario
Nombre de
usuario
INSIGNA
pac.tcp.username Nombre de usuario
registrado en INSIGNA que
será usado para
establecer la conexión al
servidor.
Cadena
(correspondiente al
usuario registrado en
INSIGNA)
*Debe de ser
definido por el
usuario
Modo debug pac.client.debug Agrega al log del conector
los comandos del servidor
que son ejecutados
Boolean (true/false) false
Tiempo de
vida de la
conexión
pac.tcp.ttl Tiempo de vida de la
conexión
*Periodo de tiempo
(ver al final del anexo
la especificación)
3600s
Tiempo de
espera
pac.tcp.timeout Tiempo de espera para
efectuar la conexión con
el servidor
*Periodo de tiempo
(ver al final del anexo
la especificación)
15s
Tabla 5 Propiedades configurables del archivo ws_client.properties
Nombre Propiedad Descripción Tipo de dato Default
Dirección del
WSDL del
Web Service
de INSIGNA
pac.ws.wsdl Dirección donde se
encuentra ubicado el
WSDL del servidor de
INSIGNA.
Cadena
Formato:
[dirección]/services?ws
dl
*https://ws.insig
na.mx/services?
wsdl
Nombre de
usuario
INSIGNA
pac.ws.username Nombre de usuario
registrado en INSIGNA que
será usado para
establecer la conexión al
Cadena
(correspondiente al
usuario registrado en
*Debe de ser
definido por el
usuario
Página | 47
servidor. INSIGNA)
*Periodo de tiempo: [#][unidad_tiempo]; donde # es cualquier número entero largo y unidad_tiempo es:
- "s" para segundos - "m" para minutos - "h" para horas - "d" para días - "w" para semanas
Ejemplos: 10s, 15m, 2d, 5w Nota: la mínima unidad de tiempo será de 1 segundo, algo menor a eso será causa de error en el tipo de dato de entrada. Para cualquiera de las unidades de tiempo el máximo valor numérico que podrá ser asignado será de 999999.
14.2 Cuerpo del correo electrónico
Esta cadena puede contener texto en general, además de que puede ser particionada con el carácter "\", esto para generar cuerpos de correo largos conservando su visibilidad en pantalla. Además de esto, pueden ser introducidos los caracteres especiales de cadenas (String Java 6 para mayor información) como en los siguientes casos: \t Insertar una tabulación \b Insertar un retroceso \n Insertar una nueva línea \r Insertar un regreso de carro \f Insertar un salto de página \’ Insertar una comilla simple \” Insertar comillas dobles \\ Insertar una diagonal invertida en el texto También se pueden añadir variables que corresponden al CFDI enviado en el correo para personalizar el mensaje. Los datos permitidos en las variables son los siguientes: - receptorName
- invoiceDate
La forma de introducirlos al cuerpo del correo es el siguiente:
<variable>receptorName</variable>
14.3 Formato CSV
Formato CSV para Retención Pago V1.0
Página | 48
1. Timbrado
[PRIMER RENGLÓN]
retencion,claveRetencion,folioInterno,descripción,fechaExpedición
[SEGUNDO RENGLÓN]
emisor,rfc,nombreDenominaciónRazónSocial,curp
[TERCER RENGLÓN]
receptor-nacional,rfc, nombreDenominaciónRazónSocial,curp
receptor-extranjero, nombreDenominaciónRazónSocial,numeroRegistroIdFiscal
[CUARTO RENGLÓN]
periodo,mesInicio,mesFin,añoEjercicioFiscal
[QUINTO RENGLÓN]
totales,montoTotalOperacion,montoTotalGravado,montoTotalExento,montoTotalRetenciones
[N RENGLONES POR IMPUESTO RETENIDO]
impuestoretenido,montoRetenido,tipoPagoRetención, baseImpuesto,tipoImpuesto
[SEPTIMO RENGLÓN]
complemento,enajenaciondeacciones,contratoIntermediación,ganancia,pérdida
complemento,operacionesconderivados,montoGananciaAcumulable,montoPerdidaDeducible
complemento,sectorfinanciero,idFideicomiso,nombreFideicomiso,descripciónFideicomiso
complemento,intereses,provieneDeSistemaFinanciero,interesesRetirados,correspondeAOperacionFinancieraDerivada,montoInterésNominal,montoInteresesReales,pérdida
complemento,arrendamientoenfideicomiso,pagoFiduciarioArrendador,remdimientosObtenidos,deduccionesArrendamiento,montoTotalRetención,montoResfiscalFIBRAS,montoOtrosConceptosDistribuidos,descripciónConceptosDistribuidos
complemento,premios,entidadFederativaPago,montoPago,montoGravado,montoTotalExento,observaciones
complemento,pagosaextranjeros,esBeneficiarioDirecto,paisDeResidencia,conceptoPagoNB,descripcionConceptoNB,rfc,Curp,razónSocialB,conceptoPagoB,descripcionConceptoB
complemento,planesderetiro,sistemaFinanciero,montoTotAportAnioInmAnterior,montoIntRealesDevengAniooInmAnt,huboRetirosAnioInmAntPer,montoTotRetiradoAnioInmAntPer,m
Página | 49
ontoTotExentRetiradoAnioInmAnt, montoTotExedenteAnioInmAnt, huboRetirosAnioInmAnt, montoTotRetiradoAnioInmAnt
complemento,intereseshipotecarios,creditoOtorgadoPorInstFinanciera,saldoInsoluto,proporciónDeducibleDelCrédito,montoTotaInteresesNominalesDevengados,montoTotaInteresesNominalesDevengadosPagados,montTotaInteresesRealesPagadosDeducibles,numContratoCréditoHipotecario
Reglas Generales:
a. El archivo del informe deberá ser creado con formato de texto simple, con extensión CSV
y contener un registro por renglón.
b. Cada uno de los atributos que conforman el informe deberá estar delimitado por el
carácter separador (por defecto la coma ",") y sin espacios entre ellos, debido a que éste
será utilizado como carácter de control en la formación del informe.
c. Opcionalmente, cada uno de los atributos que conforman el informe puede estar
contenido dentro de un carácter de escape al inicio y un carácter de escape al final del
atributo. Por defecto el carácter de escape es la doble coma ("). Esto permite que los
nombres de los atributos contengan el carácter separador. No se permite usar dicho
carácter de escape dentro de los atributos.
i. Ejemplo:
"descripción","nombreDenominaciónRazónSocial","rfc"
d. El primer registro de cada renglón, deberá contener una de las palabras clave (retencion,
emisor, receptor-nacional, receptor-extranjero, periodo, totales, impuestoretenido,
enajenaciondeacciones, operacionesconderivados, sectorfinanciero, intereses,
arrendamientoenfideicomiso, premios, planesderetiro, intereseshipotecarios) en
minúsculas.
e. Se expresará únicamente la información del dato sin expresar el atributo al que hace
referencia. Por ejemplo, si el rfc de la retención fuera "RFCC850101RFC" sólo se expresará
" RFCC850101RFC " y nunca "rfc RFCC850101RFC ".
f. En el caso de datos con valor Nulo (sin valor), simplemente se añade el carácter
separador, para indicar la presencia de un atributo o -si se prefiere- mediante los
caracteres de escape (por defecto las dobles comas "") sin ningún valor entre dichos
caracteres de escape.
g. Se puede incluir información relativa a parcialidades en los siguientes campos del primer
renglón:
folio_fiscal_original,serie_folio_fiscal_original,fecha_folio_fiscal_original,monto_folio_fisc
al_original
h. En el caso de existir varios conceptos en una factura, se deberá crear un registro por cada
concepto de manera consecutiva (un renglón por concepto). Ejemplo:
domiciliofiscal,calle,número_exterior,número_interior,colonia,localidad,referenci
a,municipio,estado,país,código_postal
Página | 50
concepto,cantidad,unidad,número_identificación,descripción,valor_unitario,import
e,cuenta_predial,complemento_concepto,pedimento_aduana,fecha_aduana,nombr
e_aduana
concepto,cantidad,unidad,número_identificación,descripción,valor_unitario,import
e,cuenta_predial,complemento_concepto,pedimento_aduana,fecha_aduana,nombr
e_aduana
impuesto,tasa,importe,tipo_impuesto,nombre_impuesto
i. En el caso de existir varias partes por concepto, se deberá crear un registro por cada
parte de manera consecutiva inmediatamente después del registro del concepto al que
pertenecen (un renglón por parte). Ejemplo:
domiciliofiscal,calle,número_exterior,número_interior,colonia,localidad,referenci
a,municipio,estado,país,código_postal
concepto,cantidad,unidad,número_identificación,descripción,valor_unitario,import
e,cuenta_predial,complemento_concepto,pedimento_aduana,nombre_aduana,fech
a_aduana
parte,cantidad,unidad,número_identificación,descripción,valor_unitario,importe,
pedimento_aduana,fecha_aduana,nombre_aduana
parte,cantidad,unidad,número_identificación,descripción,valor_unitario,importe,
pedimento_aduana,fecha_aduana,nombre_aduana
parte,cantidad,unidad,número_identificación,descripción,valor_unitario,importe,
pedimento_aduana,fecha_aduana,nombre_aduana
concepto,cantidad,unidad,número_identificación,descripción,valor_unitario,import
e,cuenta_predial,complemento_concepto,pedimento_aduana,nombre_aduana,fech
a_aduana
parte,cantidad,unidad,número_identificación,descripción,valor_unitario,importe,
pedimento_aduana,fecha_aduana,nombre_aduana
concepto,cantidad,unidad,número_identificación,descripción,valor_unitario,import
e,cuenta_predial,complemento_concepto,pedimento_aduana,nombre_aduana,fech
a_aduana
impuesto,tasa,importe,tipo_impuesto,nombre_impuesto
j. Los únicos registros que pueden ser múltiples son concepto, parte e impuesto.
k. Los registros parte y domiciliofiscal son los únicos registros opcionales.
Página | 51
l. Los registros correspondientes a fechas deberán tener el formato yyyy/MM/dd HH:mm:ss,
excepto aquellos de fecha_aduana, en donde el Anexo 20 indica que el formato es
yyyy/MM/dd.
m. En el registro emisor, receptor y domiciliofiscal, se podrá referir a México con las palabras
“Mex”, “MX” y “México" (sin validar mayúsculas o minúsculas). Cualquier palabra distinta
se considerará como un país extranjero (y si es un dato asociado a un RFC, se deberá
utilizar el RFC genérico para extranjeros: “XEXX010101000”).
n. El registro regimenesfiscales es la cabeza de una serie de regímenes que puede ir desde 1
régimen (al menos es requerido uno) hasta N regímenes.
o. En el registro regimenesfiscales, si se introduce un campo (vacío) será ignorado por el
sistema.
p. El atributo tipo_comprobante del registro factura sólo permite los siguientes valores en
minúsculas: ingreso, egreso o traslado.
q. El atributo tipo_impuesto del registro impuesto sólo permite los siguientes valores en
minúsculas: retencion o traslado.
r. El atributo nombre_impuesto del registro impuesto sólo permite los siguientes valores en
mayúsculas para los impuestos de tipo traslado: IVA o IEPS y los siguientes valores en
mayúsculas para los impuestos de tipo retención: IVA o ISR.
s. Se generará un archivo de texto por cada factura emitida, es decir, no se permitirá tener
varias facturas en un archivo XML/CSV.
t. El certificado y el número de certificado se registran en un archivo diferente al de la
factura en formato base64.
u. Cada uno de los conceptos registrados en la factura puede contener 0 o sólo 1 elemento
de los siguientes:
a. cuenta_predial
b. complemento_concepto
c. aduana (pedimento,fecha,nombre)
d. parte
En caso de no cumplir con esta regla se marcará como factura inválida y se reportará el error
en el archivo de log de la factura
2. Cancelación
[PRIMER RENGLÓN]
rfc,uuid
14.4 Comandos
El usuario interactúa con el Conector mediante el uso de comandos, los cuales son
introducidos a través de la línea de comandos. De esta manera el Conector recibe la señal de
inicio, detención, configuración, pruebas y ayuda. En caso de ocurrir un error el Conector
despliega la información del error.
Página | 52
Comando Acceso
rápido
Descripción
Run /r Ejecuta el programa. El programa no arrancará hasta que toda la
configuración esté correcta, un mensaje en pantalla mostrará el error
en éstos casos y el programa detendrá su ejecución.
Stop /s Detiene el Conector (una vez ejecutado el comando conector run) sin
necesidad de terminar el proceso directamente con el gestor de
aplicaciones del sistema operativo, lo cual podría ocasionar
problemáticas transaccionales en el Conector. En el momento en que se
desee terminar la ejecución del Conector se necesita abrir una ventana
Página | 53
de línea de comandos y ejecutar el comando ubicándose en la carpeta
del Conector en ejecución. La ventana despliega una serie de mensajes
donde se indicará lo sucedido con el proceso.
Pantalla 1:
Pantalla 2:
masterkey /m Permite configurar la llave maestra en el Conector. Al ejecutar este
comando se pedirán las contraseñas, tanto de las llaves privadas de las
empresas configuradas, teniendo disponibles 3 intentos para definir
cada una, así como también de las contraseñas correspondientes a la
cuenta y la configuración SSL de INSIGNA (si se utilizará la conexión
mediante TCP), las cuales tienen 3 intentos para definirse en conjunto,
y correos (este último sólo de ser necesario).
En la primera ejecución de este comando, posterior a la configuración
inicial del Conector, se requiere realizar una configuración inicial de la
llave maestra. Esto implica el configurar una nueva llave maestra
cumpliendo con las características definidas –al menos 10 caracteres y
Página | 54
hasta 50 caracteres como máximo, al menos un carácter alfabético y al
menos un dígito. Posteriormente pedirá las contraseñas mencionadas en
el párrafo anterior, sólo de ser necesarias por la configuración del
Conector.
Una vez que la llave maestra se encuentra configurada, el comando
conector masterkey puede volverse a ejecutar teniendo como resultado
el estatus de la configuración de llave maestra. Existen diversos
comportamientos del Conector dependiendo de la configuración y el
estatus actual del Conector, los cuales se detallan a continuación:
1. En caso de que falten contraseñas por configurar, el Conector
las pedirá y finalmente las guardará cifradas.
2. En caso de que no falten contraseñas, el Conector pondrá un
estatus (OK) de la configuración de llave maestra y al final
presentará 2 flujos alternos:
a. Primero preguntará por cambiar la llave maestra, se
requiere proporcionar tanto la llave maestra anterior
como la nueva. No hay necesidad de introducir las
contraseñas previamente configuradas.
b. En caso de no haber seleccionado la opción anterior, el
Conector preguntará si se desea definir una nueva llave
maestra, indicándonos que eso implicaría introducir de
nuevo todas las contraseñas que el Conector requiere. No
se requiere proporcionar la llave maestra anterior.
En caso de tener 3 intentos fallidos de introducción de cualquier
contraseña el Conector detendrá su ejecución.
Página | 55
test /t Permite realizar una comprobación de los diversos módulos del Conector necesarios para la correcta ejecución del Conector.
Página | 56
El comando comprueba:
Lectura de propiedades de Conector Periodicidad de Timbrado Apagado del Conector (puerto) Entrada/Salida de CFDIs Configuración comando OpenSSL y descifrado de llave privada de
prueba o En esta sección se revisa el correcto funcionamiento del
comando OpenSSL mediante el descifrado de una llave privada que sirve solamente para efectos de ésta prueba.
Validación de Lista de Emisores de RFCs10 Configuración de Plantillas PDF (Carga de archivos) Configuración de Certificados SAT (Validación del directorio) Configuración de Certificados SAT (Carga de certificados) Configuración de Llaves Privadas SAT (Validación del directorio) Configuración de Llaves Privadas SAT (Carga de archivos) Estado de la llave maestra
o Descifrado de contraseña PAC o Descifrado de contraseña SSL o Descifrado de contraseñas de las llaves privadas para los
RFCs o Descifrado de contraseña de correos (sólo cuando el
10 La validación se realiza sobre la lista de RFCs escritos en el campo rfc.emisor.list, en caso de existir algún RFC inválido el sistema marcara un error indicando los RFCs inválidos; por el contrario, en caso de no existir ningún RFC configurado la validación resultará exitosa.
Página | 57
envío de correos esté activo y el servidor con seguridad habilitada)
Configuración de RFCs Configuración de Correos electrónicos Parámetros CSV Revisión de directorios (permisos de lectura y escritura) Conexión TCP de INSIGNA (cliente-servidor) / Conexión Web
Service de INSIGNA (cliente-servidor) help /h Muestra la descripción de los comandos del Conector.
14.5 Extensión de Criptografía en Java
Las librerías de criptografía de Java por defecto no soportan llaves de más de 128 bits. Para
utilizar una llave SSL de INSIGNA (de 1024 bits) se necesita reemplazar un par de archivos en
la instalación de Java (ver sección 4.1, paso 3).
Los archivos se encuentran disponibles en el zip del Conector:
O bien pueden descargarse en las siguientes rutas:
Java 8 (archivo jce_policy-8.zip) http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
Página | 58
Antes de proseguir es necesario revisar el valor de la variable JAVA_HOME (ver punto #3 de la
sección 4.1).
A continuación, se toman los archivos local_policy.jar y US_export_policy.jar (contenidos en
el archivo zip descargado) y se colocan en el directorio definido en %JAVA_HOME%/lib/
security:
Hecho este procedimiento se podrá utilizar sin problemas la conexión SSL con INSIGNA. Se
recomienda hacer esta sustitución de archivos con el Conector apagado.
16. MailSender
El MailSender es un artefacto que tiene como función enviar CFDIs por correo electrónico de
manera independiente del funcionamiento del conector, sin embargo, el mailsender toma
como base el sistema de archivos del conector.
El MailSender está alojado en el directorio de instalación del conector y se encuentra ubicado
en la carpeta conector/mail-sender/conector_mail_sender.
Página | 59
Al igual que el conector, el MailSender tiene un sistema de carpetas definido para el
procesamiento de archivos ubicado en la carpeta mailResend:
cfdiNotSent: Carpeta que contiene los archivos que no fueron posibles de enviar
cfdiSent: Carpeta que contiene los archivos enviados con éxito
cfdiToSend: Carpeta Auxiliar para agregar los archivos que se desean enviar.
configuration: Carpeta donde se encuentran los archivos necesarios para la
configuración del artefacto.
El MailSender genera un archivo de logueo ubicado en la carpeta de instalación llamado
"SendMail_log" en el cual se encuentra el registro del procesamiento de archivos y es útil
cuando es necesario identificar las razones por las cuales fallen los envíos.
Página | 60
15.1 Configuración
Previo a la ejecución del MailSender es necesario definir dos variables de sistema:
MAIL_SENDER_HOME
CONECTOR_HOME
El archivo de configuración del MailSender se encuentra en mailResend/configuration/
mail.properties y sus propiedades se enlistan a continuación:
Propiedad Descripción Tipo de
dato
Default
signed.cfdis.directory Carpeta de donde se leen
los archivos que van a ser
enviados por correo. (El
directorio base es la
carpeta de instalación del
conector, si se desea que el
mail sender tome lo
archivos a enviar de la
carpeta de timbrados del
conector es necesario
asignarle a esta propiedad
el valor
“/default/timbradas”)
Cadena N/A
mail.time.between.send Tiempo entre envío de
correos en milisegundos
Número N/A
number.connection.retries Número máximo de
intentos con el servidor de
conexiones antes de
Número 10
Página | 61
detener el envío.
mail.pdf.required Bandera para indicar si el
pdf será necesario para
enviar el correo.
Booleano false
mail.to.source.file.type Tipo de archive del cual se
lee el destinario del correo
(1=XML,2=TXT)
Número 1
mail.host URL del servidor de correos Cadena N/A
mail.port Puerto del servidor de correos
Número N/A
mail.userName Usuario del servidor de correos
Cadena N/A
mail.smtp.starttls.enable Bandera para indicar si se permite usar SMTP con TLS
Booleano false
mail.from “from” para la plantilla del correo
Cadena N/A
mail.cc “cc” para la plantilla del correo
Cadena N/A
mail.bcc “bcc” para la plantilla del correo
Cadena N/A
mail.subject Asunto para la plantilla del correo
Cadena N/A
mail.body Cuerpo para la plantilla del correo
Cadena N/A
mail.date.format Formato de fecha usado en los correos
Cadena dd/mm/yyyy
HH:mm:ss
Configuración del destinatario
Para configurar el destinario se tiene que agregar al nodo Receptor del CFDI un atributo
llamado correoElectronico que NO aparecerá en el CFDI timbrado, ya que su uso es solamente
para el envío del correo.
15.2 Ejecución
Para iniciar el MailSender es necesario ejecutar el archivo "mail-sender" que se encuentra en
la carpeta bin dentro de la instalación del MailSender:
Página | 62
1. Al iniciar el MailSender se le pedirá la contraseña del servidor de correos y se
procederá a hacer una prueba de conexión con los datos proporcionados.
a. En caso de no ingresar correctamente la contraseña se mostrará un mensaje
indicando que hubo un error y se detendrá el mail sender.
2. Se procesarán los archivos encontrados dentro de la carpeta "signed.cfdis.directory" y
se mostrará información acerca de los tipos de archivos encontrados.
3. Se leen los archivos "base" (XML sin sello o TXT) en donde se encuentran las
direcciones de correos a los cuales se enviarán los CFDIs.
a. Los nombres de losarchivos XML del cfdi timbrado y PDF deberán contener al
inicio el nombre del archivo base, por ejemplo: si el archivo base se llama
“DST_3030.txt” entonces el cfdi timbrado deberá llamarse
“DST_3030_LOQUESEA.xml”.
4. Se buscan los archivos requeridos para el envió: XML del CFDI timbrado y PDF(si se
estableció como requerido en la configuración)
a. Si la propiedad “mail.pdf.required” tiene un valor “true” y no se encuentra el
pdf del CFDI que se está procesando, él envió no se realizará y los archivos
serán movidos a la carpeta cfdiNotSent.
5. Se hace una prueba de conexión del servidor de correos.
a. Si el servidor de correos no responde, el mail sender intentará conectarse el
número de veces definido en “number.connection.retries” usando el tiempo
definido en “mail.time.between.send” entre cada intento. Si se alcanza el
número máximo de intentos de conexión sin éxito, el mail sender se detendrá.
6. Se envían los CFDIS a los destinatarios.
a. En caso de que la dirección de correo del destinario no sea una dirección
válida, él envió no se realizará y los archivos serán movidos a la carpeta
cfdiNotSent.
Página | 63
b. Si al momento del envió no se tiene respuesta por parte del servidor de
correos, se procederá a esperar el tiempo definido en
“mail.time.between.send” y se reintentará enviar de nuevo el correo, hasta
que sea posible enviarlo.
7. Se mueven los archivos involucrados (Archivo base, XML sellado y PDF) a las carpetas
correspondientes.
a. Los archivos enviados correctamente se moverán a la carpeta cfdiSent
b. Los archivos que no fueron enviados por algún error se moverán a la carpeta
cfdiNotSent. La razón del problema con el envío se escribirá en el archivo
“SendMail_log”
8. Se espera el tiempo establecido (mail.time.between.send) entre envíos y se reinicia el
proceso de envío.
15.3 Errores
Como se mencionó anteriormente en el archivo SendMail_log se encuentra detallado las
causas de problemas con envíos de correos, a continuación se mencionan algunos de los
problemas más comunes y su posible solución:
Mensaje de error Causa Solución
No se pudo localizar el
servidor de correos, revise la
url
Alguno de los datos de la
configuración del servidor de
correos es inválido.
Verificar que las propiedades
mail.host, mail.port,
mail.userName y
mal.smtp.starttls.enable
tenga los valores correctos
para realizar la conexión
Error a leer la carpeta El valor de la propiedad
signed.cfdis.directory no es
válido
Verificar que exista la
dirección especificada en signed.cfdis.directory y que el
mail_sender tenga permisos de
lectura para dicha carpeta.
Ocurrió un error al leer el
archivo:
No se encontró el archivo
mencionado.
El archivo mencionado no
tiene un formato válido o
está corrupto.
Verificar que el archivo
mencionado existe en la
carpeta definida en
“signed.cfdis.directory”
No se encontró el archivo:,
No se encontraron los
No se encontraron los
archivos requeridos para el
Verificar que se encuentren
los archivos requeridos para
Página | 64
archivos: envío el envío XML timbrado y PDF
en caso de que se haya
definido como requerido.
Verificar que el nombre de
los archivos inicia con el
nombre del archivo base.
Por favor, verifique la
escritura de emails.
Las direcciones de envío no
son válidas
Verificar que esté bien
escrita la dirección de correo
electrónica.
17. Glosario
CFDI: Comprobante Fiscal Digital por Internet.
CSV: Tipo de documento en formato abierto sencillo para representar datos en forma de tabla.
FIEL: Firma Electrónica Avanzada.
CSD: Certificado de Sello Digital.
IP: Etiqueta numérica que identifica, de manera lógica y jerárquica, a una interfaz de un dispositivo.
PAC: Proveedor Autorizado de Certificación.
PDF: Formato de documento portátil.
SMTP: Simple Mail Transfer Protocol.
TCP: Transmission Control Protocol.
Timbrar: Procedimiento que legaliza los documentos necesarios para respaldar las diferentes operaciones que los contribuyentes realizan al llevar a cabo sus actividades económicas.
Web Service: Servicio que permite intercambiar información entre aplicaciones
mediante el uso de la red o internet.
XML: Extensible Markup Language.