Quobit

Cultura Digital, Tutoriales, tecnología y gadgets

Factura Electrónica, todo lo que debes saber

SAT 12

SAT 12

 

De forma obligatoria desde abril de este año en México la Facturación Electrónica debe ser parte de todos los contribuyentes, aunque ya existen varios PAC’s autorizados por el SAT para brindar este servicio, algunas empresas han optado por desarrollar sus propios sistemas.

Muchos me han preguntado desde cómo obtener el sello digital en una factura electrónica hasta como generar el XML o hacer el timbrado de un CFDI, por ello hoy quiero compartirte el siguiente artículo con toda la información que debes saber para hacer tu sistema de facturación electrónica.

Hace algunos años, cuando empezaba a investigar acerca de la Facturación Electróncia fui creando una serie de post que se iban complementando unos a los otros pero no resultó ser suficiente para toda la información que se necesita.

Eso si, si buscas obtener una factura electrónica de Forma Gratuita el SAT proporciona un sistema que cumple con las condiciones básicas y que puede ser usado por cualquier contribuyente que este al corriente con sus obligaciones fiscales.

Requisitos previos

Antes que empieces a ver todo lo que se habla de la generación de los CFDI es importante que te des un clavado a la Miscelanea Fiscal del SAT, particularmente en el Anexo 20, porqué ahí viene todo lo necesario para implementar el sistema si en algún momento te atoras.

Necesitarás también obtener la FIEL y el Certificado de Sello Digital (CSD) del contribuyente que emitirá la factura electrónica, estos trámites son gratuitos y los puedes hacer desde la página del SAT.

Para tus pruebas de desarrollo necesitas descargar los certificados de prueba que proporciona el SAT. Una vez que tu sistema funcione al 100% solo necesitarás cambiar los certificados. Puedes consultar todos los requisitos aquí: ¿Cómo crear un CFDI?

La creación del XML

Para todo aquel que desea ser un proveedor certificado de facturación el SAT no obliga algún lenguaje de programación para realizar la facturación electrónica solamente te pone una serie de reglas que debes cumplir para garantizar la seguridad de las facturas que emitas. Para este fin propociona algunos talleres informativos que puedes consultar aquí.

En este caso, por mi experiencia todo lo tengo desarrollado en PHP 5 y por ello te compartiré toda la información, pero si conoces otro lenguaje trasladarla no te costará trabajo solo necesitas buscar las funciones que son similares.

El primer paso será convertir los archivo .cer y .key en archivos terminación .pem la encriptación que necesitas la haces por medio de OpenSSL, los comandos para realizarlo lo puedes consultar aquí: Comando para encriptar .key.pem y .cer.pem

Genera la cadena original y el sello digital

Teniendo estos archivos, solamente debes generar un archivo .XML con las reglas que indica el SAT en el Anexo 20. Colocando los nodos del XML de la forma correcta y considerando valores que son opcionales siempre podrás generar una cadena original y posteriormente el sello digital válido para el SAT.

Para hacerlo también necesitas valerte de OpenSSL o la función de PHP llamada XSLTPROC, los comandos necesarios podrás encontrarlos aquí: ¿Cómo se obtiene el sello digital en un CFDI?

Recuerda la cadena original solo es una digestión del contenido del XML en una cadena de una sola línea con cada campo separado por pipes ( | ), si no lo haces correctamente y verificas que los acentos esten codificados en UTF8 y la información que tiene no es la correcta, el siguiente paso nunca podrás darlo.

Ya que tienes tu Sello Digital, será necesario que retomes tu función que genera el XML y vuelvas a construir tu XML añadiendo el nodo correspondiente al Sello Digital.

Valida tu XML

No siempre a la primera nos resultará un XML válido pero siempre podrás validarlo en los validadores oficiales que el SAT proporciona de forma gratuita, que lo único que hacen es comprobar la forma en que esta construido el XML y no la veracidad de la información. Los validadores estan aquí.

Ahora que si quieres puedes construir tu propio validardor de un archivo .XML del SAT, solamente necesitas valerte de la función XSLTProcessor de PHP para que realices el proceso. Los comandos que necesitas los encuentras en: ¿Cómo Validar un CFDI con PHP y OpenSSL?

Listo ya validaste que es correcto y ya construiste tu propio validador para que así cada que generes un CFDI éste sea correcto. Hasta aquí podría funcionarte si no deseas crear todo un sistema para revender facturas electrónicas.

Por lo tanto, tu podrías contactar con un PAC y decirle que ya cuentas con tu propio sistema de facturación electrónica y que te de acceso a su API de desarrollo para enviarle tu XML  y él te lo regresará timbrado.

Muchos PAC’s lo que hacen es que por medio de un WebService te conectes a su sistema y ellos hacen todo, pero otros piden cosas diferentes solo será cuestión que conozcas los requerimientos de cada uno.

Quiero ser PAC

En caso que desees convertirte en un PAC deberás, además desarrollar todo un sistema que controle clientes, productos, documentos y la base será todo lo que te explique en los puntos anteriores, porque cada que un cliente genere un certificado requieres seguir ese proceso.

Pero bueno, sigamos… El siguiente paso una ves que tienes el XML con sello digital válido es timbrarlo. A Esto nos referimos con recibir la autorización del SAT para que se convierta en una factura electrónica válida.

El Timbre Fiscal Digital

Por lo tanto, el siguiente paso es que generes un nodo adicional en tu XML que se llame TimbreFiscalDigital pero antes de empezar a crearlo debes considerar que tienes los siguientes datos:

  • El archivo .XSLT del TFD que proporciona el SAT
  • Sello Digital de tu CFD como proveedor autorizado
  • CSD del Emisor del comprobante

Ahora sí, con esa información solamente necesitas ejecutar un comando para generar el timbre fiscal digital, mismo que puedes encontrar aquí: Cómo generar el Timbre Fiscal Digital.

También requerirás generar un UUID que no es más que un número único generado bajo el estándar RFC4122 es el siguiente: Como obtener el UUID

Y listo practicamente siguiendo estos pasos podrás lograr construir tu propio sistema de facturación electrónica, aunque esto solo es un resumen, recuerda que el SAT te entregará reglas específicas, pero para que te las des debes mostrar tu sistema funcionando bajo los principios que te liste en esta nota.

Si tuvieras alguna duda puedes contactarme, o si quieres adquirir la Clase en PHP que realiza todas las tareas que te acabo de comentar puedes adquirirla en el siguiente link.