Sifei Signature

Canal público / Signature

El presente documento es el Manual Técnico para el uso e integración de la biblioteca SIFEI Signature versión 3.3 a proyectos bajo plataforma .Net, además de ofrecer la referencia de la biblioteca y ejemplos para emitir, sellar, timbrar y cancelar CFDIs.

Compartir en redes sociales

Compartir enlace

Usar vinculo permanente para compartir en redes sociales

Compartir con un amigo

Por favor iniciar sesión para enviar esto document por correo!

Incrustar en tu sitio web

Seleccionar página de inicio

1. Código XX - X9.9 - XX - XX - 99 Versión 1.0 Publicación dd/mmm/aaaa Manual Técnico de SIFEI Signature CFDI v3.3 octubre 2017

16. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 8 de 7 0 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Imagen 8 Agregar referencia al proyecto Se debe seleccionar la biblioteca “ SifeiSignature3_3.dll ” y agregar. Imagen 9 Carpeta donde e stá S ifeiSignature

12. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 4 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 3. Primeros pasos ( getting started ) El primer paso es crear nuestro proyecto, el cual para este ejemplo será de tipo WinForms : Imagen 1 Creación de proyecto .Net Framework 3.5 Lo cual debe generar algo similar a la siguiente imagen: Imagen 2 Proyecto recién creado

22. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 14 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 3.4.3 Ejecutar el script Imagen 22 Procedimiento para la ejecución del script , comenzando por el listado de la base de d atos, la ejecución del script y finalizando por la comproba ción de su creación

15. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 7 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Imagen 6 Modificando la propiedad "Copiar al directorio de Salida" Imagen 7 Modificando la propiedad "Copiar al directorio de salida" a "Copiar siempre ” 3.2 Agregar l a biblioteca al proyecto El método para agregar una DLL a un proyecto es a través de Referencias , para agregar SIFEI Signature primero se debe desplegar el menú secundario en el proyecto y seleccionar en “agregar referencia” o “ add reference ” ( si Visual Studio está en idioma inglés ) .

14. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 6 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Imagen 4 Inclusión de carpeta SAT en el proyecto Imagen 5 Inclusión del resto de bibliotecas 3.1.3 Configurar los archivos para ser copia dos en el directorio de salida A pesar de haber incluido los recursos al proyecto, estos no son copiados al momento de compilación, por ello se deben de seleccionar e indicar la propiedad “Copiar al directorio de Salida” el valor “Copiar siempre” , e sto deb e hacerse para los XSLT , XSD y openssl.

21. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 13 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Imagen 20 Cambiando variable Max_allowed_packet temporalmente (este efecto no cambia la sesi ó n actual y dura solo m ientras el servicio est é activo - hasta que el servicio sea reiniciado - ) Para hacerlo de forma permanente se debe cambiar el archivo de configuración de Maria DB : Imagen 21 Archivo de configuración del servidor de MariaDB , cambio de 1mb a 16 MB (se debe reiniciar el servicio)

18. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 10 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx • Seleccionar en Archivo de configuración de aplicación y dar clic en “ Agregar ” . Imagen 12 Seleccionado Archivo de Configuración de Aplicación Imagen 13 Archivo de configuración limpio Copiar el system.servicemodel . Para resultar en algo similar a como se muestra en la Imagen 14 .

13. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 5 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 3.1 Agregar recursos Es necesario que los recursos estén en la misma carpeta que el programa (ejecutable del proyecto), para hacerlo debemos seguir los siguientes pasos: 1. Copiar la carpeta SAT y dll en la misma carpeta que el proyecto 2. Incluir la carpeta SAT y dll en el proyecto 3. Seleccionar todos los archivos y configurar para que sean copiados en el directorio de salida. 3.1.1 C opiar la carpeta SAT y las librerías Imagen 3 Copiando los recursos al proyecto 3.1.2 Incluir la carpeta SAT y dll en el proyecto Por defe cto los archivos no serán visibles, así que se debe presionar el icono “ Mostrar todos los archivos” y después seleccionar Imagen 1 la carpeta SAT ( Imagen 4 ) y los dll para ser incluidos en el proyecto ( Imagen 5 ) .

2. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página II de viii octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Control de Versiones Nombre No. Versión Modificaciones Fecha Daniel Jesús Hern ández Francisco 1.0 Generación del documento 19/oct/2017 Control de Revisiones Nombre No. Versión Modificaciones Fecha Mary Quiahua Iztacua 1.0 Revisión técnica del documento. 19/oct/2017 Control de Autorizaciones Nombre No. Versión Modificaciones Fecha Asley Alberto Cristales Pavón 1.0 Revisión, correcciones menores técnicas y de redacción y estilo, y autorización de la publicación. 3 0 /oct/2017

20. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 12 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 3.4.2 Cambiar max_allowed_packet (Opcional) Este paso es opcional y debe realizarse cuando la variable max_allowed_packet sea menor a 8 mb y aparezca el siguiente error “ Error: 2006 ” , ya que el script cuenta con sentencias que supera n este límite de tamaño de paquete. Imagen 17 Error 2006 MySQL server has gone away Imagen 18 Variable max_allowed_packet = 1MB: causará “ E rror 2006: MySQL server has gone away ” La forma más fácil y temporal para hacer el cambio es ejecutar el comando inferior, mismo que tendrá efecto a partir de la siguiente conexión (no la actual) y solo hasta que el servicio sea reiniciado : Imagen 19 Comando para cambiar de forma global el límite que define max_allowed_packet a 32 MB MariaDb> set global max_allowed_packet=32*1024*1024;

30. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 22 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Imagen 33 Comprobante Sellado 4.13 Timbrar el comprobante Es posible timbrar un comprobante a través del método timbraComprobante() el cual retorna un objeto tipo ReturnTimbre , mismo que sirve para saber si el comprobante fue timbrado y recuperarlo , tal y com o se ve en el siguiente ejemplo: 01 02 03 04 05 06 07 08 09 10 11 //timbramos el comprobante ReturnTimbre rtnTimbre = cfdi33.timbraComprobante( "JGE080430LN8" , "0e84ec92" , "A" , "VPjftCMG1beV+/wkNWc8lkaFEtxTrC/rt20oZgbnl30S6SD6kPAmLozt7CMkqzZK3L7+mlxZtXYDvu9oauJ1Wh EWqSieNh96KCdNJdIXezM=" , rtnCfdi.XML, CFDI33 . tipoTimbrado .Pruebas); //verificamos que haya sido timbrado: if (rtnTimbre.IsT imbrado) { //escrib i mos el cfdi timbrado rtnTimbre.Xml.Save( @"C: \ Workspace \ SifeiSignature \ cfdi_timbrado.xml" ); Al guardar el CFDI contendrá el nodo TimbreFis calDigital (líneas 25 a 29 marcado en amarillo):

78. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 70 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 6. Información de Contacto con SIFEI C ENTRO DE S OPORTE T ÉCNICO SIFEI Acceso a recursos de Soporte Técnico de los productos y servicios de SIFEI, Preguntas Frecuentes, Manuales de Usuario, Manuales Técnicos, Notas Técnicas, entre otros . Dirección electrónica Centro de Soporte Técnico SIFEI T ELÉFONOS DE C ONTACTO Oriz aba, Ver. +52 (272) 726 6999 CDMX (55) 4624 0146 Puebla, Pue. (222) 211 6156 con 10 líneas A TENCIÓN A I NCIDENTES La atención a incidentes se realizará mediante una herramienta de gestión de incidentes y la comunicación se realizará mediante correo electrónico. Correo Electrónico helpdesk@ sifei.com.mx H ORARIO DE ATENCIÓN El horario de atención a clientes y de S oporte T écnico para para preguntas, dudas o problemas de la aplicación es: Lunes a viernes De 09:00 a 19:00 hrs. P ÁGINAS OFICIALES DE SIFEI Sitio web http://www.sifei.com.mx/ Facebook http://www.facebook.com/sifeimexico Twitter http://twitter.com/#!/SIFEIMexico YouTube https://www.youtube.com/channel/UCDSLHrFOg2tGvG3AruHNmaw LinkedIn https://www.l inkedin.com/company/18265037/ U BICACIÓN DE O FICINA M ATRIZ Primera P rivada de O riente 17 No. 32 Col. Centro , Orizaba, Veracruz , México CP 94300 <Fin del Documento>

77. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 69 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Código Error CFDI33183 El valor del campo TotalImpuestosTrasladados no es igual a la suma de los importes registrados en el elemento hijo Traslado . CFDI33184 Debe existir el campo TotalImpuestosRetenidos . CFDI33185 El campo Impuesto no contiene un valor del catálogo c_Impuesto . CFDI33186 Debe haber sólo un registro por cada tipo de impuesto retenido. CFDI33187 Debe existir el campo TotalImpuestosRetenidos . CFDI33188 El valor del campo Importe correspondiente a Retención debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33189 El campo Importe correspondiente a Retención no es igual a la suma de los importes de los impuestos retenidos registrados en los conceptos donde el impuesto sea igual al campo Impuesto de este elemento. CFDI33190 Debe existir el campo TotalImpuestosTrasladados . CFDI33191 El campo Impuesto no contiene un valor del catálogo c_Impuesto . CFDI33192 Debe haber sólo un registro con la misma combinación de impuesto, factor y tasa por cada traslado. CFDI33193 El valor seleccionado debe corresponder a un valor del catálogo donde la columna impuesto corresponda con el campo impuesto y la columna factor corresponda con el campo TipoFactor . CFDI33194 El valor del campo Importe correspondiente a Traslado debe ten er hasta la cantidad de decimales que soporte la moneda. CFDI33195 El campo Importe correspondiente a Traslado no es igual a la suma de los importes de los impuestos trasladados registrados en los conceptos donde el impuesto del concepto sea igual al ca mpo impuesto de este elemento y la TasaOCuota del concepto sea igual al campo TasaOCuota de este elemento. CFDI33196 Error no identificado.

31. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 23 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Imagen 34 Comprobante timbrado 4.14 Crear Complementos Con la clase Complemento podemos crear varios tipos de complemento. 01 02 03 04 05 //Instanciamos la clase complemento , pasándole el string de conexión . Complemento complCfdi = new Complemento ( "Server=localhost;Port=3306;Database= catálogo ssat;Uid=root;Pwd=123456;" , fechaCfdi); 4.15 Definir complemento Comercio Exterior 01 02 03 04 05 06 07 08 09 10 11 //=================>>>>>>>>>>> Inclusión de complemento CCE1.1 complCfdi.Cce11_Define_ComercioExterior( "" , //pMotivoTrasl "2" , //pTipoOperacion "A1" , //pClavePedim 0, //pCertifOrigen null , //pNumCertifOrigen null , //pNumExportadorConf "FOB" , //pIncoterm 0, //pSubdivision null , //pObservaciones 18.845100m, //pTipoCambioUSD 795.96m); //pTotalUSD

19. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 11 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Imagen 14 Archivo de configuración con la configuración necesaria para SIFEI Signature 3.4 Crear base de datos Dentro de los recurso s ofrecidos por SIFEI Signature se incluye un script con los catálogos del SAT listo para ser usado en MySQL o MariaDB , el nombre del script es “ bd_ catálogo ssat.sql “. Existe n varias formas de ejecutar el script, la forma que se cubrirá en este apartado es a través de la herramienta de línea de comando de MySQL suponiendo que el gestor está instalado de forma local y que la carpeta bin de MariaDB está definida en las variables de entorno. Además, la cuenta de MariaDB debe tener privilegios para crear base de datos y tablas . 3.4.1 Comandos usados para crear la base de datos Imagen 15 Ejecuta el script para la creación de la base de datos Imagen 16 Consulta para mostrar el valor de max _allowed_packet Nota: Para ver los requsitos ir al apartado requerimientos. Shell > mysql – U root – p catalogosat< bd_ catalogossat.sql MariaDb> show variables where variable_name='max_allowed_packet';

7. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página VII de viii octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.13.3 Clase PagosPago ................................ ................................ ................................ ................................ ................................ ............... 63 5.13.4 Clase PagosPagoDoctoRelacionado ................................ ................................ ................................ ................................ ..... 64 5.13.5 Clase PagosPagoImpuestos ................................ ................................ ................................ ................................ ....................... 64 5.13.6 Clase PagosPagoImpuestosRetencion ................................ ................................ ................................ ................................ 64 5.13.7 Clase PagosPagoImpuestosTraslado ................................ ................................ ................................ ................................ ... 64 5.14 Referencia del Namespace SifeiSignature3_3.Complementos.Iedu10 ................................ ................................ 65 5.14.1 Clases ................................ ................................ ................................ ................................ ................................ ................................ ..... 65 5.14.2 Enumeración instEducativasNivelEducativo ................................ ................................ ................................ .............. 65 5.14.3 Clase instEducativas ................................ ................................ ................................ ................................ ................................ .. 65 5.15 Codigos de respuesta de cancelación. ................................ ................................ ................................ ................................ .......... 65 5.16 Códigos de Error de la Matriz de validaciones para CFDI versión 3.3 ................................ ................................ ............. 65 6. Información de Contacto con SIFEI ................................ ................................ ................................ ................................ ............................. 70

26. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 18 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.7 Agregar Información aduanera a un concepto Cuando se ha definido un concepto al CFDI , es posible agregar “ información aduanera”, para ello es necesario indicar el índice (posición) del concepto y pa sar los parámetros al método addInformacionAduaneraToConcepto(); 01 02 03 04 05 06 // Agregando Información aduanera al concepto con posición indexConc, cfdi33.addInformacionAduaneraToConcepto( indexConc, //pIndexConc seria= 1 "15 43 3740 6000564" //pNumPedimento ); Modifica el nodo concepto apuntado por @ indexConc agregándole como hijo el nodo información Aduanera ( en amarillo): Imagen 29 InformacionAduanera agregada a conceptos 4.8 Agregar un impuesto traslado a un concepto Cuando se ha definido un concepto al CFDi, es posible indicar los impuestos traslados por medio del método addImpTrasladoToConcepto () . El concepto se indica con el parámetro @ indexConc . 01 02 03 04 05 06 // agregando impuesto traslado al concepto cfdi33.addImpTrasladoToConcepto(indexConc, //pIndexConc 2008.29m, //pBase "002" , //pImpuesto "Tasa" , //pTipoFactor 0.16m, //pTasaOCuota 321.33m); //pImporte Agrega el traslado ( en azul ) al concepto: Imagen 30 Resultado de agregar un impuesto traslado al concepto 4.9 Agrega r total impuestos de comprobante Definiendo el total impuestos con el método setTotalImpuestos() .

29. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 21 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 01 02 03 04 05 06 07 08 //. //.codigo //. if (rtnCfdi.IsXMLCreated) { } else { MessageBox .Show( "Error al sellar el CFDI: " +rtnCfdi.ErrorDetalle); } Para más saber sobre los valores que contiene la propiedad rtnCfdi.ErrorDetalle ver Códigos de Error de la Matriz de validaciones para CFDI versión 3.3 . 4.12 Sellar el comprobante Es posible sellar un comprobante a través d el método sellaComprobante() el cual retorna un objeto tipo ReturnXML , mismo que nos sirve para saber si el comprobante fue sellado y recuperarlo , el código siguiente muestra como sellar el comprobante. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 //sellamos el comprobante pasándole el path del certificado y de la llave ReturnXML rtnCfdi = cfdi33.sellaComprobante(rtnCfdi.XML, @"C: \ Workspace \ DatosBuzonMariaDB \ Cert \ DEMO20170725123153.cer" , @"C: \ Workspace \ DatosBuzonMariaDB \ Cert \ DEMO20170725123153.key" , "12345678a" , false , true ); //comprobamos que se halla sellado if (rtnCfdi.EstaSellado) { //escri bi mos el Comprobante sellado: rtnC fdi.XML.Save( @"C: \ Workspace \ SifeiSignature \ CfdiGeneradosTest \ cfdi_sellado.xml" ); } Comprobante sellado atributo sello (línea 5 , marcado en pú rpura ) :

9. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 1 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 1. Generalidades 1.1 Introducción El presente documento es el Manual Técnico para el uso e integración de la biblioteca SIFEI Signature versión 3.3 a proyectos bajo plataforma .Net, además de ofrecer la referencia de la biblioteca y ejemplos para emitir, sellar, timbrar y cancelar CFDIs. Solución Integral de Facturación Electrónica e Informática SIFEI S. A. de C. V. es un Proveedor Autorizado de Certificación de CFDI (PCCFDI antes PAC), con número de autorización 58355 y cumplimos con los requerimientos f uncionales, servicios generales y niveles de servicio (SLA) exigidos por el SAT . 1.2 Objetivo Orientar a usuario de la biblioteca SIFEI Signature para e mitir y certificar CFDIs v á lidos siguiendo las normas establecidas para tipo de documento fiscal. 1.3 Alcance Emitir CFDIs en versión 3.3. La certificación se realiza con base al Anexo 20 y a la Matriz de Validaciones de los CFDI y complementos. Entrega respuestas so bre los códigos de error de la Matriz de Validaciones vigente . 1.4 Requerimientos Mínimos Visual Studio 201 2 o superior Tener instalado como mínimo .Net Framework 3 . 5 Tener in stalado MariaD B o tener acceso remoto a este gestor o Tener las credenciales de un usuario con privi legios para crear base de datos o Contar con un cliente para el gestor (para l a creación de la base de datos) o El servicio MariaD B debe tener la variable “ max_allowed_packet ” esta blecida para paquetes mayores a 8 MB . 1.5 Términos y Definiciones A crónimo Definición CFDI Comprobante Fiscal Digital por Internet NDA Non - Disclosure Agreement ̧ documento de Acuerdo de No Divulgación PAC Proveedor Autorizado de Certificación PCCFDI Proveedor de Certificación de Comprobantes Fiscales Digitales por Internet (antes PAC) PCECFDI Proveedor de Certificación de Expedición de Comprobantes Fiscales Digitales por Internet, que aplica a los contribuyentes que expiden CFDIs al ser Adquirientes de Bienes y Servicios, y Sector Primario (simplificado “Sector Pri mario”) SAT Servicio de Administración Tributaria SIFEI Solución Integral de Facturación Electrónica e Informática SIFEI S. A. de C. V. SLA Service Level Agreement , Acuerdo de Niveles de Servicios

25. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 17 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.5 Agrega r el Receptor Para agregar el Receptor del CFDI se debe invocar al método setReceptor() . 01 02 03 04 05 06 07 // Estableciendo el Receptor cfdi33.setReceptor( "CTR801211M15" , //pRfc "MARGARITA RODRIGUEZ TELLEZ" , //pNombre null , //pResidenciaFiscal null , //pNumRegIdTrib "G01" //pUsoCfdi ); El nodo agregado es (ver naranja, línea 27) , el cual tiene los atributos con los valores que se les paso al método setR eceptor() : Imagen 27 Nodo Receptor agregado 4.6 Agrega r un concepto Para agregar un concepto se debe invocar al método addConcepto() el cual devuelve un entero con el índice del concepto que se creó , mismo que servirá para en posteriores métodos para agregar información adicional al concepto (como impuestos, información aduanera , etc. ) . El parámetro @ indexConc es de tipo entero y recibe el índice del nodo concepto . 01 02 03 04 05 06 07 08 09 10 indexConc = cfdi33.addConcepto( "01010101" , //pCveProdServ null , //pNoIdentif 8m, //pCantidad "H87" , //pCveUnidad "PZA" , //pUnidad "CALCIFLAVON (Tablets)" , //pDescripcion 278.60m, //pValorUnit 2228.8 0m, //pImporte 220.51m, //pDescuento null ); //pNumCuentaPredial El nodo agregado es concepto (en morado) con los atributos que se le paso al método : Imagen 28 Nodo Concepto agregado

11. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 3 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx • Cancela CFDI Además, se pueden emitir facturas con complementos: • Impuestos Locales • Instituciones Educativas Privadas 2. Convenciones de documentación • Los tipos de clase, clase, y enumeraciones están en color azul claro . • Los tipos de datos primitivos están en azul marino . • Cuando en la descripción de un método se haga referencia a un parámetro se le antepondrá el símbolo ‘ @ ’ al nombre del parámetro para su fácil reconocimiento. • Los comentarios en las firmas de métodos y constructores van en color verde . • Los métodos que alteren un nodo, en la sección descripció n existirá el apartado XPath con la ruta del o los nodos modificados. • Un nodo de tipo any , es un nodo de cualquier tipo, es decir, no hay restricciones como Addenda . • A los parámetros que son opcionales (definidos así por el SAT ), se les coloca el operador de nulificación ‘ ? ’ para pasar null a tipos de datos primitivos como decimal. Ejemplo: “ decimal? d escuento “ donde descuento es un atributo opcional y el comprobante no tiene un descuento se debe pasar null . • Cada ejemplo estará encerrado en un rect á ngulo. • Para re presentar los comandos, se usará el nombre de la herramienta de l í nea de comandos seguido del simbolo mayor que “ > ”, por ejemplo, si se está en la l í nea de comandos de Windows : ” shell> ”, si se est á dentro de MariaD B “ MariaDB > ”, esto para dar un contexto expl í cito de donde debe ejecutarse el comando. 2.1 Atributos opcionales Los atributos opcionales están representados con el operador “ ? ”, para el caso de las cadenas si se pasa como argumento null , o "" – cadena vacía - no se incluirá en el comprobante dicho atributo. Para el caso de los decimales, si se pasa null , tampoco se incluirá dicho atributo.

23. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 15 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4. Ejemplos A continuación, se presentan los ejemplos para emitir , sellar, timbrar y cancelar CFDIs además de recuperar timbres. Para mayor detalle sobre las clases, métodos y enumeraciones ver la sección 5 Referencia . 4.1 Instanciar un Objeto tipo CFDI33 La clase CFDI33 es la cl ase principal para comenzar a emitir CFDIs, en este ejemplo se le pasa como primer argumento la cadena de conexión a la base de datos Catálogo ssat , el resto de los argumentos son los atributos que poseerá el CFDI . 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 cfdi33 = new CFDI33 ( “ Server=localhost;Port=33 06;Database= catálogo ssat;Uid=root;pwd=123456;” , //connString "DEMO" , //pSerie "6" , //pFolio DateTime .Now, //pFecha "02" , //pFormaPago "30 DIAS" , //pCondPago 2228.80m, //pSubtotal 220.51m, //pDescue nto "MXN" , //pMoneda 1m, //pTipoCambio 2329.62m, //pTotal "I" , //pTipoCompr "PUE" , //pMetodoPago "76246" , //pLugarEped null , //pConfirmacion @"C: \ Workspace \ DatosBuzonMariaDB \ Cert \ DEMO20170725123153.cer” //rutaCert ); Lo cual produce en el XML lo siguiente: Imagen 23 Atributos de CFDI agregados

17. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 9 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Ya marcada la biblioteca, se debe dar clic en Aceptar – o en O k si VS está en idioma inglé s - . Imagen 10 Referencia de biblioteca agregada 3.3 Agregar información del servicio web Además, es necesario el siguiente nodo “ system.serviceModel ” al archivo de configuración App.config (como hijo de configuration ). Imagen 11 Configuración de aplicación requerida para SIFEI Signature Para hacerlo se debe crear el archivo de configuración (si no existe): • Seleccionar el proyecto (no a la solución) • Dar clic secundario y selecciona “ Agregar ” - > “ nuevo elemento ” Se recomienda que la ruta sea relativa al proyecto, es decir, que esté dentro de la carpeta del proyecto, esto en caso de que copie el área de trabajo. SifeiSignature3_3.dll tiene dependencias sobre otras librerías y recursos para funcionar, es por ello que los demás archivos dll y carpeta SAT deben estar localizados en la misma carpeta y nivel que SifeiSignature3_3.dll al momento de ejecución y como se muestra en la imagen < system.serviceModel > < bindings > < basicHttpBinding > < binding name = " SIFEIPortBinding " /> </ basicHttpBinding > </ bindings > < client > < endpoint address = " http://192.168.16.251:8080/DESKTOP33/SIFEI " binding = " basicHttpBinding " bindingConfiguration = " SIFEIPortBinding " contract = " srvSifeiTimbrador.SIFEI " name = " SIFEIPort " /> </ client > </ system.serviceModel >

24. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 16 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.2 Establecer CfdiRelacio n a dos Utilizando la instancia de CFDI33 anterior invocamos el método “ setCfdirelacionados() “ y le pasamos el tipo de relación y el UUID del CFDI Relacionado , lo cual genera un primer CFDI Relacionado, con el UUID indicado. 01 02 03 04 //Estableciendo el nodo CfdiRelacionados cfdi33.setCfdirelacionados( "04" , //pTipoRelacion "2214C542 - 2FE6 - 45C5 - BDA0 - 4C8EFF94CCFE" //pUUID ); Lo cual produce el nodo CfdiRelacionados y un nodo CfdiRelacionado (ya que si existe CfdiRelacionados debe existir al menos un CfdiRelacionado ) : Imagen 24 Nodo CfdiRelacionados agregado 4.3 Agregar un CfdiRelacionado Si se desea agregar un CfdiRelacionado adicional basta con invocar al método “ addCfdiRelacionado() “ . 01 02 03 04 // agregando un CfdiRelacionado a CfdiRelacionados cfdi33.addCfdiRelacionado( "806EA594 - A850 - 48C3 - B56E - 1EB0C4D570C8" //pUUID ); El resultado sería (incluyendo el paso anterior) la línea 24 (ver rojo). Imagen 25 CFDI Relacionado a gregado 4.4 Agregar el Emisor Para agregar el emisor del CFDI se debe invocar al método setEmisor() . 01 02 03 04 05 // Estableciendo el Emisor cfdi33.setEmisor( "MAR980114GQA" , //pRfc "UNION NACIONAL DE RESINEROS SA DE CV" , //pNombre "601" ); El nodo agregado es Emisor línea 26 (ver verde): Imagen 26 Nodo Emisor a gregado

37. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 29 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.17.14 Definir el totalAmount a Detallista 01 02 03 complCfdi.Det131_setTotalAmount(1.0m); 4.17.15 Definir el TotalAllowanceChargea Detallista para definir el monto total de cargos o descuentos 01 02 03 04 05 06 complCfdi.Det131_AddTotalAllowanceCharge( detallistaTotalAllowanceChargeAllowanceOrCharg eType .CHARGE, detallistaTotalAllowanceChargeSpecialServicesType .ADS, 1.00m); 4.17.16 Generar el complemento Detallista 01 02 03 04 05 06 07 08 09 10 11 //generamos el complemento detallista ReturnXmlComplemento rtnXmlCompl = complCfdi.Det131_generaComplemento(); //verificamos que se creo if (rtnXmlCompl.IsXmlComplementoCreated) { //le pasamos el complemento generado a CFDI33 y agregamos su correspondienteNameSpace cfdi33.addComplementoComprobante(rtnXmlCompl.XMLComplemento); cfdi33.addNamespace(complCfdi.NsDetallista131); } 4.18 Defini r Complemento de Recepción de Pagos 01 02 03 04 05 06 07 08 09 10 11 13 14 15 16 17 18 //=================>>>>>>>>>>> Inclusión de complemento Pagos 1.0 indexPago = complCfdi.Pagos10_addPago( new DateTime (2017, 09, 25, 12, 0, 0), "03" , //forma de pago "USD" , 17.975100m, //tipo de cambio 3426.64m, //monto " NUMOPERACION " , "MAR980114GQA" , "BCO EXTR" , "0123456789" , "MAR980114GQA" , "9876543210" , "01" , Convert .FromBase64String( "AAECAwQFBgcICQoLDA0ODw==" ), "CAD PAGO" , Convert .FromBase64String( "AAECAwQFBgcICQoLDA0ODw==" ));

40. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 32 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5. Referencia 5.1 Namespaces A continuación, se listas los namespaces de la biblioteca : • Namespace Cancelacion • Namespace Complementos • Namespace Returns • Namespa ce Version3 _3 • Namespace Timbre11 5.2 Clases principales Archivo Descripción CFDI33 Clase que representa el comprobante CFDI versión 3.3 , en esta clase se agregan todos los valores que el comprobante a generar tendrá en sus atributos , así como sus respectivos nodos. Complemento Clase que representa al nodo complemento , en esta clase se contendrán todos los valores que el comprobante a generar tendrá en sus atributos, así como sus respectivos nodos. ReturnXML Clase que representa el resultado de generar el CFDI tras invocar al método CFDI33. generaXml () , por tanto , esta clase no contiene métodos. Si algún error ocurre al generar el comprobante cuando no es válido, esta clase contendrá los códigos de error y mensajes correspondientes a la matriz de errores , en caso de éxito contiene el comprobante . ReturnTimbre Clase que representa el resultado de ob tener el timbre CFDI33. recuperaTimbre () , por tanto , no contiene métodos. ReturnXmlComplemento Clase que representa el resultado de generar un complemento a través del método Pagos10_generaComplemento de clase Complemento , por tanto , esta clase no tiene métodos. 5.3 Namespace SifeiSignature3_3.Version3_3 Clases: • CFDI33 5.3.1 Clase CFDI33 5.3.1.1 Constructor Constructor Descripción public CFDI33( string connString, string pSerie, string pFolio, DateTime pFecha, string pFormaPago, string pCondPago, decimal pSubtotal, decimal ? pDescuento, string pMoneda, decimal ? pTipoCambio, Inicializa el objeto CFDI33 con los atributos principales del comprobante

73. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 65 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.14 Referencia del Namespace SifeiSignature3_3.Complementos.Iedu10 5.14.1 Clases • class instEducativas 5.14.2 Enumeración instEducativasNivelEducativo Valores de enume r ació n Preescolar = 0, Primaria = 1, Secundaria = 2, Profesionaltécnico = 3, Bachilleratoosuequivalente = 4 5.14.3 Clase instEducativas 5.14.3.1 Propiedades Propiedades public string version { get ; set ; } public string nombreAlumno { get ; set ; } public string CURP { get ; set ; } public instEducativasNivelEducativo nivelEducativo { get ; set ; } public string autRVOE { get ; set ; } public string rfcPago { get ; set ; } 5.15 Có digos de R espuesta de C ancelación Estos son los códigos de respuesta que devuelve la operación cancelar CFDI. Código Descripción 201 Cancelado 202 Previamente cancelado 203 UUID no corresponde a Emisor 204 UUID no aplicable para cancelacion 205 UUID no existe 300 Autenticación inválida 301 XML mal formado 302 Sello mal formado o inválido 303 Sello no corresponde a Emisor o caduco 304 Certificado Revocado o Caduco 305 La Fecha de Emision no está dentro de la vigencia del CSD del Emisor 306 El Certificado no es de tipo de CSD 307 El CFDI contiene un timbre previo 308 Certificado no expedido por el SAT 5.16 Códigos de Error de la Matriz de validaciones para CFDI versión 3.3 Código Error CFDI33101 El campo Fecha no cumple con el patrón requerido CFDI33102 El resultado de la digestión debe ser igual al resultado de la desencripción del sello.

59. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 51 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.6.3.2 Propiedades Constructor Descripción public bool IsXmlComplementoCreated { get ; set ; } Boleano que indica si se cre ó el complemento en XML . public string ErrorDetalle { get ; set ; } Incluye el detalle del error cuando IsXmlComplementoCreated es false . public XmlElement XMLComplemento { get ; set ; } Objeto XmlElement que contiene el Complemento . 5.6.4 Clase ReturnCancelacion 5.6.4.1 Constructores Constructor Descripción public ReturnCancelacion(); Constructor vací o. 5.6.4.2 Propiedades Constructor Descripción public bool IsCancelado { get ; set ; } Indica si fue cancelado (s) los CFDI de forma correcta . public Acuse AcuseBE { get ; set ; } Objeto de tipo Acuse , indica el estado de la ope ració n “ Cancelacion ” ver clase Acuse. public string CodigoError { get ; set ; } Indica el c ó digo de error (si es que hubo) . public string ErrorDetalle { get ; set ; } String con el detalle del error. 5.7 Namespace SifeiSignature3_3.Complementos.Detallista131 5.7.1 Enumeraciones de complemento Detallista versión 1.3.1 Enumeraciones de Detallista detallistaAllowanceChargeAllowanceChargeType detallistaAllowanceChargeMonetaryAmountOrPercentageRateBase detallistaAllowanceChargeSettlementType detallistaAllowanceChargeSpecialServicesType detallistaCurrencyCurrencyFunction detallistaCurrencyCurrencyISOCode detallistaDocumentStatus detallistaInvoiceCreatorAlternatePartyIdentificationType detallistaLineItemAdditionalInformationReferenceIdentificationType detallistaLineItemAditionalQuantityQuantityType detallistaLineItemAllowanceChargeAllowanceChargeType detallistaLineItemAllowance ChargeSettlementType detallistaLineItemAllowanceChargeSpecialServicesType detallistaLineItemAlternateTradeItemIdentificationType detallistaLineItemCustomsAlternatePartyIdentificationType detallistaLineItemLogisticUnitsSerialShippingContainerCodeType d etallistaLineItemPalletInformationDescriptionType detallistaLineItemPalletInformationTransportMethodOfPayment detallistaLineItemTradeItemDescriptionInformationLanguage detallistaLineItemTradeItemTaxInformationTaxCategory detallistaLineItemTradeItemTaxInformationTaxTypeDescription detallistaOrderIdentificationReferenceIdentificationType detallistaPaymentTermsDiscountPaymentDiscountType

66. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 58 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Propiedades public decimal TotaldeTraslados { get ; set ; } 5.11.2 Clase ImpuestosLocalesRetencionesLocales 5.11.2.1 Constructores Constructor Descripción public ImpuestosLocalesRetencionesLocales (); Constructor vací o. 5.11.2.2 Propiedades Propiedades public string ImpLocRetenido { get ; set ; } public decimal TasadeRetencion { get ; set ; } public decimal Importe { get ; set ; } 5.11.3 Clase ImpuestosLocalesTrasladosLocales 5.11.3.1 Constructores Constructor Descripción public ImpuestosLocalesTrasladosLocales (); Constructor vací o. 5.11.3.2 Propiedades Propiedades public string ImpLocTrasladado { get ; set ; } public decimal TasadeTraslado { get ; set ; } public decimal Importe { get ; set ; } 5.12 Referencia del Namespace SifeiSignature3_3.Complementos.Nomina12 5.12.1 Clases • class Nomina • class NominaDeducciones • class NominaDeduccionesDeduccion • class NominaEmisor • class NominaEmis orEntidadSNCF • class NominaIncapacidad • class NominaOtroPago • class NominaOtroPagoCompensacionSaldosAFavor • class NominaOtroPagoSubsidioAlEmpleo • class NominaPercepciones • class NominaPercepcionesJubilacionPensionRetiro • class NominaPercepcionesPercepcion • class NominaPercepcionesPercepcionAccionesOTitulos • class NominaPercepcionesPercepcionHorasExtra • class NominaPercepcionesSeparacionIndemnizacion • class NominaRecept or

60. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 52 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Enumeraciones de Detallista detallistaPaymentTermsNetPaymentNetPaymentTermsType detallistaPaymentTermsNetPaymentP aymentTimePeriodTimePeriodDueTimePeriod detallistaPaymentTermsPaymentTermsEvent detallistaPaymentTermsPaymentTermsRelationTime detallistaReferenceIdentificationType detallistaRequestForPaymentIdentificationEntityType detallistaSellerAlternatePartyIden tificationType detallistaSpecialInstructionCode detallistaTotalAllowanceChargeAllowanceOrChargeType detallistaTotalAllowanceChargeSpecialServicesType 5.8 Namespace SifeiSignature3_3.Complementos.Iedu10 5.8.1 Enumeraciones de complemento Instituciones Educativas versión 1.0 Namespace: SifeiSignature3_3.Complementos.Iedu10 instEducativasNivelEducativo 5.8.2 Enumeraciones de complemento Nó mina versión 1.2 Namespace: SifeiSignature3_3.Complementos.Nomina12 NominaReceptorSindicalizado 5.9 Referencia del Namespace SifeiSignature3_3.Cancelacion 5.9.1 Clase Acuse 5.9.1.1 Constructores Constructor Descripción public Acuse(); Constructor vací o. 5.9.1.2 Propiedades Constructor Descripción public string AcuseXml { get ; set ; } String que contiene el XML del acuse de cancelaci ó n. public DateTime Fecha { get ; set ; } Fecha en que se gener ó el acuse. public string Rfc { get ; set ; } RFC del emisor . public string Status { get ; set ; } C ó digo del estatus de la operaci ó n cancelar SAT. public string Sello { get ; set ; } Sello . public string Mensaje { get ; set ; } Mensaje que contiene la descripci ó n del status . public List < AcuseDetalle > AcuseDetalle { get ; set ; } Lista de detalles de acuse (indicando en UUID y estatus) ver clase AcuseDetalle . 5.9.2 Clase AcuseDetalle 5.9.2.1 Constructores Constructor Descripción public AcuseDetalle(); Constructor vací o.

10. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 2 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 1.6 Términos y definiciones t écnica s Acrónimo Definición Biblioteca (Library) Es una colección de recursos e implementaciones funcionales codificadas que son utilizadas por programas , en ellas se incluyen datos, configuraciones y código (generalmente pre compilado). Una biblioteca ofrece interfaces por las cual es un programa puede invocar funcionalidades. DLL Es una biblioteca ( de enlace dinámico) que contiene código y datos que pueden utilizarse por varios programas al mismo tiempo. Las DLL son ligadas dinámicamente al programa que los usa durante su ejecución en vez de ser compiladas con el programa principal. Microsoft Visual Studio (VS) Es un entorno de desarrollo integrado que soporta múltiples lenguajes de programación, tales como C++, C#, Visual Basic .NET, F#, Java, Python, Ruby y PHP, al igual que ento rnos de desarrollo web, como ASP.NET MVC . MariaDB Server Es un potente servidor de base de datos derivado de MySQL y por tanto compa rte muchas características de interfaces, comandos, sentencias y nomenclatura de programas. 1.7 Referencias Información Fuente Formato de factura ( Anexo 20) http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/Anexo_20_version3.3. aspx 1.8 R ecursos Los recursos listados a continuación son necesarios para poder emitir y timbrar comprobantes. Archivo /Carpeta Descripción SifeiSignature3_3.dll Biblioteca principal la cual debe ser referenciada en el proyecto para su uso e integración. SAT Carpeta que contiene los XSLT y XSD del SAT , además de incluir openssl . bd_ catálogo ssat.sql Base de datos que contiene los catálogos del SAT . MySQL .Data.dll Bibliot eca para el acceso a datos a MySQL y MariaDB. zxing.dll Biblioteca para el procesamiento de imágenes. ICSharpCode.SharpZipLib Biblioteca para que permite varios formatos de compresión como ZIP y TAR entre otros. 1.9 Versiones de CFDI que se timbran SIFEI Signature 3.3 permite : • Comprobante Fiscal Digital por Internet versión 3.3 1.9.1 Métodos de SIFEI Signature • Emitir CFDI 3.3 • Emite CFDI 3.3 Comercio Exterior 1 . 1 • Emite CFDI 3.3 N ó mina 1.2 • Emite CFDI 3.3 Detallista • Emite CFDI 3.3 Pagos • Recupera Timbre

75. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 67 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Código Error CFDI33131 La clave del campo RegimenFiscal debe corresponder con el tipo de persona (física o moral). CFDI33132 Este RFC del receptor no existe en la lista de RFC inscritos no cancelados del SAT. CFDI33133 El campo ResidenciaFiscal , no contiene un valor del catálogo c_Pais . CFDI33134 El RFC del receptor es de un RFC registrado en el SAT o un RFC genérico nacional y existe el campo ResidenciaFiscal . CFDI33135 El valor del campo ResidenciaFiscal no puede ser MEX . CFDI33136 Se debe registrar un valor de acuerdo al catálogo c_Pais en el campo ResidenciaFiscal , cuando en el en el campo NumRegIdTrib se registre información. CFDI33137 El valor del campo es un RFC inscrito no cancelado en el SAT o un RFC genérico nacional, y se registró el campo NumRegIdTrib . CFDI33138 Para registrar el campo NumRegIdTrib , el CFDI debe contener el complemento de comercio exterior y el RFC del receptor debe ser un RFC genérico extranjero. CFDI33139 El campo NumRegIdTrib no cumple con el patrón correspondiente. CFDI33140 El campo UsoCFDI , no contiene un valor del catálogo c_UsoCFDI . CFDI33141 La clave del campo UsoCFDI debe corresponder con el tipo de persona (física o moral). CFDI33142 El campo ClaveProdServ , no contiene un valor del catálogo c_ClaveProdServ . CFDI33143 No existe el complemento requerido para el valor de ClaveProdServ . CFDI33144 No está declarado el impuesto relacionado con el valor de ClaveProdServ . CFDI33145 El campo ClaveUnidad no contiene un valor del catálogo c_ClaveUnidad . CFDI33146 El valor del campo ValorUnitario debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33147 El valor del campo ValorUnitario debe ser mayor que cero ( 0 ) cuando el tipo de comprobante es Ingreso, Egreso o Nomina. CFDI33148 El valor del campo Importe debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33149 El valor del campo Importe no se encuentra entre el límite inferior y superior permitido. CFDI33150 El valor del campo Descuento debe tener hasta la cantidad de decimales que tenga registrado el atributo importe del concepto. CFDI33151 El valor del campo Descuento es mayor que el campo Importe . CFDI33152 En caso de utilizar el nodo Impuestos en un concepto, se deben incluir impuestos de traslado y/o retenciones. CFDI33153 El valor del campo Base que corresponde a Traslado debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33154 El valor del campo Base que corresponde a Traslado debe ser mayor que cero. CFDI33155 El valor del campo Impuesto que corresponde a Traslado no contiene un valor del catálogo c_Impuesto . CFDI33156 El valor del campo TipoFactor que corresponde a Traslado no contiene un valor del catálogo c_TipoFactor . CFDI33157 Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Exento no se deben registrar los campos TasaOCuota ni Importe .

35. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 27 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.17.1 Establec er el requestForPaymentIdentification a Detallista 01 02 03 04 05 complCfdi.Det131_Agrega_RequestForPaymentIdentification_Detallista( detallistaRequestForPaymentIdentificationEntityType .DEBIT_NOTE //EntityType ); 4.17.2 Agregar un specialInstruction a Detallista 01 02 03 04 complCfdi.Det131_AgregaSpecialInstruction( detallistaSpecialInstructionCode .AAB, //Code "TEXT" ); //text 4.17.3 Establecer el orderIdentification a Detallista 01 02 03 04 05 complCfdi.Det131_SetOrderIdentification( new DateTime (2016, 02, 07), //referenceDate "81283939" ); //ReferenceIdentification 4.17.4 Agregar un referenceIdentification al AdditionalInformation de Detallista 01 02 03 04 05 06 complCfdi.Det131_AddReferenceIdentificationToAdditionalInformation( detallistaReferenceIdentificationType .AAE, //tipo "000001" ); //valor 4.17.5 Establecer un DeliveryNote a Detallista 01 02 03 04 05 complCfdi.Det131_SetDeliveryNote( new DateTime (2016, 04, 07), // reference date "0000001" //referenceIdIndetification ); 4.17.6 Definir el Buyer (comprador) de Detallista 01 02 03 04 05 complCfdi.Det131_SetBuyer( "7504000107903" , //gln "0001" //personOrDeparmentName ); 4.17.7 Defini r el Seller (vendedor) a Detallista 01 02 03 04 05 06 complCfdi.Det131_SetSeller( "7244020982223" , //gnl detallistaSellerAlternatePartyIdentificationType .IEPS_REFERENCE, "12382317" //alternatePartyIdentification );

27. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 19 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 01 02 03 04 05 // estableciendo el total de impuestos cfdi33.setTotalImpuestos(0.00m, //pTotImpRetenidos 321.33m); //pTotImpTrasladados Lo cual agrega el nodo Impuestos ( en color morado ) : Imagen 31 Nodo Impuestos agregado a comprobante 4.10 Agre gar un impuesto traslado a impuestos de comprobante Solo si se ha de fi nido el nodo Impuestos al comprobante ( Xpath: cfdi:Comprobante/cfdi:Impuestos ) , es posible indicar el impuesto Traslado por medio del m é todo addImpTraslado () . 01 02 03 04 05 //estableciendo un impuesto traslado cfdi33.addImpTraslado( "002" , //pImpuesto "Tasa" , //pTipoFacto r 0.16m, //pTasaCuota 321.33m); //pImporte Este agrega los nodos traslados y traslado al nodo “ impuestos ” (marcados en color azul) Imagen 32 Impuesto traslado agregado 4.11 Generar el XML Para generar el XmlDocument debemos invocar al método generaXml ( ) y pasarle el string de conexión, el objeto XmlDocument no es retornado de forma directa, sino que es devuelto en un objeto Wrapper de tipo ReturnXML , este objeto nos permite averiguar si se generó el XML o no . (Para más información ver la referencia ReturnXML ) . 01 02 03 04 05 06 07 08 //generamos el XML , el objeto de tipo ReturnXML, contiene propiedades que indican si se creó el XML , y si es así en su propi ed ad XML, el objeto XmlDocument ReturnXML rtnCfdi = cfdi33.generaXml(ConnString); //comprobamos que se ha creado con la propiedad IsXMLCreated if (rtnCfdi.IsXMLCreated) { // si se cre ó , obtenemos de la propiedad XML para guardarlo rtnCfdi.XML.Save( @"C: \ Workspace \ SifeiSignature \ CfdiGeneradosTest \ cfdi_creado.xml" ); if (! File .Exists( @"C: \ Workspace \ SifeiSignature \ CfdiGeneradosTest \ cfdi_creado.xml" )) {

34. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 26 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.16.4 Agregar una percepción a percepciones de Nómina 01 02 03 04 05 06 07 complCfdi.Nomina12_addPercepcion( "029" , //pTipoPercepcion "500100010004" , //pClave "Vales de Despensa" , //pConcepto 0.00m, //pImporteGravado 462.00m); //pImporteExento 4.16.5 Agregar una Separación indemnización a percepciones de Nómina 01 02 03 04 05 06 07 complCfdi.Nomina12_setSeparacionIndemnizacion( 70160.94m, //pTotalPagado 3, //pNumAñosServicio 6384m, //pUltimoSueldoMensOrd 6384.00m, //pIngresoAcumulable 63776.94m); //pIngresoNoAcumulable //pImporteE xento 4.16.6 Estable r deducciones a Nómina 01 02 03 04 complCfdi.Nomina12_setDeducciones( null , //pTotalOtrasDeducc 3781.05m); //pTotalImpuestosReten 4.16.7 A gregar u na deducción a deducciones de Nómina 01 02 03 04 05 06 complCfdi.Nomina12_addDeduccion( "002" , //pTipoDeducc "20010004" , //pClave "ISR" , //pConcepto 3781.05m); //pImportepTotalImpuestosRe ten 4.16.8 Gener ar el Complemento Nómina Una vez agregado al objeto CFDI 33 ya se puede generar el XML , sellar y timbrar con los respectivos métodos de esta clase ( CFDI33 ). 01 02 03 04 05 06 07 ReturnXmlComplemento rtnXmlCompl = complCfdi.Nomina12_generaComplemento(); //verificamos que se haya creado el complemento y s i es así lo agregamos al comprobante, tambien debemos agregar el namespace para n ó mina if (rtnXmlCompl.IsXmlComplementoCreated) { cfdi33.addComplementoComprobante(rtnXmlCompl.XMLComplemento); cfdi33.addNamespace(complCfdi.NsNomina12); } //pImportepTotalImpuestosReten 4.17 Definir complemento Detallista 01 02 03 04 //=================>>>>>>>>>>> Inclusión de complemento Detallista complCfdi.Det131_Define_Detallista( detallistaDocumentStatus .ORIGINAL); //DocumentStatus

76. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 68 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Código Error CFDI33158 Si el valor registrado en el campo TipoFactor que corresponde a Traslado es Tasa o Cuota , se deben registrar los campos TasaOCuota e Importe. CFDI33159 El valor del campo TasaOCuota que corresponde a Traslado no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango. CFDI33160 El valor del campo Importe que corresponde a Traslado debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33161 El valor del campo Importe o que corresponde a Traslado no se encuentra entre el límite inferior y superior permitido. CFDI33162 El valor del campo Base que corresponde a Retención debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33163 El valor del campo Base que corresponde a Retención debe ser mayor que cero. CFDI33164 El valor del campo Impuesto que corresponde a Retención no contiene un valor del catálogo c_Impuesto . CFDI33165 El valor del campo TipoFactor que corresponde a Retención no contiene un valor del catálogo c_TipoFactor . CFDI33166 Si el valor registrado en el campo TipoFactor que corresponde a Retención debe ser distinto de Exento . CFDI33167 El valor del campo TasaOCuota que corresponde a Retención , no contiene un valor del catálogo c_TasaOcuota o se encuentra fuera de rango. CFDI33168 El valor del campo Importe que corresponde a Retención debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33169 El valor del campo Importe que corresponde a Retención no se encuentra entre e l límite inferior y superior permitido. CFDI33170 El número de pedimento es inválido. CFDI33171 El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. CFDI33172 El campo ClaveProdServ , no contiene un valor del catálogo c_ClaveProdServ . CFDI33173 El valor del campo ValorUnitario debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33174 El valor del campo ValorUnitario debe ser mayor que cero ( 0 ). CFDI33175 El valor del campo Importe debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33176 El valor del campo Importe no se encuentra entre el límite inferior y superior permitido. CFDI33177 El número de pedimento es inválido. CFDI33178 El NumeroPedimento no debe existir si se incluye el complemento de comercio exterior. CFDI33179 Cuando el TipoDeComprobante sea T o P , el elemento Impuestos no debe existir. CFDI33180 El valor del campo TotalImpuestosRetenidos debe tener hasta la cantidad de decimales que soporte la moneda. CFDI33181 El valor del campo TotalImpuestosRetenidos debe ser igual a la suma de los importes registrados en el elemento hijo Retencion . CFDI33182 El valor del campo TotalImpuestosTrasladados debe tener hasta la cantidad de decimales que soporte la moneda.

68. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 60 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.12.6 Clase NominaEmisor 5.12.6.1 Propiedades Propiedades public string TipoDeduccion { get ; set ; } public string Clave { get ; set ; } public string Concepto { get ; set ; } public decimal Importe { get ; set ; } 5.12.7 Clase NominaEmisorEntidadSNCF 5.12.8 Propiedades Propiedades public string OrigenRecurso { get ; set ; } public decimal MontoRecursoPropio { get ; set ; } public bool MontoRecursoPropioSpecified { get ; set ; } 5.12.9 Clase NominaIncapacidad 5.12.9.1 Propiedades Propiedades public int DiasIncapacidad { get ; set ; } public string TipoIncapacidad { get ; set ; } public decimal ImporteMonetario { get ; set ; } public bool ImporteMonetarioSpecified { get ; set ; } 5.12.10 Clase NominaOtroPago 5.12.10.1 Propiedades Propiedades public NominaOtroPagoSubsidioAlEmpleo SubsidioAlEmpleo { get ; set ; } public NominaOtroPagoCompensacionSaldosAFavor CompensacionSaldosAFavor { get ; set ; } public string TipoOtroPago { get ; set ; } public string Clave { get ; set ; } public string Concepto { get ; set ; } public decimal Importe { get ; set ; } 5.12.11 Clase NominaOtroPagoCompensacionSaldosAFavor 5.12.11.1 Propiedades Propiedades public decimal SaldoAFavor { get ; set ; } public short Año { get ; set ; } public decimal RemanenteSalFav { get ; set ; }

65. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 57 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Propiedades public string ResidenciaFiscal { get ; set ; } 5.10.10 Clase ComercioExteriorReceptor 5.10.10.1 Constructores Constructor Descripción public ComercioExteriorReceptor (); Constructor vací o. 5.10.10.2 Propiedades Propiedades public ComercioExteriorReceptorDomicilio Domicilio { get ; set ; } public string NumRegIdTrib { get ; set ; } 5.10.11 Clase ComercioExteriorReceptorDomicilio 5.10.11.1 C onstructores Constructor Descripción public ComercioExteriorReceptorDomicilio (); Constructor vací o. 5.10.11.2 Propiedades Propiedades public string Calle { get ; set ; } public string NumeroExterior { get ; set ; } public string NumeroInterior { get ; set ; } public string Colonia { get ; set ; } public string Localidad { get ; set ; } public string Referencia { get ; set ; } public string Municipio { get ; set ; } public string Estado { get ; set ; } public string Pais { get ; set ; } public string CodigoPostal { get ; set ; } 5.11 Referencia del Namespace SifeiSignature3_3.Complementos.ImpLocal10 5.11.1 Clase ImpuestosLocales 5.11.1.1 Constructores Constructor Descripción public ImpuestosLocales (); Constructor vací o. 5.11.1.2 Propiedades Propiedades public ImpuestosLocalesRetencionesLocales [] RetencionesLocales { get ; set ; } public ImpuestosLocalesTrasladosLocales [] TrasladosLocales { get ; set ; } public string version { get ; set ; } public decimal TotaldeRetenciones { get ; set ; }

61. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 53 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.9.2.2 Propiedades Propiededades Descripción public string UUID { get ; set ; } UUID del CFDI . public string Status { get ; set ; } Có digo del e status de la operacion (ver numeral 5.15 Có digos de R espuesta de C ancelación ) . public string Mensaje { get ; set ; } Mensaje relacionado al estatus. 5.9.3 Clase Cancelacion 5.9.3.1 Constructores Constructor Descripción public Cancelacion (); Constructor vací o. 5.9.3.2 Mé todo s Metodos de Cancelacion Descripción p ublic ReturnCancelacion cancela( ref string msg, string [] listaUUIDS, /* arreglo de UUID a cancelar*/ string rfcSifei, string password, string rfcEmisor, string rutaCert, /*ruta del certificado*/ string rutaKey, /*ruta del key*/ string pwdCert, /*Contraseña del certificado*/ Definiciones . TipoTimbrado pTipoTimbrado ); Cancela todos los CFDI pasados en el parámetro @ listaUUIDS Excepciones: Exception Si no existe el certificado indicado por el path @ rutaCert . Si el certificado es inv á lido. Si hubo un error al crear el PFX. ArgumentException Ni n guna. Returns : Objeto de tipo ReturnCancelacion que indica el resultado de la operación cancelar (ver clase ReturnCancelacion ) . 5.10 Referencia del Namespace SifeiSignature3_3.Complementos.Cce11 5.10.1 Clases • class ComercioExterior • class ComercioExteriorDestinatario • class ComercioExteriorDestinatarioDomicilio • class ComercioExteriorEmisor • class ComercioExteriorEmisorDomicil io • class ComercioExteriorMercancia • class ComercioExteriorMercanciaDescripcionesEspecificas • class ComercioExteriorPropietario • class ComercioExteriorReceptor • class ComercioExteriorReceptorDomicilio

41. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 33 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Constructor Descripción decimal pTotal, string pTipoCompr, string pMetodoPago, string pLugarEped, string pConfirmacion, string rutaCert ); 5.3.2 Métodos Método de CFDI33 Descripción public static ReturnTimbre recuperaTimbre( string usuario, string password, XmlDocument xml, tipoTimbrado TipoTimbrado ); Recupera un timbre del servicio web de sifei , el cual si es correcto es devuelto en el objeto de tipo ReturnTimbre . Para más detalle ver la clase ReturnTimbre . public void addAddenda( XmlElement pAddenda ); Agrega un nodo hijo ad d enda de tipo any (cualquiera) al nodo addenda del comprobante. xPath: Cfdi:Addenda/ cfdi:any public void addCfdiRelacionado( string pUUID ); Crea y agrega un nodo CfdiRelacionado con el UUID especificado. xPath: Cfdi:CfdiRelacionados/ cfdi:Cfdirelacionado Excepciones: Exception Si el nodo CfdiRelacionados no ha sido establecido (es null ) . Si @pUUID no cumple con el formato y restricciones establecidas por el SAT . public void addComplementoComprobante( XmlEle ment pComplemento); Agrega un complemento al nodo complemento . public bool addComplementoConcepto( int indexConcepto, XmlElement complemento ); Agrega el nodo @complemento como hijo al Concepto apuntado por @indexConcepto . xPath: Cfdi:Conceptos/ cfdi:concepto[ @indexConcepto ]/ ComplementoC oncepto Excepciones: Exception Si el concepto apuntado por @indexConcepto no existe. public int addConcepto( string pCveProdServ, string pNoIdentif, decimal pCantidad, string pCveUnidad, string pUnidad, string pDescripcion, Crea y agrega un nodo hijo concepto al nodo conceptos ( Cfdi :Conceptos ). xPath: Cfdi:Conceptos/ cfdi:concepto

45. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 37 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.3.3 Enumeraciones: 5.3.3.1 Enumeracion tipoTimbrado Valor Descripc ión Productivo Indica que se debe usar el ambiente de producción. Pruebas Valor que indicar que se están haciendo pruebas con SIFEI Signature . 5.4 Namespace SifeiSignature3_3.Timbre11 5.4.1 Clases • TimbreBE 5.4.2 Clase TimbreBE Clase que contiene los datos del Timbre Fiscal versión 1.1 . 5.4.2.1 Propiedades de clase Propiedades public string UUID { get ; set ; } public string SelloPAC { get ; set ; } public string NoCertificado { get ; set ; } public string FechaTimbre { get ; set ; } public string CadenaOriginalTimbre { get ; set ; } public string RfcProvCertif { get ; set ; } public string Version { get ; set ; } public string Leyenda { get ; set ; } public string SelloCFD { get ; set ; } 5.5 Namespace SifeiSignature3_3.Complementos 5.5.1 Clase Complemento 5.5.1.1 Enumeraciones Nomina12_pSiNoNoEspecificado SI = 0, NO = 1, NoEspecificado = 2 5.5.1.2 Propiedades de clase Propiedades de clase Descripción public namespaces NsComercioExterior1_1 { get} Obtiene el namespace de Comercio Exterior versión 1.2 public namespaces NsNomina12 { get} Obtiene el namespace de N ó mina versión 1.1 public namespaces NsDetallista131 { get} Obtiene el namespace de Detallista versión 1.3.1 public namespaces NsIedu10 { get} Obtiene el namespace de Instituciones Educativas Privadas versión 1.0 public namespaces NsImpLocal10 { get} Obtiene el namespace de Im p uestos locales versión 1.0 public namespaces NsPagos10 { get} Obtiene el namespace de Complemento pagos versión 1.0

42. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 34 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Método de CFDI33 Descripción decimal pValorUnit, decimal pImporte, decimal ? pDescuento, string pNumCuentaPredial ); Returns Índ ice del nodo concepto que se agregó Excepciones: Exception Si los parámetros no cumplen el formato y restricciones definidas por el SAT Return s Í ndice del nodo Concepto public void addImpRetencion( string pImpuesto, decimal pImporte); Crea y agrega un nodo Retencion con el impuesto e importe indicado al nodo Impuestos del comprobante, verifica que exista el impuesto en el catálogo impuesto y que el importe corresponda con tipo importe (definido por el estándar del SAT ). XPath: cfdi: Impuestos/ cfdi: Retenciones /cfdi:Retencion Excepciones: Exception Si el nodo Impuestos no existe (es null ), no ha sido defi ni da. Lanza excepciones los parámetros no cumplen el formato y restricciones definidas por el SAT . ArgumentException Si alguno de los parámetros: @pImpuesto no existe en su catálogo . public void addImpRetencionToConcepto( int pIndexConc, decimal pBase, string pImpuesto, string pTipoFactor, decimal pTasaOCuota, decimal pImporte); Crea y agrega un nodo Retencion al Concepto indicado por el valor @ pIndexConc , el nodo retencion tendrá los valores: pBase , pImpuesto , pTipoFactor , pTasaOCuota , pImporte . XPath: Cfdi:Conceptos/cfdi:concepto [@pIndexConc] / cfdi: I mpuestos/cfdi:Retenciones/ cfdi: Retencion Excepciones: Exception Si el concepto al que apunta @pIndexConc no existe (es null o está fuera de rango). Lanza excepciones los parámetros no cumplen el formato y restricciones definidas por el SAT . ArgumentException Si alguno de los parámetros: @pImpuesto , @pTipoFactor no existe en su catálogo . public void addImpTraslado( string pImpuesto, string pTipoFactor, decimal pTasaCuota, decimal pImporte ); Crea y agrega un nodo Traslado con el @ pImpuesto , @p tipofactor , @ pTasaCuota e @p importe indicado al nodo Impuestos del comprobante, verifica que exista el impuesto en el catálogo impuesto y que el importe corresponda con tipo importe (definido por el estándar del SAT). XPath: cfdi: Impuestos/ cfdi: Traslados/ cfdi: Traslado

64. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 56 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Propiedades public string Estado { get ; set ; } public string Pais { get ; set ; } public string CodigoPostal { get ; set ; } 5.10.7 Clase ComercioExteriorMercancia 5.10.7.1 Constructores Constructor Descripción public ComercioExteriorMercancia (); Constructor vací o. 5.10.7.2 Propiedades Propiedades public ComercioExteriorMercanciaDescripcionesEspecificas [] DescripcionesEspecificas { get ; set ; } public string NoIdentificacion { get ; set ; } public string FraccionArancelaria { get ; set ; } public bool FraccionArancelariaSpecified { get ; set ; } public decimal CantidadAduana { get ; set ; } public bool CantidadAduanaSpecified { get ; set ; } public string UnidadAduana { get ; set ; } public bool UnidadAduanaSpecified { get ; set ; } public decimal ValorUnitarioAduana { get ; set ; } public bool ValorUnitarioAduanaSpecified { get ; set ; } public decimal ValorDolares { get ; set ; } 5.10.8 Clase ComercioExteriorMercanciaDescripcionesEspecificas 5.10.8.1 C onstructores Constructor Descripción public ComercioExteriorMercanciaDescripcionesEspecificas (); Constructor vací o. 5.10.8.2 Propiedades Propiedades public string Marca { get ; set ; } public string Modelo { get ; set ; } public string SubModelo { get ; set ; } public string NumeroSerie { get ; set ; } 5.10.9 Clase ComercioExteriorPropietario 5.10.9.1 Constructores Constructor Descripción public ComercioExteriorPropietario (); Constructor vac í o. 5.10.9.2 Propiedades Propiedades public string NumRegIdTrib { get ; set ; }

52. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 44 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción Exception Esta excepción ocurre si no se ha establecido el complemento ImpuestosLocales . Si @nombre es null o cadena vací a . public void ImpLocal10_Agrega_TrasladoImpuest oLocal( string nombre, decimal importe, decimal tasa ) Crea y establece el RetencionesLocales a ImpuestosLocales (como hijo). Xpath: Cfdi:Complemento/ ImpuestosLocales / RetencionesLocales Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento ImpuestosLocales . Si @nombre es null o cadena vac í a . public void ImpLocal10_Define_ImpuestoLocal( decimal totalTraslado, decimal totalRetencion ) Crea y establece el complemento ImpuestosLocales . Xpath: Cfdi:Complemento/ ImpuestosLocales Excepciones: Exception Ninguna . public ReturnXmlComplemento ImpLocal10_generaComplemento() Genera el complemento impuestos locales que es devuelto en el objeto ReturnXmlComplemento , si existe un error no fa tal es incluido en el mismo objeto. Ver propiedades: • ReturnXmlComplemento .IsXmlComplementoCreated • ReturnXmlComplemento .ErrorDetalle Excepciones: Exception Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. Si no se pudo formar el nodo IEDU . public void Nomina12_addDeduccion( string pTipoDeducc, string pClave, string pConcepto, decimal pImporte ) Crea y establece una Deduccion a Deducciones (como hijo). Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12: Deducciones / Deduccion[] Excepciones: Exception Esta excepción ocurre si no se ha est ablecido el complemento Nó mina 1.2. Si no se ha establecido el nodo deducciones . Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. ArgumentException si @ pTipoDeducc no existe en el catálogo definido por el SAT . public void Nomina12_addHorasExtra( int indexPercepcion, int pDias, string pTipoHoras, int pHorasExtra, Crea y establece un nodo HorasExtra (como hijo) a la Percepcion apuntada por @ indexPercepcion . Xpath:

44. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 36 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Método de CFDI33 Descripción XPath: Cfdi: CfdiRelacionados/cfdi:Relacionado Excepciones: Exception Si los parámetros no cumplen con el formato y restricciones establecidas por el SAT . ArgumentException Si alguno de los parámetros: @pTipoRelacion no existe en su catálogo . public void setEmisor( string pRfc, string pNombre, string pRegFiscal ); Crea y establece un nodo Emisor como hijo directo al comprobante, verifica que existe el régimen fiscal en el catálogo y lanza una excepción sino existe. XPath: Cfdi:Emisor Excepciones: Exception Si los parámetros no cumplen con el formato y restricciones establecidas por el SAT . ArgumentException Si alguno de los parámetros: @pRegFiscalno no existe en su catálogo . public void setReceptor( string pRfc, string pNombre, string pResidenciaFiscal, string pNumRegIdTrib, string pUsoCfdi ); Crea y establece un nodo Receptor co mo hijo directo al comprobante. XPath: Cfdi:Receptor Excepciones: Exception Si los parámetros no cumplen con el formato y restricciones establecidas por el SAT . ArgumentException Si alguno de los parámetros: @ pUsoCfdi , @ pResidenciaFiscal no existe en su catálogo . public void setTotalImpuestos( decimal ? pTotImpRetenidos, decimal ? pTotImpTrasladados ); Crea y establece un nodo Impuestos (ver xPath abajo) como hijo directo al comprobante, los parámetros @ pTotImpRetenidos y @ pTotImpTrasladados son opcionales, pero si se pasan deben cumplir con el tipo t_Importe , en caso contrario se lanza una excepción. XPath: Cfdi: Impuestos Excepciones: Exception Si los parámetros son establecidos (no null ) y no cumplen los formatos y restricciones del SAT . public ReturnTimbre timbraComprobante( string usuario, string password, string serie, string idEquipo, XmlDocument cfdi, tipoTimbrado TipoTimbrado ); G enera el timbre del comprobante a partir de XML . Retorna un objeto ReturnTimbre con el Comprobante timbrado y el cbb . @usuario asignado para usar SifeiSignature @ password asignado para usar SifeiSignature @cfdi XmlDocument con el comprobante a timbrar. @TipoTimbrado es un valor de enumerado tipoTimbrado para indicar si es de tipo pruebas o pro ductivo.

54. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 46 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. ArgumentException si @ pTipoPercepcion no existe en el catálogo definido por el SAT public void Nomina12_addSubContratacion( string pRfcLabora, decimal pPorcentajeTiempo ) Crea y establece un nodo SubContratacion como hijo a Receptor . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12: Receptor / SubContratacion [] Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si los parámetros no cumplen con las especifi cac iones definidas por el SAT en formato o combinación. public void Nomina12_DefineNomina( string pTipoNomina, DateTime pFechaPago, DateTime fechaInicPago, DateTime fechaFinPago, decimal numDiasPag, decimal ? totPercepciones, decimal ? totDeducciones, decimal ? totOtrosPagos ) Define ( establece) el complemento Nó m in a versión 1.2. Xpath: Cfdi:Complemento/ nomina12: Nomina / Excepciones: Exception Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. ArgumentException Si @ pTipoNomina no existe en el catálogo definido por el SAT . public ReturnXmlComplemento Nomina12_generaComplemento() Genera el complemento Nó mina versión 1.2 que es devuelto en el objeto ReturnXmlComplemento , si existe un error no fatal es incluido en el mismo objeto. Ver propiedades: • ReturnXmlComplemento .IsXmlComplementoCreated • ReturnXmlComplemento .ErrorDetalle Excepciones: Exception Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. Si la instancia com plemento Nómina no está definida . public void Nomina12_setAccionesOTitulos( int indexPercepcion, decimal pValorMercado, decimal pPrecioAlOtorgarse ) Crea y establece el nodo AccionesOTitulos como hijo a la Percepcion apuntada por @ indexPercepcion . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12: Percepcion[ @ indexPercepcion ] / AccionesOTitul os Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si la Percepcion padre apuntada no existe. Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación.

43. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 35 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Método de CFDI33 Descripción Excepciones: Exception Lanza excepciones los parámetros no cumplen el formato y restricciones definidas por el SAT . ArgumentException Si alguno de los parámetros: @pImpuesto , @pTipoFactor no existe en su catá logo. public void addImpTrasladoToConcepto( int pIndexConc, decimal pBase, string pImpuesto, string pTipoFactor, decimal ? pTasaOCuota, decimal ? pImporte); Crea y agrega un nodo Traslado al Concepto indicado por el valor @ pIndexConc , el nodo traslado tendrá los valores: @ pBase , @ pImpuesto , @ pTipoFactor , @ pTasaOCuota , @ pImporte . XPath: Cfdi:Conceptos/ cfdi:concepto [ @ pIndexConc ] /cfdi: Impuestos/cfdi:Traslados/ cfdi:Traslado Excepciones: Exception Si el concepto apuntado por @pIndexConc n o existe. Lanza excepciones si no existen los valores en el catálogo o si no cumplen los tipos. public void addInformacionAduaneraToConcepto ( int pIndexConc, string pNumPedimento ); Crea y agrega un nodo InformacionAduanera al Concepto indicado por el valor @ pIndexConc , el nodo InformacionAduanera tendrá los valores: @ pNumPedimento . Lanza excepciones si no existen los valores en el catálogo o si no cumplen los tipos. XPath: Cfdi:Conceptos/cfdi:concepto [ @pIndexConc ] /cfdi: InformacionAduanera Excepciones: Exception Lanza excepciones si no existen los valores en el catálogo o si no cumplen los tipos. public void addNamespace( namespaces ns ); Agrega un namespace a la lista de namespace que contendrá el comprobante public ReturnXML generaXml( string pCadConex, bool aplicaValidacionesMatrizSat = true ); Genera el comprobante con los datos de la instancia, y retorna un objeto tipo ReturnXML , el cual contiene información acerca del resultado de generar el XML , contiene una referencia al objeto xmlDocument . public List < namespaces > getNamespaces(); Obtiene la lista de namespaces del comprobante. public ReturnXML sellaComprobante( XmlDocument xml, string rutaCert, string rutaKey, string pwdCert, bool asignaFechaEmisionActual, bool validaXsds); Recibe una referencia del de tipo XmlDocument (que es el comprobante por sellar ). La ruta del certificado y llave, además de la fecha actual y una bandera para validar contra los XSD. public void setCfdirelacionados( string pTipoRelacion, string pUUID ); Crea y agrega el nodo CfdiRelacionados como hijo directo al comprobante (ver xPath abajo). Verifica que el tipo de relación existe en el catálogo y lanza una excepción sino existe. Así mismo crea un primer hijo nodo CfdiRelacionado con el UUID especificado.

55. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 47 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción public void Nomina12_setCompensacionSaldosAFa vor( int indexOtroPago, decimal pSaldoAFavor, short pAño, decimal pRemanenteAFavor) Crea y define la CompensacionSaldosAFavor al OtroPago apuntado por @ indexOtroPago . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ OtrosPagos / OtroPago [ @ indexOtroPago ] / CompensacionSaldosAFavor Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si OtrosPagos no e stá definida. Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. public void Nomina12_setDeducciones( decimal ? pTotalOtrasDeducc, decimal ? pTotalImpuestosReten) Crea y define el nodo Deducciones como hijo a nomima . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ Deducciones Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. public void Nomina12_setEmisor( string pCurp, string pRegPatronal, string pRfcPatronOrigen ) Crea y define el nodo Emisor como hijo a nomima . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ Emisor Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si los parámetros no cumplen con las especifi ca ciones definidas por el SAT en formato o combinación. public void Nomina12_setEntidadSNCF( string pOrigenRecurso, decimal pMontoRecursoPropio, bool aplicaMontoRecursoPropio ) Crea y define el nodo EntidadSNCF como hijo a Emisor . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ Emisor/EntidadSNCF Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si no se ha definido la instancia Emisor . ArgumentException Si @ pOrigenRecurso no existe en el catálogo definido por el SAT. public void Nomina12_setJubilacionPensionReti ro( decimal ? pTotalUnaExhibicion, decimal ? pTotalParcialidad, decimal ? pMontoDiario, decimal pIngresoAcumulable, decimal pIngresoNoAcumulable ) Crea y define el nodo JubilacionPensionRetiro como hijo a Percepciones . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ Percepciones/JubilacionPensionRetiro Excepciones:

74. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 66 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Código Error CFDI33103 Si existe el complemento para recepción de pagos el campo FormaPago no debe existir. CFDI33104 El campo FormaPago no contiene un valor del catálogo c_FormaPago . CFDI33105 EL certificado no cumple con alguno de los valores permitidos. CF DI33106 El valor de este campo SubTotal excede la cantidad de decimales que soporta la moneda. CFDI33107 El TipoDeComprobante es I , E o N , el importe registrado en el campo no es igual a la suma de los importes de los conceptos registrados. CFDI33108 El TipoDeComprobante es T o P y el importe no es igual a 0 , o cero con decimales. CFDI33109 El valor registrado en el campo Descuento no es menor o igual que el campo Subtotal . CFDI33110 El TipoDeComprobante no es I , E o N , y un concepto incluye el campo descuento . CFDI33111 El valor del campo Descuento excede la cantidad de decimales que soporta la moneda. CFDI33112 El campo Moneda no contiene un valor del catálogo c_Moneda . CFDI33113 El campo TipoCambio no tiene el valor " 1 " y la moneda indicada es MXN . CFDI33114 El campo TipoCambio se debe registrar cuando el campo Moneda tiene un valor distinto de MXN y XXX . CFDI33115 El campo TipoCambio no se debe registrar cuando el campo Moneda tiene el valor XXX . CFDI33116 El campo TipoCambio no cumple con el patrón requerido. CFDI33117 Cuando el valor del campo TipoCambio se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion . CFDI33118 El campo Total no corresponde con la suma del subtotal, menos los descuentos aplicables, más las contribuciones recibidas (impuestos trasladados - federales o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) me nos los impuestos retenidos. CFDI33119 Cuando el valor del campo Total se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion . CFDI33120 El campo TipoDeComprobante , no contiene un valor del catálogo c_TipoDeComprobante . CFDI33121 El campo MetodoPago , no contiene un valor del catálogo c_MetodoPago . CFDI33122 Cuando se tiene el valor PIP en el campo MetodoPago y el valor en el campo TipoDeComprobante es I o E , el CFDI debe contener un complemento de recibo de pago. CFDI33123 Se debe omitir el campo MetodoPago cuando el TipoDeComprobante es T o P . CFDI33124 Si existe el complemento para recepción de pagos en este CFDI el campo MetodoPago no debe existir. CFDI33125 El campo LugarExpedicion , no contiene un valor del catálogo c_CodigoPostal . CFDI33126 El campo Confirmacion no debe existir cuando los atributos TipoCambio y/o Total están dentro del rango permitido. CFDI33127 Número de confirmación inválido. CFDI33128 Número de confirmación utilizado previamente. CFDI33129 El campo TipoRelacion , no contiene un valor del catálogo c_TipoRelacion . CFDI33130 El campo RegimenFiscal , no contiene un valor del catálogo c _RegimenFiscal .

50. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 42 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción Excepciones: Exception Ocurre si no se ha establecido en complemento D etallista. public void Det131_SetBuyer( string gln, /* el número global de localización */ string personOrDepartmentName /* contacto de compras */ ) Crea y agrega (o remplaza si existe) un buyer a detallista (como hijo) para indicar la información del comprador . Xpath: Cfdi:Complemento/ Detallista / buyer/gln, buyer/ contactInformation/ personOrDepartmentName/text Excepciones: Exception Esta excepción ocurre si no se ha establecido en complemento D etallista. public void Det131_SetDeliveryNote( DateTime ? referenceDate, /*opcional, pasar null para no agregar atributo*/ string ReferenceIdentification) Crea y establece un DeliveryNote a detallista (como hijo) para indicar la información recepción de mercancía. Xpath: Cfdi:Complemento/ Detallista / DeliveryNote Excepciones: Exception Esta excepción ocurre si no se ha establecido en complemento D etallista. public void Det131_SetInvoiceCreator( string gln, detallistaInvoiceCreatorAlternate PartyIdentificationType ? tipo, /* tipo de identificación secundaria se le asigno al proveedor */ string value, string name, string streetAddressOne, /* domicilio del emisor de la factura */ string city, string cp /* codigo postal del domicilio del emisor de la factura */ ) Crea y establece el InvoiceCreator a detallista (como hijo). Xpath: Cfdi:Complemento/ Detallista / InvoiceCreator/nameAndAddress, InvoiceCreator/ alternatePartyIdentification Excepciones: Exception Esta excepción ocurre si no se ha establecido e l complemento D etallista. public void Det131_SetOrderIdentification( DateTime ? referenceDate, string ReferenceIdentification ) Crea y establece el orderIdentification a detallista (como hijo). Xpath: Cfdi:Complemento/ Detallista / orderIdentification/ referenceIdentification Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento D etallista. public void Det131_SetPaymentTerms( detallistaPaymentTermsPaymentTerm sEvent ? termsEvent, detallistaPaymentTermsPaymentTerm sRelationTime ? termsRelationTime, detallistaPaymentTermsNetPaymentN etPaymentTermsType ? Crea y establece el paymentTerms a detallista (como hijo) para especificar los términos de pago de la factura Xpath: Cfdi:Complemento/ Detallista / paymentTerms/ y/ o Cfdi:Complemento/ Detallista / paymentTerms/paymentTimePeriod y/o

36. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 28 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.17.8 Estable r el shipTo ( lugar de envío ) de Detallista 01 02 03 04 05 06 07 complCfdi.Det131_SetShipTo( "8724098266218" , //gln "EMPRESA DEMO" , //name "Calle Peru num 029" , //street ad d ress one "Nuevo León" , //city "64590" //cp ); 4.17.9 Establecer el InvoiceCreator a Detallista 01 02 03 04 05 06 07 08 09 complCfdi.Det131_SetInvoiceCreator( "5529910871321" , //gln detallistaInvoiceCreatorAlternatePartyIdentificationType .IA, "1281282" , "EMPRESA DEMO" , //name "Calle Niños Heres num 1293" , //street a d dress one "Nuevo León" , //city "64590" ); //cp 4.17.10 Agregar un Customs a Detallista 01 02 03 complCfdi.Det131_AddCustomsGln( "0129829934772" ); 4.17.11 Agregar un currency a Detallista 01 02 03 04 05 06 07 complCfdi.Det131_addCurrency( detallistaCurrencyCurrencyISOCode .MXN, detallistaCurrencyCurrencyFunction .PRICE_CURRENCY, null , null , 17.10m ); 4.17.12 Establecer el paymentTerms a Detallista 01 02 03 04 05 06 07 08 09 10 11 complCfdi.Det131_SetPaymentTerms( detallistaPaymentTermsPaymentTermsEvent .DATE_OF_INVOIC E, detallistaPaymentTermsPaymentTermsRelationTime .REFERENCE_AFTER, detallistaPaymentTermsNetPaymentNetPaymentTermsType .BASIC_NET, detallis taPaymentTermsNetPaymentPaymentTimePeriodTimePeriodDueTimePeriod .DAYS, "10" , detallistaPaymentTermsDiscountPaymentDiscountType .ALLOWANCE_BY_PAYMENT_ON_TIME, "0.00" ); 4.17.13 Establec er un allowanceCharge a Detallista para definir cargos o descuentos 01 02 03 04 05 06 07 complCfdi.Det131_AddAllowanceCharge( detallistaAllowanceChargeAllowanceChargeType .ALLOWANCE_GLOBAL, detallistaAllowanceChargeSettlementType .BILL_BACK, "12717262" , // numConsec null , //detallista servetype 1.00m );

48. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 40 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción detallistaCurrencyCurrencyFunctio n ? funcion2, /*enumeración */ detallistaCurrencyCurrencyFunctio n ? funcion3, /*enumeración */ decimal ? rateOfChange) Exception Esta excepción ocurre si no se ha establecido en compl emento D etallista o si se superó e l nú mero máximo de nodos Currency . public void Det131_AddCustomsGln( string gln /* número global de localización (GLN) de la aduana */ ) Crea y a grega un nodo Customs como hijo al nodo detallista . Xpath: Cfdi:Complemento/ Detallista / Customs [] Excepciones: Exception Esta excepción ocurre si no si no se ha establecido en compl emento D etallista o si se superó el n ú mero máximo de nodos Customs . public void Det131_AddReferenceIdentification ToAdditionalInformation( detallistaReferenceIdentification Type tipo, /* el número de referencia adicional*/ string valor ) Crea y a grega un nodo referenceIdentification como hijo al nodo AdditionalInformation . Xpath: Cfdi:Complemento/ Detallista / AdditionalInformation / referenceIdentification Excepciones: Exception Esta excepción ocurre si no se ha establecido en compl emento D etallista o si se superó el n ú mero máximo de nodos ( 99 ) referenceIdentification . public void Det131_AddReferenceIdentification ToDeliveryNote( string referenceIdentification /* folio de folio de recepción de mercancia*/ ) Crea y agrega un nodo referenceIdentification como hijo al nodo DeliveryNote . Xpath: Cfdi:Complemento/ Detallista / DeliveryNote / referenceIdentification Excepciones: Exception Esta excepción ocurre si no se ha establecido en compl emento D etallista o si se superó el n ú mero máximo de nodos ( 30 ) referenceIdentification . Por último, si no se ha establecido DeliveryNote (que es opcional) . public void Det131_AddReferenceIdentification ToOrderIdentification( string referenceIdentification /* número de orden de compra (comprador) a la que hace referencia la factura */ ) Crea y agrega un nodo referenceIdentification como hijo al nodo orderIdentification . Xpath: Cfdi:Complemento/ Detallista / orderIdentification / referenceIdentification Excepciones: Exception Esta excepción ocurre si no se ha establecido en compl emento D etallista o si se superó el n ú mero máximo de nodos ( 30 ) referenceIdentification . Por último, si no se ha establecido orderIdentification (que es requerido ) . public void Det131_AddTotalAllowanceCharge( Crea y agrega un nodo TotalAllowanceCharge como hermano al nodo TotalAllowanceCharge .

32. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 24 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.15.1 Establecer Emisor de Comercio Exterior 01 02 03 04 05 06 07 08 09 10 11 12 complCfdi.Cce11_setEmisor( "" , //pCurp "1a. Privada de Oriente 17" , //pDomCalle "32" , //pDomNumExt null , //pDomNumInt "2805" , //pDomColonia "12" , //pDomLocalidad "Entre Norte 2 y 4" , //pDomReferencia "118" , //pDomMunicipio "VER" , //pDomEstado "MEX" , //pDomPais "94300" ); //pDomCP 4.15.2 Definir Receptor de Comercio Exterior 01 02 03 04 05 06 07 08 09 10 11 12 complCfdi.Cce11_setReceptor( "" , //pCurp "Domicilio Conocido" , //pDomCalle "" , //pDomNumExt null , //pDomNumInt "" , //pDomColonia "" , //pDomLocalidad "" , //pDomReferencia "MPIO" , //pDomMunicipio "CA" , //pDomEstado "USA" , //pDomPais "99999" ); //pDomCP 4.15.3 Agrega r mercancía de Comercio Exterior 01 02 03 04 05 06 07 ReturnXmlComplemento rtnXmlCompl = complCfdi.Cce11_generaComplemento(); Console .WriteLine( string .Format( "{0} - Termina crear complemento cce11" , DateTime .Now)); // log if (rtnXmlCompl.IsXmlComplementoCreated) { cfdi33.addComplementoComprobante(rtnXmlCompl.XMLComplemento); cfdi33.addNamespace(complCfdi.NsComercioExterior1_1); } 4.15.4 Generar el Complemento Comercio Exterior 01 02 03 04 05 06 07 08 09 10 11 /// generamos el complemento ReturnXmlComplemento rtnXmlCompl = complCfdi.Cce11_generaComplemento(); //verificamos que se haya creado. if (rtnXmlCompl.IsXmlComplementoCreated) { // le pasamos a al objeto CFDI33 el complemento y el namespace de comercio exterior cfdi33.addComplementoComprobante(rtnXmlCompl.XMLComplemento); cfdi33.addNamespace(complCfdi.NsComercioExterior1_1); } // ahora para generar el comprobante, sellar y timbrar ver la clase CFDI33 P ara generar el comprobante, sellar y timbrar ver la clase CFDI33

63. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 55 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.10.4 Clase ComercioExteriorDestinatarioDomicilio 5.10.4.1 Constructores Constructor Descripción public ComercioExteriorDestinatarioDomicilio (); Constructor vací o. 5.10.4.2 Propiedades Propiedades public string Calle { get ; set ; } public string NumeroExterior { get ; set ; } public string NumeroInterior { get ; set ; } public string Colonia { get ; set ; } public string Localidad { get ; set ; } public string Referencia { get ; set ; } public string Municipio { get ; set ; } public string Estado { get ; set ; } public string Pais { get ; set ; } public string CodigoPostal { get ; set ; } 5.10.5 Clase ComercioExteriorEmisor 5.10.5.1 Constructores Constructor Descripción public ComercioExteriorEmisor (); Constructor vací o. 5.10.5.2 Propiedades Propiedades public ComercioExteriorEmisorDomicilio Domicilio { get ; set ; } public string Curp { get ; set ; } 5.10.6 Clase ComercioExteriorEmisor 5.10.6.1 Constructores Constructor Descripción public ComercioExteriorEmisor (); Constructor vací o. 5.10.6.2 Propiedades Propiedades public string Calle { get ; set ; } public string NumeroExterior { get ; set ; } public string NumeroInterior { get ; set ; } public string Colonia { get ; set ; } public bool ColoniaSpecified { get ; set ; } public string Localidad { get ; set ; } public bool LocalidadSpecified { get ; set ; } public string Referencia { get ; set ; } public string Municipio { get ; set ; } public bool MunicipioSpecified { get ; set ; }

53. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 45 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción decimal pImportePagado ) Cfdi:Complemento/ nomina12: Nomina / nomina12: Percepciones / Percepcion[ @ indexPercepcion ]/ HorasExtra [] Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento Nó mina 1.2. Si no se ha establecido el nodo Percepcion . Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. ArgumentException si @ pTipoHoras no existe en el catálogo definido por el SAT . public void Nomina12_addIncapacidad( int pDias, string pTipo, decimal ? pImporteMon ) Crea y establece un nodo Incapacidad como hijo a Incapacidades . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12: Incapacidades / Incapacidad [] Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento Nó mina 1.2. Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. ArgumentException si @ pTipo no existe en el catálogo definido por el SAT . public int Nomina12_addOtroPago( string pTipo, /*Tipo de otro pago( catálogo )*/ string pClave, string pConcepto, decimal pImporte ) Crea y establece un nodo OtroPago como hijo a OtrosPagos para expresar otros pagos aplicables. Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12: OtrosPagos / OtroPago [] Returns: Í ndice del nodo OtroPago que se agreg ó Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento Nó mina 1.2. Si los parámetros no cumplen con las especific ac iones definidas por el SAT en formato o combinación. ArgumentException si @ pTipo no existe en el catálogo definido por el SAT public int Nomina12_addPercepcion( string pTipoPercepcion, string pClave, string pConcepto, decimal pImporteGravado, decimal pImporteExento ) Crea y establece un nodo Percepcion como hijo a Percepcion es . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12: Percepciones / Percepcion [] Returns: Í ndice del nodo Percepcion que se agregó Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento Nó mina 1.2.

33. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 25 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.16 Definir complemento N ó mina 01 02 03 04 05 06 07 08 09 10 11 //c omplCfdi es de tipo Complemento complCfdi.Nomina12_DefineNomina( "E" , //pTipoNomina new DateTime (2017, 01, 31), //pFechaPago new DateTime (2017, 01, 31), //fechaInicPago new DateTime (2017, 01, 31), //fechaFinPago 1m, //numDiasPag 75215.68m, //totPercepciones 3781.05m, //totDeducciones null ); 4.16.1 Agregar un emisor a Nómina 01 02 03 04 05 complCfdi.Nomina12_setEmisor( null , //pCurp "E52 - 19201 - 10 - 3" , //pRegPatronal null ); //pRfcPatronOrigen 4.16.2 Agregar un receptor a Nómina 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 //establecemos el receptor complCfdi.Nomina12_setReceptor( "BAPJ570702HSLLLN02" , //pCurp "23755735414" , //pNumSegSocial new DateTime (2013, 12, 09), //pFechaInicRelLab "P164W" , //pAntiguedad "01" , //pTipoContrato Complemento . Nomina12_pSiNoNoEspecificado .NoEspecificado, //esSindicalizado "01" , //pTipoJornada "02" , //pTipoRegimen "49" , //pNumEmpleado "1" , //pDepartamento "ENC ALMACEN DE MAQUI" , //pPuesto "5" , //pRiesgo "99" , //pPeriodiciadPago "072" , //pB anco null , //pCuentaBanco 210.00m, //pSalarioBaseCotApor 231.52m, //pSalarioDiario "SIN" ); //pEstado 4.16.3 Establecer que Nómina tiene percerpciones 01 02 03 04 05 06 07 complCfdi.Nomina12_setPercepciones( 5054.74m, //pTotalSueldos 70160.94m, //pTotalSeparacionIndemn null , //pTotalJubilacionPensionRetiro 50212.88m, //pTotalGravado 25002.80m); //pTotalExento

57. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 49 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si no se ha definido la instancia nodo OtrosPagos . Si @ pNumAñosServicio es mayor a 99 . ArgumentException Ni n guna. public void Pagos10_addDoctoRelacionadoToPago ( int indexPago, string pIdDocumento, string pSerie, string pFolio, string pMonedaDR, decimal ? pTipoCambioDR, string pMetodoDePagoDR, int ? pNumParcialidad, decimal ? pImpSaldoAnt, decimal ? pImpPagado, decimal ? pImpSaldoInsoluto ) Crea y define el nodo DoctoRelacionado como hijo de Pago . Xpath: Cfdi:Complemento/ pagos /pago/ DoctoRelacionado [] Excepciones: Exception Esta exc epción ocurre si no se ha definido el complemento P ago 1.0 . Si no se ha definido la instancia nodo pago . Si los parámetros no cumplen con las especificiones definidas por el SAT en formato o combinación. ArgumentException Si @ pMonedaDRes ó @pMetodoDePagoDR no existen en el catálogo del SAT . public int Pagos10_addPago( DateTime pFechaPago, string pFormaDePago, string pMoneda, decimal ? pTipoCambio, decimal pMonto, string pNumOperacion, string pRfcEmisorCtaOrd, string pNomBancoOrdExt, string pCtaOrdenante, string pRfcEmisorCtaBen, string pCtaBeneficiario, string pTipoCadPago, byte [] pCertPago, string pCadPago, byte [] pSelloPago ) Crea y define el nodo Pago como hijo de Pagos . Xpath: Cfdi:Complemento/ pagos / pago[] Returns: Í ndice del nodo pago que se agregó Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Pago 1.0. Si los parámetros no cumplen con las especificiones definidas por el SAT en formato o combinación. ArgumentException Si @ pFormaDePago , @pMoneda ó @pTipoCadPago no existen en el catálogo del SAT . public ReturnXmlComplemento Pagos10_generaComplemento() Genera el complemento pago 1.0 que es devuelto en el objeto ReturnXmlComplemento , si existe un error no fa tal es incluido en el mismo objeto. Ver propiedades: • ReturnXmlComplemento .IsXmlComplementoCreated • ReturnXmlComplemento .ErrorDetalle Excepciones: Exception Si los parámetros no cumplen con las especificiones definidas por el SAT en formato o combinación. Si no se tiene el mí nimo de elementos pagos ( 1 ). Si se tiene establecido el nodo impuestos ( no soportado para esta versión de librería).

69. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 61 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.12.12 Clase NominaOtroPagoSubsidioAlEmpleo 5.12.12.1 Propiedades Propiedades public decimal SubsidioCausado { get ; set ; } 5.12.13 Clase NominaPercepciones 5.12.13.1 Propiedades Propiedades public NominaPercepcionesPercepcion [] Percepcion { get ; set ; } public NominaPercepcionesJubilacionPensionRetiro JubilacionPensionRetiro { get ; set ; } public NominaPercepcionesSeparacionIndemnizacion SeparacionIndemnizacion { get ; set ; } public decimal TotalSueldos { get ; set ; } public bool TotalSueldosSpecified { get ; set ; } public decimal TotalSeparacionIndemnizacion { get ; set ; } public bool TotalSeparacionIndemnizacionSpecified { get ; set ; } public decimal TotalJubilacionPensionRetiro { get ; set ; } public bool TotalJubilacionPensionRetiroSpecified { get ; set ; } public decimal TotalGravado { get ; set ; } public decimal TotalExento { get ; set ; } 5.12.14 Clase NominaPercepcionesJubilacionPensionRetiro 5.12.14.1 Propiedades Propiedades public decimal TotalUnaExhibicion { get ; set ; } public bool TotalUnaExhibicionSpecified { get ; set ; } public decimal TotalParcialidad { get ; set ; } public bool TotalParcialidadSpecified { get ; set ; } public decimal MontoDiario { get ; set ; } public bool MontoDiarioSpecified { get ; set ; } public decimal IngresoAcumulable { get ; set ; } public decimal IngresoNoAcumulable { get ; set ; } 5.12.15 Clase NominaPercepcionesPercepcion 5.12.15.1 Propiedades Propiedades public NominaPercepcionesPercepcionAccionesOTitulos AccionesOTitulos { get ; set ; } public NominaPercepcionesPercepcionHorasExtra [] HorasExtra { get ; set ; } public string TipoPercepcion { get ; set ; } public string Clave { get ; set ; } public string Concepto { get ; set ; } public decimal ImporteGravado { get ; set ; } public decimal ImporteExento { get ; set ; }

49. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 41 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción detallistaTotalAllowanceChargeAll owanceOrChargeType allOrChrgType, /*enum para indicar si es cargo o descuento*/ detallistaTotalAllowanceChargeSpe cialServicesType ? specServType, /* enum para indicar el tipo de servicio*/ decimal ? A mnt /* total de los cargos o descuentos*/ ) Se debe indicar si es descuento o cargo ; es opcional indicar el tipo de servicio y el total de los cargos o descuentos. Xpath: Cfdi:Complemento/ Detallista / TotalAllowanceCharge [] Excepciones: Exception Esta excepción ocurre si no se ha establecido en compl emento D etallista o si se superó el n ú mero máximo de nodos ( 30 ) referenceIdentification . Por último , si no se ha establecido orderIdentification (que es requerido) . public int Det131_AgregaSpecialInstruction( detallistaSpecialInstructionCode Code, /* tipo de instrucciones comerciales */ string text ) Crea y agrega un nodo specialInstruction como hermano al nodo specialInstruction . Xpath: Cfdi:Complemento/ Detallista / specialInstruction [] Returns: Índice del nodo specialInstruction que se agregó Excepciones: Exception Esta excepción ocurre si no se ha establecido en compl emento D etallista o si se superó el n ú mero máximo de nodos ( 4 ) specialInstruction . public void Det131_AgregaTextASpecialInstruct ion( int indexSpecialInstr, /*index del nodo specialInstruction */ string text ) Crea y agrega un nodo text a specialInstruction (como hijo) dado un índice (el cu a l indica a qué nodo specialInstruction será el padre) . Xpath: Cfdi:Complemento/ Detallista / specialInstruction[ indexSpecialInstr ]/text Excepciones: Exception Esta excepción ocurre si no se ha establecido en complemento D etallista, si no existe el nodo specialInstruction o si se superó el nú mero máximo de nodos ( 15 ) text . public void Det131_Agrega_RequestForPaymentId entification_Detallista( detallistaRequestForPaymentIdenti ficationEntityType EntityType /* tipo de transacción */ ) Crea y agrega (o remplaza si existe) un requestForPaymentIdentification a detallista (como hijo) para indicar la transacció n. Xpath: Cfdi:Complemento/ Detallista / requestForPaymentIdentification/ entityType Excepciones: Exception Esta excepción ocurre si no se ha establecido en complemento D etallista. public void Det131_Define_Detallista( detallis taDocumentStatus DocumentStatus) Define el complemento detallista del comprobante. Xpath: Cfdi:Complemento/ Detallista public ReturnXmlComplemento Det131_generaComplemento() Retorna el complemento detallista en el objeto ReturnXmlComplemento si todo fue bien.

51. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 43 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción netPaymntTermsType, /*para el nodo paymentTimePeriod*/ detallistaPaymentTermsNetPaymentP aymentTimePeriodTimePeriodDueTime Period ? pTimePeriod, /*para el nodo paymentTimePeriod*/ string valueTimePeriod, detallistaPaymentTermsDiscountPay mentDiscountType ? descType, /*para el nodo discountPayment */ string porcent /*para el nodo discountPayment */ ) Cfdi:Complemento/ Detallista / paymentTerms/discountPayment Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento D etallista o si se estableci ó @ pTimePeriod o valueTimePeriod cuando se pasó @ netPaymntTermsType como null ( ya que estos perten e cen a dicho nodo. public void Det131_SetSeller( string strGln, detallistaSellerAlternatePartyIde ntificationType tipo, string alternatePartyIdentification) Crea y establece el seller a detallista (como hijo) para especificar la información del vendedor. Xpath: Cfdi:Complemento/ Detallista / seller Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento Detallista . public void Det131_SetShipTo( string gln, string name, string streetAddressOne, string city, string cp ) Crea y establece el shipTo a detallista (como hijo) para especificar la ubicación donde debe realizarse la entrega de la mercancía. Xpath: Cfdi:Complemento/ Detallista / shipTo Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento Detallista . public void Det131_setTotalAmount( decimal amnt ) Crea y establece el totalAmount a detallista (como hijo). Xpath: Cfdi:Complemento/ Detallista / totalAmount Excepciones: Exception Esta excepción ocurre si no se ha establecido el complemento Detallista . public ReturnXmlComplemento Iedu10_generaComplemento( string nombreAlumno, string curp, instEducativasNivelEducativo nivelEducativo, string autRVOE, string RfcPago ) Genera el complemento concepto de instituciones educativas privadas. El complemento viene la propiedad XMLComplemento de ReturnXmlComplemento . Excepciones: Exception Esta excepción ocurre si los parámetros no cumplen la especificación del SAT en formato o restricción : @ curp , @ rfcPago , @ autRVOE . public void ImpLocal10_Agrega_RetencionImpues toLocal( string nombre, /*Nombre del impuesto local retenido*/ decimal importe, decimal tasa) Crea y establece el RetencionesLocales a ImpuestosLocales (como hijo). Xpath: Cfdi:Complemento/ ImpuestosLocales / RetencionesLocales Excepciones:

67. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 59 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx • class NominaReceptorSubContratacion 5.12.2 Enumeración NominaReceptorSindicalizado Enumeraciones de NominaReceptorSindicalizado NominaReceptorSindicalizado 5.12.3 Clase Nomina 5.12.3.1 Propiedades Propiedades public bool TotalDeduccionesSpecified { get ; set ; } public decimal TotalDeducciones { get ; set ; } public bool TotalPercepcionesSpecified { get ; set ; } public decimal TotalPercepciones { get ; set ; } public decimal NumDiasPagados { get ; set ; } public DateTime FechaFinalPago { get ; set ; } public DateTime FechaInicialPago { get ; set ; } public decimal TotalOtrosPagos { get ; set ; } public DateTime FechaPago { get ; set ; } public string Version { get ; set ; } public NominaIncapacidad [] Incapacidades { get ; set ; } public NominaOtroPago [] OtrosPagos { get ; set ; } public NominaDeducciones Deducciones { get ; set ; } public NominaPercepciones Percepciones { get ; set ; } public NominaReceptor Receptor { get ; set ; } public NominaEmisor Emisor { get ; set ; } public string TipoNomina { get ; set ; } public bool TotalOtrosPagosSpecified { get ; set ; } 5.12.4 Clase NominaDeducciones 5.12.4.1 Propiedades Propiedades public NominaDeduccionesDeduccion [] Deduccion { get ; set ; } public decimal TotalOtrasDeducciones { get ; set ; } public bool TotalOtrasDeduccionesSpecified { get ; set ; } public decimal TotalImpuestosRetenidos { get ; set ; } public bool TotalImpuestosRetenidosSpecified { get ; set ; } 5.12.5 Clase NominaDeduccionesDeduccion 5.12.5.1 Propiedades Propiedades public string TipoDeduccion { get ; set ; } public string Clave { get ; set ; } public string Concepto { get ; set ; } public decimal Importe { get ; set ; }

62. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 54 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.10.2 Clase ComercioExterior 5.10.2.1 Constructores Constructor Descripción public ComercioExterior (); Constructor vací o. 5.10.2.2 Propiedades Propiedades public bool TipoCambioUSDSpecified { get ; set ; } public decimal TipoCambioUSD { get ; set ; } public string Observaciones { get ; set ; } public bool SubdivisionSpecified { get ; set ; } public int Subdivision { get ; set ; } public bool IncotermSpecified { get ; set ; } public string Incoterm { get ; set ; } public string NumeroExportadorConfiable { get ; set ; } public string NumCertificadoOrigen { get ; set ; } public bool CertificadoOrigenSpecified { get ; set ; } public decimal TotalUSD { get ; set ; } public int CertificadoOrigen { get ; set ; } public string ClaveDePedimento { get ; set ; } public string TipoOperacion { get ; set ; } public bool MotivoTrasladoSpecified { get ; set ; } public string MotivoTraslado { get ; set ; } public string Version { get ; set ; } public ComercioExteriorMercancia [] Mercancias { get ; set ; } public ComercioExteriorDestinatario [] Destinatario { get ; set ; } public ComercioExteriorReceptor Receptor { get ; set ; } public ComercioExteriorPropietario [] Propietario { get ; set ; } public ComercioExteriorEmisor Emisor { get ; set ; } public bool ClaveDePedimentoSpecified { get ; set ; } public bool TotalUSDSpecified { get ; set ; } 5.10.3 Clase ComercioExteriorDestinatario 5.10.3.1 Constructores Constructor Descripción public ComercioExteriorDestinatario (); Constructor vací o. 5.10.3.2 Propiedades Propiedades public ComercioExteriorDestinatarioDomicilio [] Domicilio { get ; set ; } public string NumRegIdTrib { get ; set ; } public string Nombre { get ; set ; }

71. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 63 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Propiedades public string Curp { get ; set ; } public NominaReceptorSubContratacion [] SubContratacion { get ; set ; } public string TipoRegimen { get ; set ; } public string ClaveEntFed { get ; set ; } 5.12.20 Clase NominaReceptorSubContratacion 5.12.20.1 Propiedades Propiedades public string RfcLabora { get ; set ; } public decimal PorcentajeTiempo { get ; set ; } 5.13 Referencia del Namespace SifeiSignature3_3.Complementos.Pagos10 5.13.1 Clases • class Pagos • class PagosPago • class PagosPagoDoctoRelacionado • class PagosPagoImpuestos • class PagosPagoImpuestosRetencion • class PagosPagoImpuestosTraslado 5.13.2 Clase Pagos 5.13.2.1 Propiedades Propiedades public PagosPago [] Pago { get ; set ; } public string Version { get ; set ; } 5.13.3 Clase PagosPago 5.13.3.1 Propiedades Propiedades public byte [] CertPago { get ; set ; } public bool TipoCadPagoSpecified { get ; set ; } public string TipoCadPago { get ; set ; } public string CtaBeneficiario { get ; set ; } public string RfcEmisorCtaBen { get ; set ; } public string CtaOrdenante { get ; set ; } public string NomBancoOrdExt { get ; set ; } public string RfcEmisorCtaOrd { get ; set ; } public string NumOperacion { get ; set ; } public decimal Monto { get ; set ; } public bool TipoCambioPSpecified { get ; set ; } public decimal TipoCambioP { get ; set ; } public string MonedaP { get ; set ; } public string FormaDePagoP { get ; set ; } public DateTime FechaPago { get ; set ; } public PagosPagoImpuestos [] Impuestos { get ; set ; } public PagosPagoDoctoRelacionado [] DoctoRelacionado { get ; set ; }

58. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 50 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.6 Namespace SifeiSignature3_3. Returns 5.6.1 Clase ReturnXML 5.6.1.1 Constructores Constructor Descripción public ReturnXML(); Constructor vací o. 5.6.1.2 Propiedades Nombre de propiedad Descripción public bool IsXMLCreated { get ; set ; } Booleano que indica si el XML fue creado . public string ErrorCodigo { get ; set ; } Indica el código de error . public string ErrorDetalle { get ; set ; } Propiedad que indicará el error detallado, esto incluye los errores de la “ Matriz de Errores ” del SAT . public XmlDocument XML { get ; set ; } Contendrá el comprobante en XML generado o un complemento. Esto varía depen d iendo del método que lo retorne. public bool EstaSellado { get ; set ; } Booleano que indicará si el comprobante está sellado. public string CadenaOriginal { get ; set ; } String que alberga la cadena original del comprobante. public string Sello { get ; set ; } Sello del comprobante. public string NoCert { get ; set ; } Nú mero de certificado. 5.6.2 Clase ReturnTimbre 5.6.2.1 Constructores Constructor Descripción public ReturnTimbre (); Constructor vací o. 5.6.2.2 Propiedades Nombre de propiedad Descripción public bool IsTimbrado { get ; set ; } Indica si se se timbró el CFDI . public string ErrorDetalle { get ; set ; } Indica el detalle del error (si es que hubo) durante el proceso de timbrado. public string CodigoError { get ; set ; } Có digo de error (si es que hubo) durante el proceso de timbrado. public XmlDocument Xml { get ; set ; } Objeto XmlElement que contiene Timbre en XML . public byte [] Cbb { get ; set ; } Arreglo de bytes del archivo imagen jpg del código de barras bidimensional. public TimbreBE Timbre { get ; set ; } Datos del timbre fiscal versión 1.1 . public XmlNode NodoTimbre { get ; set ; } Nodo del complemento timbre . 5.6.3 Clase ReturnXmlComplemento 5.6.3.1 Constructores Constructor Descripción public ReturnXmlComplemento(); Constructor vací o.

72. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 64 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Propiedades public string CadPago { get ; set ; } public byte [] SelloPago { get ; set ; } 5.13.4 Clase PagosPagoDoctoRelacionado 5.13.4.1 Propiedades Propiedades public string IdDocumento { get ; set ; } public string Serie { get ; set ; } public string Folio { get ; set ; } public string MonedaDR { get ; set ; } public decimal TipoCambioDR { get ; set ; } public bool TipoCambioDRSpecified { get ; set ; } public string MetodoDePagoDR { get ; set ; } public string NumParcialidad { get ; set ; } public decimal ImpSaldoAnt { get ; set ; } public bool ImpSaldoAntSpecified { get ; set ; } public decimal ImpPagado { get ; set ; } public bool ImpPagadoSpecified { get ; set ; } public decimal ImpSaldoInsoluto { get ; set ; } public bool ImpSaldoInsolutoSpecified { get ; set ; } 5.13.5 Clase PagosPagoImpuestos 5.13.5.1 Propiedades Propiedades public PagosPagoImpuestosRetencion [] Retenciones { get ; set ; } public PagosPagoImpuestosTraslado [] Traslados { get ; set ; } public decimal TotalImpuestosRetenidos { get ; set ; } public bool TotalImpuestosRetenidosSpecified { get ; set ; } public decimal TotalImpuestosTrasladados { get ; set ; } public bool TotalImpuestosTrasladadosSpecified { get ; set ; } 5.13.6 Clase PagosPagoImpuestosRetencion 5.13.6.1 Propiedades Propiedades public string Impuesto { get ; set ; } public decimal Importe { get ; set ; } 5.13.7 Clase PagosPagoImpuestosTraslado 5.13.7.1 Propiedades Propiedades public string Impuesto { get ; set ; } public string TipoFactor { get ; set ; } public decimal TasaOCuota { get ; set ; } public decimal Importe { get ; set ; }

39. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 31 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 12 13 14 15 16 17 18 19 //escribimos el comprobante recuperado.Xml.Save( @"C: \ Workspace \ hash_cfdi_timbrado.xml" ); // escribimos el código de barra bidimensional en un archivo jpg ByteArrayToFile( @"C: \ Workspace \ hash_cbb.jpg" , recuperado.Cbb); Console .WriteLine( string .Format( "{0} - Proceso finalizado" , DateTime .Now)); } 4.21 Cancelar un CFDI 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 32 ReturnCancelacion rtnCanc = null ; Cancelacion sifCanc = new Cancelacion (); string msg = "" ; List < string > uuids = new List < string >(); //el uuid del comprobante a cancelar uuids.Add( "B7A5628D - 447C - 4F10 - BCD7 - D1949CDF636C" ); try { rtnCanc = sifCanc.cancela( ref msg, uuids.ToArray(), //arreglo de UUID a cancelar "JGE080430LN8" , "0e84ec92" , "MAR980114GQA" , CERTIFICADO_PATH, CERTIFICADO_PASS, "12345678a" , //pass del certificado SifeiSignature3_3.Utils. Definiciones . TipoTimbrado .Pruebas ); //verificamos que se haya cancelado if (rtnCanc.IsCancelado) { //GUARDAMOS EL ACUSE DE CANCELACIÓN String acuse = rtnCanc.AcuseBE.AcuseXml; XmlDocument xml = new XmlDocument (); xml.LoadXml(acuse); xml.Save( @"C: \ Workspace \ xmlSaveTest \ acuseC.xml" ); MessageBox .Show( "Cancelación terminada" ); } else { MessageBox .Show( "Error al cancelar: " + rtnCanc.ErrorDetalle); } } catch ( Exception ex) { MessageBox .Show( "Error al cancelar: " + ex.Message); } Para mayor detalle ir a la sección 5 Referencia y a la sección 5.15 Có digos de R espuesta de C ancelación .

56. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 48 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si no se ha definido la instancia nodo Percepciones . ArgumentException Ni n guna. public void Nomina12_setPercepciones( decimal ? pTotalSueldos, decimal ? pTotalSeparacionIndemn, decimal ? pTotalJubilacionPensionRetiro, decimal pTotalGravado, decimal pTotalExento ) Crea y define el nodo Percepciones como hijo a nomina . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ Percepciones Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. ArgumentException Ni n guna. public void Nomina12_setReceptor( string pCurp, string pNumSegSocial, DateTime ? pFechaInicRelLab, string pAntiguedad, string pTipoContrato, Nomina12_pSiNoNoEspecificado esSindicalizado, string pTipoJornada, string pTipoRegimen, string pNumEmpleado, string pDepartamento, string pPuesto, string pRiesgo, string pPeriodiciadPago, string pBanco, string pCuentaBanco, decimal ? pSalarioBaseCotApor, decimal ? pSalarioDiario, string pEstado) Crea y define el nodo Emisor como hijo a Receptor . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ Receptor Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si los parámetros no cumplen con las especificiones definidas por el SAT en formato o combinación. ArgumentException Si @ pTipoContrato , @ pTipoRegimen , @pTipoJornada , @pRiesgo , @pEstado , @pPeriodiciadPago o @pBanco no existe en el catálogo del SAT . public void Nomina12_setSeparacionIndemnizaci on( decimal pTotalPagado, int pNumAñosServicio, decimal pUltimoSueldoMensOrd, decimal pIngresoAcumulable, decimal pIngresoNoAcumulable ) Crea y define el nodo SeparacionIndemnizacion como hijo a Percepciones . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ Percepciones/ SeparacionIndemnizacion Excepciones: Exception Esta excepción ocurre si no se ha definido el complemento Nó mina 1.2. Si no se ha definido la instancia nodo Percepciones . Si @ pNumAñosServicio es mayor a 99 . ArgumentException Ni n guna. public void Nomina12_setSubsidioAlEmpleo( int indexOtroPago, decimal pSubsidioCausado) Crea y define el nodo SubsidioAlEmpleo como hijo a OtroPago . Xpath: Cfdi:Complemento/ nomina12: Nomina / nomina12:/ OtrosPagos/OtroPago/ SubsidioAlEmpleo

38. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 30 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.18.1 Agregar un DoctoRelacionado a Pago 01 02 03 04 05 06 07 08 09 10 11 12 complCfdi.Pagos10_addDoctoRelacionadoToPago( indexPago, //posicion del pago al cual agregarle el DoctoRelacionado "BD837DE6 - A09D - 42D9 - 8849 - FE576BD875C0" , //IdDocumento "Serie" , //serie "1" , //folio "USD" , null , //tipo de cambio "PPD" , // método de pago 5, // número de parcialidad 3222.34m, 3222.34m, 0m); //impuesto saldo Insoluto 4.18.2 Generar el Complemento Pago 01 02 03 04 05 06 07 08 09 10 11 //generamos el complemento pago ReturnXmlComplemento rtnXmlCompl = complCfdi.Pagos10_generaComplemento(); //verificamos que se haya creado. if (rtnXmlCompl.IsXmlComplementoCreated) { // agregamos el complemento al compro bante cfdi33.addComplementoComprobante(rtnXmlCompl.XMLComplemento); //agregamos el namespace del complemento pago al comprobante cfdi33.addNamespace(complCfdi.NsPagos10); } 4.19 Definir y generar el complemento IEDU (a un concepto) 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 //debido a que el complemento IEDU es un solo nodo, el método Iedu10_generaComplemento define y genera el complemento a la vez . ReturnXmlComplemento rtnXmlCompl = complCfdi.Iedu10_generaComplemento( "SOLIS HERRERA VALERIA" , //nombre del alumno "SOHV031025MHGLRLA4" , //curp instEducativasNivelEducativo .Primaria, "13PPR0034X" , //autRVOE "AALE5706229F6" //rfcPago ); //comprobamos que se creó el complemento if (rtnXmlCompl.IsXmlComplementoCreated) { //agregamos el compl e mento al concepto indicado por @indexConc cfdi33.addComplementoConcepto(indexConc, rtnXmlCompl.XMLComplemento); //agr eg amos el namespace de Iedu al comprobante cfdi33.addNamespace(complCfdi.NsIedu10); } 4.20 Recuperar timbre 01 02 03 04 05 06 07 08 09 10 11 //creamos el XmlDocument y cargamos el comprobante System.Xml. XmlDocument cfdi = new System.Xml. XmlDocument (); cfdi.Load( @"C: \ Workspace \ comprobante.xml" ); ReturnTimbre recuperado = CFDI33 .recuperaTimbre( "JGE080430LN8" , //usuario "0e84ec92" , //password cfdi, //objeto XmlDocument CFDI33 . tipoTimbrado .Pruebas ); //verificamos si esta timbrado (si existe un timbre) if (recuperado.IsTimbrado) {

46. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 38 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Constructor Descripción public Complemento( string connString, DateTime pFecha ); Inicializar la clase. @ connString representa la cadena de conexión a la base de datos, ejemplo: “Server=localhost;Port=3306;Database= catálogo ssat;Uid=root;Pwd=123456;" 5.5.1.3 Métodos Métodos complemento Descripción public void Cce11_addDescripcionEspecifica( int pIndexMercancia, string pMarca, string pModelo, string pSubmodelo, string pNumSerie ) ; Agrega la descripción al complemento de Comercio Exterior . xPath: Cfdi:Complemento/ cce11: ComercioExterior/ Mercancias/Mercanci a/DescripcionesEspecificas Excepciones: Exception Esta excepción ocurre si los parámetros no cumple n con el formato v á lido establecido por el SAT . Tambié n cuando no se ha definido la instancia Comercio Exterior . public int Cce11_addDestinatario( string pNumRegIdTrib, // número de identificación o registro fiscal del país string pNombre, //nombre del destinaratio string pDomCalle, string pDomNumExt, string pDomNumInt, string pDomColonia, string pDomLocalidad, string pDomReferencia, string pDomMunicipio, string pDomEstado, string pDomPais, string pDomCP) Crea el nodo Destinatario y su hijo Domicilio . Se hacen las validaciones correspondientes . Xpath: Cfdi:Complemento/ cce11: ComercioExterior/ Destinatario Excepciones: Exception Esta excepción ocurre si no cumple con el formato v á lido establecido por el SAT . ArgumentException Ocurre cuando pDomPais no existe en el catálogo . Returns: Í ndice del nodo Destinatario que se agregó . public void Cce11_addDestinatarioDomicilio( in t pIndexDestinatario, string pDomCalle , string pDomNumExt , string pDomNumInt, string pDomColonia, string pDomLocalidad, string pDomReferencia, string pDomMunicipio, string pDomEstado, string pDomPais, string pDomCP ) ; Crea y establece un nodo hijo Domicio al nodo Destinatario . Xpath: Cfdi:Complemento/ cce11: ComercioExterior /Destinatario/ Domici lio public int Cce11_addMercancia( string pNoIdentificacion, string pFraccionAranc, decimal ? pCantidadAduana, string pUnidadAduana, decimal ? pValorUnitAduana, decimal pValorDolares) Crea y establece un nodo hijo Mercancia a Mercancias . Xpath: Cfdi:Complemento/ cce11 : ComercioExterior / Mercancias / Mercanci a Returns: Í ndice del nodo Mercancia que se agregó .

70. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 62 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.12.16 Clase NominaPercepcionesPercepcionAccionesOTitulos 5.12.16.1 Propiedades Propiedades public decimal ValorMercado { get ; set ; } public decimal PrecioAlOtorgarse { get ; set ; } 5.12.17 Clase NominaPercepcionesPercepcionHorasExtra 5.12.17.1 Propiedades Propiedades public int Dias { get ; set ; } public string TipoHoras { get ; set ; } public int HorasExtra { get ; set ; } public decimal ImportePagado { get ; set ; } 5.12.18 Clase NominaPercepcionesSeparacionIndemnizacion 5.12.18.1 Propiedades Propiedades public decimal TotalPagado { get ; set ; } public int NumAñosServicio { get ; set ; } public decimal UltimoSueldoMensOrd { get ; set ; } public decimal IngresoAcumulable { get ; set ; } public decimal IngresoNoAcumulable { get ; set ; } 5.12.19 Clase NominaReceptor 5.12.19.1 Propiedades Propiedades public decimal SalarioDiarioIntegrado { get ; set ; } public bool SalarioBaseCotAporSpecified { get ; set ; } public decimal SalarioBaseCotApor { get ; set ; } public string CuentaBancaria { get ; set ; } public bool BancoSpecified { get ; set ; } public string Banco { get ; set ; } public string PeriodicidadPago { get ; set ; } public bool RiesgoPuestoSpecified { get ; set ; } public string RiesgoPuesto { get ; set ; } public string Puesto { get ; set ; } public string Departamento { get ; set ; } public bool SalarioDiarioIntegradoSpecified { get ; set ; } public string NumEmpleado { get ; set ; } public bool TipoJornadaSpecified { get ; set ; } public string TipoJornada { get ; set ; } public bool SindicalizadoSpecified { get ; set ; } public NominaReceptorSindicalizado Sindicalizado { get ; set ; } public string TipoContrato { get ; set ; } public string Antigüedad { get ; set ; } public bool FechaInicioRelLaboralSpecified { get ; set ; } public DateTime FechaInicioRelLaboral { get ; set ; } public string NumSeguridadSocial { get ; set ; }

47. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 39 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Métodos complemento Descripción public void Cce11_addPropietario( string pNumRegIdTrib, string pResidenciaFiscal ) Crea y establece un nodo Propietario como hijo a ComercioExterior . Xpath: Cfdi:Complemento/ cce11 : ComercioExterior / Propietario public void Cce11_Define_ComercioExterior( string pMotivoTrasl, string pTipoOperacion, string pClavePedim, int ? pCertifOrigen, string pNumCertifOrigen, string pNumExportadorConf, string pIncoterm, int ? pSubdivision, string pObservaciones, decimal ? pTipoCambioUSD, decimal ? pTotalUSD) Define el complemento ComercioExterior . Xpath: Cfdi:Complemento/ cce11 : ComercioExterior Excepciones: Exception Esta excepción ocurr e si no cumple con el formato vá lido establecido por el SAT . ArgumentException Ocurre cuando un parámetro no existe en el catálogo . public ReturnXmlComplemento Cce11_generaComplemento() Genera el complemento de comercio exterior, lanza una excepción si no se ha definido la instancia comercio exterior (con el método Cce11_Define_ComercioExterio r () ) public void Cce11_setEmisor( string pCurp, string pDomCalle, string pDomNumExt, string pDomNumInt, string pDomColonia, string pDomLocalidad, string pDomReferencia, string pDomMunicipio, string pDomEstado, string pDomPais, string pDomCP) Crea y establece un nodo Emisor (como hijo de ComercioExterior ). Xpath: Cfdi:Complemento/ cce11 : ComercioExterior / Emisor Excepciones: Exception Si algún atributo no cumple con el formato definido por el SAT , o si no se ha definido el complemento ComercioExterior11 . public void Cce11_setReceptor( string pNumRegIdTrib, string pDomCalle, string pDomNumExt, string pDomNumInt, string pDomColonia, string pDomLocalidad, string pDomReferencia, string pDomMunicipio, string pDomEstado, string pDomPais, string pDomCP) Crea y establece un nodo Receptor (como hijo de ComercioExterior ). Xpath: Cfdi:Complemento/ cce11 : ComercioExterior / Emisor Excepciones: Exception Si algún atributo no cumple con el formato definido por el SAT , o si no se ha definido el complemento ComercioExterior11 public void Det131_AddAllowanceCharge( detalli staAllowanceChargeAllowanceCharge Type allChargeType, detallistaAllowanceChargeSettleme ntType settType, string numConsec, detallistaAllowanceChargeSpecialS ervicesType ? specialServType, decimal ? porcent) Crea y establece un nodo allowanceCharge (como hijo de Detallista ). Xpath: Cfdi:Complement o/ Detallista / allowanceCharge Excepciones: Exception Si algún atributo no cumple con el formato definido por el SAT , o si no se ha definido el complemento Detallista (ver Det131_Define_Detallista() ) , o si se ha sobrepasado el lí mite de 99 . public void Det131_addCurrency( detallistaCurrencyCurrencyISOCode isoCode, /*enumeración */ detallistaCurrencyCurrencyFunctio n funcion1, /*enumeración */ Crea y a grega un nodo currency como hijo al nodo detallista . Xpath: Cfdi:Complemento/ Detallista / currency [] Excepciones:

8. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página VIII de viii octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Listado de Imágenes Imagen 1 Creación de proyecto .Net Framework 3.5 ................................ ................................ ................................ ................................ ............................ 4 Imagen 2 Proyecto recién creado ................................ ................................ ................................ ................................ ................................ ................................ . 4 Imagen 3 Copiando los recursos al proyecto ................................ ................................ ................................ ................................ ................................ ........... 5 Imagen 4 Inclusión de carpeta SAT en el proyecto ................................ ................................ ................................ ................................ ................................ 6 Imagen 5 Inclusión del resto de bibliotecas ................................ ................................ ................................ ................................ ................................ ............. 6 Imagen 6 Modificando la propiedad "Copiar al directorio de Salida" ................................ ................................ ................................ ............................. 7 Imagen 7 Modificando la propiedad "Copiar al directorio de salida" a "Copiar siempre” ................................ ................................ ........................ 7 Imagen 8 Agregar referencia al proyecto ................................ ................................ ................................ ................................ ................................ .................. 8 Imagen 9 Carpeta donde está SifeiSignature ................................ ................................ ................................ ................................ ................................ .... 8 Imagen 10 Referencia de biblioteca agregada ................................ ................................ ................................ ................................ ................................ ........ 9 Imagen 11 Configuración de aplicación requerida para SIFEI Signature ................................ ................................ ................................ ........................ 9 Imagen 12 Seleccionado Archivo de Configuración de Aplicación ................................ ................................ ................................ ................................ . 10 Imagen 13 Archivo de configuración limpio ................................ ................................ ................................ ................................ ................................ ........... 10 Imagen 14 Archivo de configuración con la configuración necesaria para SIFEI Signature ................................ ................................ ................... 11 Imagen 15 Ejecuta el script para la creación de la base de datos ................................ ................................ ................................ ................................ ... 11 Imagen 16 Consulta para mostrar el valor de max_allowed_packet ................................ ................................ ................................ ........................... 11 Imagen 17 Error 2006 MySQL server has gone away ................................ ................................ ................................ ................................ ............... 12 Imagen 18 Variable max_allowed_packet = 1MB: causará “E rror 2006: MySQL server has gone away ” ................................ ........... 12 Imagen 19 Comando para cambiar de forma global el límite que define ma x_allowed_packet a 32 MB ................................ .................. 12 Imagen 20 Cambiando variable Max_allowed_packet temporalmente (este efecto no cambia la sesión actual y dura solo mientras el servicio esté activo - hasta que el servicio sea reiniciado - ) ................................ ................................ ................................ ................................ ................. 13 Imagen 21 Archivo de configuración del servidor de MariaDB, cambio de 1mb a 16 MB (se debe reiniciar el servicio) ............................. 13 Imagen 22 Procedimiento para la ejecución del script, comenzando por el listado de la base de datos, la ejecución del script y finalizando por la comprobación de su creación ................................ ................................ ................................ ................................ ................................ .. 14 Imagen 23 Atributos de CFDI agregados ................................ ................................ ................................ ................................ ................................ ................ 15 Imagen 24 Nodo CfdiRelacionados agregado ................................ ................................ ................................ ................................ ................................ .. 16 Imagen 25 CFDIRelacionado agregado ................................ ................................ ................................ ................................ ................................ ................ 16 Imagen 26 Nodo Emisor agregado ................................ ................................ ................................ ................................ ................................ .......................... 16 Imagen 27 Nodo Receptor agregado ................................ ................................ ................................ ................................ ................................ ..................... 17 Imagen 28 Nodo Concepto agregado ................................ ................................ ................................ ................................ ................................ ..................... 17 Imagen 29 InformacionAduanera agregada a conceptos ................................ ................................ ................................ ................................ .............. 18 Imagen 30 Resultado de agregar un impuesto traslado al concepto ................................ ................................ ................................ ............................ 18 Imagen 31 Nodo Impuestos agregado a comprobante ................................ ................................ ................................ ................................ .................... 19 Imagen 32 Impuesto traslado agregado ................................ ................................ ................................ ................................ ................................ .................. 19 Imagen 33 Comprobante Sellado ................................ ................................ ................................ ................................ ................................ .............................. 2 2 Imagen 34 Comprobante timbrado ................................ ................................ ................................ ................................ ................................ ........................... 23

6. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página VI de viii octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 5.10.4 Clase ComercioExteriorDestinatarioDomicilio ................................ ................................ ................................ ...... 55 5.10.5 Clase ComercioExteriorEmisor ................................ ................................ ................................ ................................ ............. 55 5.10.6 Clase ComercioExteriorEmisor ................................ ................................ ................................ ................................ ............. 55 5.10.7 Clase ComercioExteriorMercancia ................................ ................................ ................................ ................................ ..... 56 5.10.8 Clase ComercioExteriorMercanciaDescripcionesEspecificas ................................ ................................ ........ 56 5.10.9 Clase ComercioExteriorPropietario ................................ ................................ ................................ ................................ 56 5.10.10 Clase Comerc ioExteriorReceptor ................................ ................................ ................................ ................................ .. 57 5.10.11 Clase ComercioExteriorReceptorDomicilio ................................ ................................ ................................ ........... 57 5.11 Referencia del Namespace SifeiSignature3_3.Complementos.ImpLocal10 ................................ ...................... 57 5.11.1 Clase ImpuestosLocales ................................ ................................ ................................ ................................ ............................. 57 5.11.2 Clase ImpuestosLocalesRetencionesLocales ................................ ................................ ................................ .............. 58 5.11.3 Clase ImpuestosLocalesTrasladosLocales ................................ ................................ ................................ ................... 58 5.12 Referencia del Namespace SifeiSignature3_3.Complementos.Nomina12 ................................ ........................... 58 5.12.1 Clases ................................ ................................ ................................ ................................ ................................ ................................ ..... 58 5.12.2 Enumeración NominaReceptorSindicalizado ................................ ................................ ................................ ................ 59 5.12.3 Clase Nomina ................................ ................................ ................................ ................................ ................................ ...................... 59 5.12.4 Clase NominaDeducciones ................................ ................................ ................................ ................................ .......................... 59 5.12.5 Clase NominaDeduccionesDeduccion ................................ ................................ ................................ ................................ ... 59 5.12.6 Clase NominaEmisor ................................ ................................ ................................ ................................ ................................ ....... 60 5.12.7 Clase NominaEmisorEntidadSNCF ................................ ................................ ................................ ................................ ........... 60 5.12.8 Propiedades ................................ ................................ ................................ ................................ ................................ ........................ 60 5.12.9 Clase NominaIncapacidad ................................ ................................ ................................ ................................ .......................... 60 5.12.10 Clase NominaOtroPago ................................ ................................ ................................ ................................ ............................ 60 5.12.11 Clase NominaOtroPagoCompensacionSaldosAFavor ................................ ................................ .............................. 60 5.12.12 Clase NominaOtroPagoSubsidioAlEmpleo ................................ ................................ ................................ ................... 61 5.12.13 Clase NominaPercepciones ................................ ................................ ................................ ................................ .................. 61 5.12.14 Clase NominaPercepcionesJubilacionPensionRetiro ................................ ................................ ...................... 61 5.12.15 Clase NominaPercepcionesPercepcion ................................ ................................ ................................ ........................ 61 5.12.16 Clase NominaPercepcionesPercepcionAccionesOTitulos ................................ ................................ ............... 62 5.12.17 Clase NominaPercepcionesPercepcionHorasExtra ................................ ................................ .............................. 62 5.12.18 Clase NominaPercepcionesSeparacionIndemnizacion ................................ ................................ ...................... 62 5.12.19 Clase NominaReceptor ................................ ................................ ................................ ................................ ............................ 62 5.12.20 Clase NominaReceptorSubContratacion ................................ ................................ ................................ ..................... 63 5.13 Referencia del Namespace SifeiSignature3_3.Complementos.Pagos10 ................................ .............................. 63 5.13.1 Clases ................................ ................................ ................................ ................................ ................................ ................................ ..... 63 5.13.2 Clase P agos ................................ ................................ ................................ ................................ ................................ ......................... 63

4. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página IV de viii octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.10 Agregar un impuesto traslado a impuestos de comprobante ................................ ................................ ............................ 19 4.11 Generar el XML ................................ ................................ ................................ ................................ ................................ ........................ 19 4.12 Sel lar el comprobante ................................ ................................ ................................ ................................ ................................ .......... 21 4.13 Timbrar el comprobante ................................ ................................ ................................ ................................ ................................ ...... 22 4.14 Crear Complementos ................................ ................................ ................................ ................................ ................................ ............ 23 4.15 Definir complemento Comercio Exterior ................................ ................................ ................................ ................................ ...... 23 4.15.1 Establecer Emisor de Comercio Exterior ................................ ................................ ................................ ................................ . 24 4.15.2 Definir Receptor de Comercio Exterior ................................ ................................ ................................ ................................ .... 24 4.15.3 Agregar mercancía de Comercio Exterior ................................ ................................ ................................ .............................. 24 4.15.4 Generar el Complemento Comercio Exterior ................................ ................................ ................................ ........................ 24 4.16 Definir complemento Nómina ................................ ................................ ................................ ................................ .......................... 25 4.16.1 Agregar un emisor a Nómina ................................ ................................ ................................ ................................ ...................... 25 4.16.2 Agregar un receptor a Nómina ................................ ................................ ................................ ................................ ................... 25 4.16.3 Establecer que Nómina tiene percerpciones ................................ ................................ ................................ ........................ 25 4.16.4 Agregar una percepción a percepciones de Nómina ................................ ................................ ................................ ........ 26 4.16.5 Agregar una Separación indemnización a percepciones de Nómina ................................ ................................ ........ 26 4.16.6 Establer deducciones a Nómina ................................ ................................ ................................ ................................ ................. 26 4.16.7 Agregar una deducción a deducciones de Nómi na ................................ ................................ ................................ .......... 26 4.16.8 Generar el Complemento Nómina ................................ ................................ ................................ ................................ ............ 26 4.17 Definir complemento Detallista ................................ ................................ ................................ ................................ ....................... 26 4.17.1 Establecer el requestForPaymentIdentification a Detallista ................................ ................................ ............... 27 4.17.2 Agregar un specialInstruction a Detallista ................................ ................................ ................................ ................... 27 4.17.3 Establecer el orderIdentification a Detallista ................................ ................................ ................................ .............. 27 4.17.4 Agregar un referenceIdentification al AdditionalInformation de Detallista ................................ ....... 27 4.17.5 Establecer un DeliveryNote a Detallista ................................ ................................ ................................ .............................. 27 4.17.6 Definir el Buyer (comprador) de Detallista ................................ ................................ ................................ ........................... 27 4.17.7 Definir el Seller (vendedor) a Detallista ................................ ................................ ................................ ................................ ... 27 4.17.8 Establer el shipTo ( lugar de envío) de Detallista ................................ ................................ ................................ ............... 28 4.17.9 Establecer el InvoiceCreator a Detallista ................................ ................................ ................................ ........................... 28 4.17.10 Agregar un Customs a Detallista ................................ ................................ ................................ ................................ .......... 28 4.17.11 Agregar un currency a Detallista ................................ ................................ ................................ ................................ ....... 28 4.17.12 Establecer el paymentTerms a Detallista ................................ ................................ ................................ .......................... 28 4.17.13 Establecer un allowanceCharge a Detallista para definir cargos o descuentos ................................ ............ 28 4.17.14 Definir el totalAmount a Detallista ................................ ................................ ................................ ................................ .... 29 4.17.15 Definir el TotalAllowanceChargea Detallista para definir el monto total de cargos o descuentos .... 29 4.17.16 Generar el complemento Detallista ................................ ................................ ................................ ................................ .... 29

3. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página III de viii octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx Contenido Listado de Imágenes ................................ ................................ ................................ ................................ ................................ ................................ ... viii 1. Generalidades ................................ ................................ ................................ ................................ ................................ ................................ .......... 1 1.1 Introducción ................................ ................................ ................................ ................................ ................................ ................................ ...... 1 1.2 Objetivo ................................ ................................ ................................ ................................ ................................ ................................ ............... 1 1.3 Alcance ................................ ................................ ................................ ................................ ................................ ................................ ................ 1 1.4 Requerimientos Mínimos ................................ ................................ ................................ ................................ ................................ ............. 1 1.5 Términos y Definiciones ................................ ................................ ................................ ................................ ................................ ............... 1 1.6 Términos y definiciones técnicas ................................ ................................ ................................ ................................ .............................. 2 1.7 Referencias ................................ ................................ ................................ ................................ ................................ ................................ ......... 2 1.8 Recursos ................................ ................................ ................................ ................................ ................................ ................................ .............. 2 1.9 Versiones de CFDI que se timbran ................................ ................................ ................................ ................................ ........................... 2 1.9.1 Métodos de SIFEI Signature ................................ ................................ ................................ ................................ ............................ 2 2. Convenciones de documentación ................................ ................................ ................................ ................................ ................................ .. 3 2.1 Atributos opcionales ................................ ................................ ................................ ................................ ................................ ...................... 3 3. Primeros pasos (getting started) ................................ ................................ ................................ ................................ ................................ ..... 4 3.1 Agregar recursos ................................ ................................ ................................ ................................ ................................ ............................. 5 3.1.1 Co piar la carpeta SAT y las librerías ................................ ................................ ................................ ................................ ............. 5 3.1.2 Incluir la carpeta SAT y dll en el proyecto ................................ ................................ ................................ ............................. 5 3.1.3 Configurar los archivos para ser copiados en el directorio de salida ................................ ................................ ............ 6 3.2 Agregar la biblioteca al proyecto ................................ ................................ ................................ ................................ ............................. 7 3.3 Agregar información del servicio web ................................ ................................ ................................ ................................ ................... 9 3.4 Crear base de datos ................................ ................................ ................................ ................................ ................................ .................... 11 3.4.1 Comandos usados para crear la base de datos ................................ ................................ ................................ ................... 11 3.4.2 Cambiar max_allowed_packet (Opcional) ................................ ................................ ................................ .......................... 12 3.4.3 Ejecutar el script ................................ ................................ ................................ ................................ ................................ ................ 14 4. Ejemplos ................................ ................................ ................................ ................................ ................................ ................................ ................. 15 4.1 Instanciar un Objeto tipo CFDI33 ................................ ................................ ................................ ................................ ......................... 15 4.2 Establecer CfdiRelacionados ................................ ................................ ................................ ................................ .............................. 16 4.3 Agregar un CfdiRelacionado ................................ ................................ ................................ ................................ .............................. 16 4.4 Agregar el Emisor ................................ ................................ ................................ ................................ ................................ ......................... 16 4.5 Agregar el Receptor ................................ ................................ ................................ ................................ ................................ .................... 17 4.6 Agregar un concepto ................................ ................................ ................................ ................................ ................................ .................. 17 4.7 Agregar Información aduanera a un concepto ................................ ................................ ................................ ............................... 18 4.8 Agregar un impuesto traslado a un concepto ................................ ................................ ................................ ................................ . 18 4.9 Agregar total impuestos de comprobante ................................ ................................ ................................ ................................ ........ 18

5. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página V de viii octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 4.18 Defin ir Complemento de Recepción de Pagos ................................ ................................ ................................ .......................... 29 4.18.1 Agregar un DoctoRelacionado a Pago ................................ ................................ ................................ ................................ . 30 4.18.2 Generar el Complemento Pago ................................ ................................ ................................ ................................ .................. 30 4.19 Definir y generar el complemento IEDU (a un concepto) ................................ ................................ ................................ ..... 30 4.20 Recuperar timbre ................................ ................................ ................................ ................................ ................................ .................... 30 4.21 Cancelar un CFDI ................................ ................................ ................................ ................................ ................................ .................... 31 5. Ref erencia ................................ ................................ ................................ ................................ ................................ ................................ .............. 32 5.1 Namespaces ................................ ................................ ................................ ................................ ................................ ................................ ... 32 5.2 Clases principales ................................ ................................ ................................ ................................ ................................ ......................... 32 5.3 Na mespace SifeiSignature3_3.Version3_3 ................................ ................................ ................................ ............................ 32 5.3.1 Clase CFDI33 ................................ ................................ ................................ ................................ ................................ ....................... 32 5.3.2 Métodos ................................ ................................ ................................ ................................ ................................ ............................... 33 5.3.3 Enumeraciones: ................................ ................................ ................................ ................................ ................................ .................. 37 5.4 Name space SifeiSignature3_3.Timbre11 ................................ ................................ ................................ ................................ . 37 5.4.1 Clases ................................ ................................ ................................ ................................ ................................ ................................ ..... 37 5.4.2 Clase Timb reBE ................................ ................................ ................................ ................................ ................................ ................. 37 5.5 Namespace SifeiSignature3_3.Complementos ................................ ................................ ................................ ....................... 37 5.5.1 Clase Complemento ................................ ................................ ................................ ................................ ................................ ......... 37 5.6 Namespace SifeiSignature3_3. Returns ................................ ................................ ................................ ................................ .... 50 5.6.1 Clase ReturnXML ................................ ................................ ................................ ................................ ................................ ............... 50 5.6.2 Clase ReturnTimbre ................................ ................................ ................................ ................................ ................................ ....... 50 5.6. 3 Clase ReturnXmlComplemento ................................ ................................ ................................ ................................ .................. 50 5.6.4 Clase ReturnCancelacion ................................ ................................ ................................ ................................ .......................... 51 5.7 Namespace SifeiSignature3_3.Complementos.Detallista131 ................................ ................................ ................... 51 5.7.1 Enumeraciones de complemento Detallista versión 1.3.1 ................................ ................................ ............................... 51 5.8 Namespace SifeiSignature3_3.Complementos.Iedu10 ................................ ................................ ................................ ..... 52 5.8.1 Enumeraciones de complemento Instituciones Educativas versión 1.0 ................................ ................................ .... 52 5.8.2 Enumeraciones de complemento Nómina versión 1.2 ................................ ................................ ................................ ..... 52 5.9 Referencia del Namespace SifeiSignature3_3.Cancelacion ................................ ................................ ........................... 52 5.9.1 Clase Acuse ................................ ................................ ................................ ................................ ................................ ......................... 52 5.9.2 Clas e AcuseDetalle ................................ ................................ ................................ ................................ ................................ ....... 52 5.9.3 Clase Cancelacion ................................ ................................ ................................ ................................ ................................ ......... 53 5.10 Referencia del Namespace SifeiSignature3_3.Complementos.Cce11 ................................ ................................ ... 53 5.10.1 Clases ................................ ................................ ................................ ................................ ................................ ................................ ..... 53 5.10.2 Clase ComercioExterior ................................ ................................ ................................ ................................ ............................. 54 5.10.3 Clase ComercioExteriorDestinatario ................................ ................................ ................................ .............................. 54

28. M ANUAL T ÉCNICO DE SIFEI S IGNATURE Página 20 de 70 octubre 2017 S OLUCIÓN I NTEGRAL DE F ACTURACIÓN E LECTRÓNICA E I NFORMÁTICA SIFEI S. A. DE C. V. Primera Privada de Oriente 17 No. 32, Col. Centro, Orizaba , Ver. CP 94300, Tel. (272) 726 - 6999 www.sifei.com.mx 09 10 11 12 MessageBox .Show( "No se escribió el archivo" ); } } Tras seguir los ejemplos de código anteriores el XML producido es el siguiente: <? xml version = " 1.0 " encoding = " utf - 8 " ?> < cfdi:Comprobante xmlns:cfdi = " http://www.sat.gob.mx/cfd/3 " xmlns:xsi = " http://www.w3.org/2001/XMLSchema - instance " xsi:schemaLocation = " http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/c fdv33.xsd " Version = " 3.3 " Serie = " DEMO " Folio = " 6 " Fecha = " 2017 - 10 - 18T16:25:14 " Sello = " @ " FormaPago = " 02 " NoCertificado = " 20001000000300022756 " Certificado = " MIb5LT6fQyzWhdYKAz/pdMHs4gN24v5rC3ad9AlGDVoMNsb2gDeL1m+1L.... " CondicionesDePago = " 30 DIAS " SubTotal = " 2228.80 " Descuento = " 220.51 " Moneda = " MXN " TipoCambio = " 1 " Total = " 2329.62 " TipoDeComprobante = " I " MetodoPago = " PUE " LugarExpedicion = " 76246 " > < cfdi:CfdiRelacionados TipoRelacion = " 04 " > < cfdi:CfdiRelacionado UUID = " 2214C542 - 2FE6 - 45C5 - BDA0 - 4C8EFF94CCFE " /> < cfdi:CfdiRelacionado UUID = " 806EA594 - A850 - 48C3 - B56E - 1EB0C4D570C8 " /> </ cfdi:CfdiRelacionados > < cfdi:Emisor Rfc = " MAR980114GQA " Nombre = " UNION NACIONAL DE RESINEROS SA DE CV " RegimenFiscal = " 601 " /> < cfdi:Receptor Rfc = " CTR801211M15 " Nombre = " MARGARITA RODRIGUEZ TELLEZ " UsoCFDI = " G01 " /> < cfdi:Conceptos > < cfdi:Concepto ClaveProdServ = " 01010101 " Cantidad = " 8 " ClaveUnidad = " H87 " Unidad = " PZA " Descripcion = " CALCIFLAVON (Tablets) " ValorUnitario = " 278.60 " Importe = " 2228.80 " Descuento = " 220.51 " > < cfdi:Impuestos > < cfdi:Traslados > < cfdi:Traslado Base = " 2008.29 " Impuesto = " 002 " TipoFactor = " Tasa " TasaOCuota = " 0.16 " Importe = " 321.33 " /> </ cfdi:Traslados > </ cfdi:Impuestos > < cfdi:InformacionAduanera NumeroPedimento = " 15 43 3740 6000564 " /> </ cfdi:Concepto > </ cfdi:Conceptos > < cfdi:Impuestos TotalImpuestosRetenidos = " 0.00 " TotalImpuestosTrasladados = " 321.33 " > < cfdi:Traslados > < cfdi:Traslado Impuesto = " 002 " TipoFactor = " Tasa " TasaOCuota = " 0.16 " Importe = " 321.33 " /> </ cfdi:Traslados > </ cfdi:Impuestos > </ cfdi:Comprobante > En caso de error se debe verificar la propiedad ErrorDetalle del objeto rtnCfdi de tipo ReturnXML (linea 07)

Vistas

  • 1471 Vistas totales
  • 795 Vistas del sitio web
  • 676 Vistas incrustadas

Acciones

  • 0 Acciones Sociales
  • 0 Me gusta
  • 0 No me gusta
  • 0 Comentarios

Veces compartido

  • 0 Facebook
  • 0 Twitter
  • 0 LinkedIn
  • 0 Google+