Nuevo esquema de cancelación de facturas electrónicas en C# .Net, CFDI 3.3 SAT

En este video abarcare todo lo que debes saber cómo programador para cancelar bajo el nuevo esquema del SAT para la cancelación de facturas electrónicas que entro en vigor este pasado 1 de noviembre del 2018.

Ejemplo de XML de complemento para recibo de pago ya timbrado, SAT, cfdi 3.3

Les adjunto un ejemplo de como sería un archivo con el complemento para la recepción de pago versión 1.0, como lo solicita el SAT.

¿Quieres aprender a programar el complemento de pago? Yo te enseño gratis dando clic aquí.

El siguiente xml ya esta timbrado y es valido.


<?xml version="1.0" encoding="ISO-8859-1"?>
<cfdi:Comprobante LugarExpedicion="20131" TipoDeComprobante="P" Total="0" Moneda="XXX" SubTotal="0" Certificado="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" NoCertificado="30001000000300023708" Sello="Vj+oPDouoVyXz0Gwh2wDsrukh2XwrwK9cZXOoh+RqFd6Otwdduz/RyFyvfR9Kio13IbCeLeLEVWZneik1CU/gwVAJ6+v/CBkd2AjL32JQsaWNitAqQ+kdgmtbSO0ZAoQazTcSyzYyk7n/14EQGlIwa66OjSS77WPkiZIhz8TFF5wCKir4i3tEMGfpuok1ZVR4EIpzVc9vu+CEnTPKhxd2wsPp6aUyaYTt3wvIrle+qmBlF9mkWMYai4obBq+BCp5HhmxUBFizafE+MAdj/M8y2WSobyg6PSD75pgfPas9l9mqX4919It5AqF3n7Iadvzo1hDK2vZAbwXAYShJ3gb3g==" Fecha="2018-09-18T00:06:39" Folio="1" Serie="H" Version="3.3" xsi:schemaLocation="http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
	<cfdi:Emisor RegimenFiscal="605" Nombre="Una razón rh de cv" Rfc="LEGH870601DM7"/>
	<cfdi:Receptor Nombre="Pepe SA DE CV" Rfc="BIO091204LB1" UsoCFDI="P01"/>
	<cfdi:Conceptos>
		<cfdi:Concepto Importe="0" ValorUnitario="0" Descripcion="Pago" ClaveUnidad="ACT" Cantidad="1" ClaveProdServ="84111506"/>
	</cfdi:Conceptos>
	<cfdi:Complemento>
		<pago10:Pagos Version="1.0" xmlns:pago10="http://www.sat.gob.mx/Pagos">
			<pago10:Pago Monto="666" MonedaP="MXN" FormaDePagoP="01" FechaPago="2018-09-18T00:06:39">
				<pago10:DoctoRelacionado ImpPagado="600" MetodoDePagoDR="PUE" MonedaDR="MXN" IdDocumento="BEDC8964-7E57-4604-9968-7E01378E8706"/>
				<pago10:DoctoRelacionado ImpPagado="66" MetodoDePagoDR="PUE" MonedaDR="MXN" IdDocumento="BEDC8964-7E57-4604-9968-7E01378E8706"/>
			</pago10:Pago>
		</pago10:Pagos>
		<tfd:TimbreFiscalDigital Version="1.1" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd" RfcProvCertif="EME000602QR9" SelloSAT="GICyRB9uhyZ1u6zuj8ZpxWM92gU2kDfmodwTvXoLy3ZMxrXWsqrF16tYfwBxK8eZDmXoxnKWTfoubcyt/DtgxDHDEyqRLf+oYashKByApRLRtIYTvivrm1XZCL6RuYlKyNwjrsk2vx4kJfk+/vCcy9pSYfG8sXHPPNg8yNsvpAdGpN2JF8b11QpbYukgaspkCh5hEcOuuu7/kM2p0sRC1bZMzMxAbD9QCgSoRkpMxnHbif5oY60pK68b3yp417ZtaKCLk2y/oetZGkpgNnImC6KDbqo4fuXDnfqxSrjEJW9UIMiyOW92sP8LljFXicGBjLTQMq1kGLyM7SeSAG7c/Q==" NoCertificadoSAT="20001000000300022323" SelloCFD="Vj+oPDouoVyXz0Gwh2wDsrukh2XwrwK9cZXOoh+RqFd6Otwdduz/RyFyvfR9Kio13IbCeLeLEVWZneik1CU/gwVAJ6+v/CBkd2AjL32JQsaWNitAqQ+kdgmtbSO0ZAoQazTcSyzYyk7n/14EQGlIwa66OjSS77WPkiZIhz8TFF5wCKir4i3tEMGfpuok1ZVR4EIpzVc9vu+CEnTPKhxd2wsPp6aUyaYTt3wvIrle+qmBlF9mkWMYai4obBq+BCp5HhmxUBFizafE+MAdj/M8y2WSobyg6PSD75pgfPas9l9mqX4919It5AqF3n7Iadvzo1hDK2vZAbwXAYShJ3gb3g==" FechaTimbrado="2018-09-18T00:06:44" UUID="FE5B2DD2-7E57-44E0-88C9-FB1AF0D17142"/>
	</cfdi:Complemento>
</cfdi:Comprobante>

¿Cómo timbrar el XML para cfdi 3.3 facturación electrónica C# .Net? – conectandonos al PAC – SAT #6

Para contratar el servicio de timbrado comunícate al siguiente teléfono (33) 36581329 o al correo electrónico [email protected]. Y si deseas un DESCUENTO diles que viste los videos de Héctor de León o hdeleon.

En este video te mostrare como timbrar el xml que en los videos anteriores construimos y sellamos.

Descargar proyecto hecho en el video: clic aquí.

Video 1: https://www.youtube.com/watch?v=XlTz0NRQLm4

Video 2: https://www.youtube.com/watch?v=HjfqdTspnio

Video 3: https://www.youtube.com/watch?v=qIr-LdCzfF0

Video 4: https://www.youtube.com/watch?v=suRypKtb7VU

Video 5: https://www.youtube.com/watch?v=FBcEeEpgwr0

Catálogos sat mysql: https://hdeleon.net/catalogos-para-facturar-3-3-sat-en-mysql/


class Program
    {
        //modifiquen por su path
        static private string path = @"C:\Users\Bioxor\source\repos\Facturacion3.3-tutorial-hdeleon\";
        static string pathXML = path + @"miPrimerXML.xml";

        static void Main(string[] args)
        {
            //Obtener numero certificado------------------------------------------------------------

            string pathCer = path+@"XSDToXML\CSD01_AAA010101AAA.cer";
            string pathKey = path+@"XSDToXML\CSD01_AAA010101AAA.key";
            string clavePrivada = "12345678a";

            //Obtenemos el numero
            string numeroCertificado, aa, b, c;
            SelloDigital.leerCER(pathCer, out aa, out b, out c, out numeroCertificado);

            //Llenamos la clase COMPROBANTE--------------------------------------------------------
            Comprobante oComprobante = new Comprobante();
            oComprobante.Version = "3.3";
            oComprobante.Serie = "H";
            oComprobante.Folio = "1";
            oComprobante.Fecha = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
           // oComprobante.Sello = "faltante"; //sig video
            oComprobante.FormaPago = "99";
            oComprobante.NoCertificado = numeroCertificado;
           // oComprobante.Certificado = ""; //sig video
            oComprobante.SubTotal = 10m;
            oComprobante.Descuento = 1;
            oComprobante.Moneda = "MXN";
            oComprobante.Total = 9;
            oComprobante.TipoDeComprobante = "I";
            oComprobante.MetodoPago = "PUE";
            oComprobante.LugarExpedicion = "20131";

            ComprobanteEmisor oEmisor = new ComprobanteEmisor();

            oEmisor.Rfc = "LEGH870601DM7";
            oEmisor.Nombre = "Una razón rh de cv";
            oEmisor.RegimenFiscal = "605";

            ComprobanteReceptor oReceptor = new ComprobanteReceptor();
            oReceptor.Nombre = "Pepe SA DE CV";
            oReceptor.Rfc = "BIO091204LB1";
            oReceptor.UsoCFDI = "P01";

            //asigno emisor y receptor
            oComprobante.Emisor = oEmisor;
            oComprobante.Receptor = oReceptor;

            List<ComprobanteConcepto> lstConceptos = new List<ComprobanteConcepto>();
            ComprobanteConcepto oConcepto = new ComprobanteConcepto();
            oConcepto.Importe = 10m;
            oConcepto.ClaveProdServ = "92111704";
            oConcepto.Cantidad = 1;
            oConcepto.ClaveUnidad = "C81";
            oConcepto.Descripcion = "Un misil para la guerra";
            oConcepto.ValorUnitario = 10m;
            oConcepto.Descuento = 1;

            lstConceptos.Add(oConcepto);

            oComprobante.Conceptos = lstConceptos.ToArray();

            //Creamos el xml
            CreateXML(oComprobante);

            string cadenaOriginal = "";
            string pathxsl = path+ @"XSDToXML\cadenaoriginal_3_3.xslt";
            System.Xml.Xsl.XslCompiledTransform transformador = new System.Xml.Xsl.XslCompiledTransform(true);
            transformador.Load(pathxsl);

            using (StringWriter sw= new StringWriter())
            using (XmlWriter xwo= XmlWriter.Create(sw,transformador.OutputSettings)) {

                transformador.Transform(pathXML, xwo);
                cadenaOriginal = sw.ToString();
            }

            SelloDigital oSelloDigital = new SelloDigital();
            oComprobante.Certificado = oSelloDigital.Certificado(pathCer);
            oComprobante.Sello = oSelloDigital.Sellar(cadenaOriginal, pathKey, clavePrivada);

            CreateXML(oComprobante);

            //TIMBRE DEL XML
            ServiceReferenceFC.RespuestaCFDi respuestaCFDI = new ServiceReferenceFC.RespuestaCFDi();

            byte[] bXML = System.IO.File.ReadAllBytes(pathXML);

            ServiceReferenceFC.TimbradoClient oTimbrado =new ServiceReferenceFC.TimbradoClient();

            respuestaCFDI = oTimbrado.TimbrarTest("TEST010101ST1", "aaaaaa", bXML);

            if (respuestaCFDI.Documento == null) {
                Console.WriteLine(respuestaCFDI.Mensaje);
            }
            else
            {

                System.IO.File.WriteAllBytes(pathXML, respuestaCFDI.Documento);
            }

        }

        private static void CreateXML(Comprobante oComprobante)
        {
            //SERIALIZAMOS.-------------------------------------------------

            XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces();
            xmlNameSpace.Add("cfdi", "http://www.sat.gob.mx/cfd/3");
            xmlNameSpace.Add("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital");
            xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");

            XmlSerializer oXmlSerializar = new XmlSerializer(typeof(Comprobante));

            string sXml = "";

            using (var sww = new Utils.StringWriterWithEncoding(Encoding.UTF8))
            {

                using (XmlWriter writter = XmlWriter.Create(sww))
                {

                    oXmlSerializar.Serialize(writter, oComprobante,xmlNameSpace);
                    sXml = sww.ToString();
                }

            }

            //guardamos el string en un archivo
            System.IO.File.WriteAllText(pathXML, sXml);
        }
    }

Curso para crear la factura electrónica 3.3 cfdi del SAT GRATIS en C# .Net




Gratuitamente te enseñare como puedes crear tu factura electrónica con los siguientes videos, te aseguro que después de ver los videos podrás entender a la perfección como realizar el cfdi 3.3 que tanto martirio tiene a todos los contribuyentes en México.

Te invito a que te suscribas a mi canal de youtube para mas videos interesantes sobre programación.

1.- ¿Cómo convertir archivos XSD a clases de C# .Net? cfdi 3.3 

En este primer video te muestro como generar automáticamente las clase a partir de los archivos xsd del SAT.

2.- ¿Cómo crear el XML para cfdi 3.3 facturación electrónica C# .Net? – Limpiando código 

Una vez que creaste las clases de manera automatica, es momento de optimizarlas, y a continuación te muestro como hacerlo.

3.- ¿Cómo crear el XML para cfdi 3.3 facturación electrónica C# .Net? – implementando anexo 20

Ya por fin que tenemos nuestras clases adecuadas para crear el archivo XML, es momento de ir llenandolo conforme el anexo 20 del SAT, para ello te explico los campos del SAT para que son y como llenarlos de la forma correcta.

4.- ¿Cómo sellar el XML para cfdi 3.3 facturación electrónica C# .Net? – utf8, obtener número de Certificado

Ya que tenemos el xml listo, es momento comenzar el sellado, y te diré como obtener el numero del certificado; tambien te enseñare como cambiar la codificación de tu xml a utf8.

5.- ¿Cómo sellar el XML para cfdi 3.3 facturación electrónica C# .Net? – Sellar con key

Ya por fin vamos a sellar nuestro xml con nuestro archivo key, al igual te mostrare como arreglar el problema con los campos FieldSpecified que se generaron al crear nuestras clases en el primer video, agregar los namespace adecuados del SAT, y a obtener la cadena original por medio del archivo xslt necesaria para el sellado.

6.- ¿Cómo timbrar el XML para cfdi 3.3 facturación electrónica C# .Net? – conectandonos al PAC

Ya por fin en este vide veras como realizar el mitico timbrado de la factura, con lo cual tu factura ya sera valida para el SAT.

Para contratar el servicio de timbrado comunícate al siguiente teléfono (33) 36581329 o al correo electrónico [email protected]. Y si deseas un DESCUENTO diles que viste los videos de Héctor de León.

Si eres un perezoso o te urge hacer la facturación electrónica, te dejo el enlace al código del proyecto, espero te sirva: Código del proyecto

Dudas y comentarios pueden hacérmelos llegar en los comentarios abajo.

Sistema de facturación electrónica cfdi 3.3 gratis por 90 días – Facturacenter.com.mx

Pocas veces hablo de los sistemas que yo he hecho, pero esta vez me tome la tarea de hablar de algo que a muchos les puede servir.

Ver la funcionalidad del sistema en youtube.

Hace algunos días hice una factura en la aplicación que hizo SAT para cfdi 3.3 y es una burla, parece una plataforma hecha por becarios. La opinión que tengo de todo lo que es la facturación electrónica la pueden encontrar aquí.

Ya que estamos en este enrollo de la fiscalización que nos obliga el SAT a más de uno le servirá el sitio que yo he liderado para su desarrollo y el cual ya utilizan muchísimas personas.

Formulario para facturación

Primero te registras y seleccionas el paquete de 30 folios gratis así puedes utilizarlos, solo recuerda que tienen caducidad de 90 días, una vez que lleguen esos 90 días puedes seguir entrando pero deberás comprar otro paquete, los cuales hay desde 10 folios hasta muchísimos (no recuerdo el dato solo soy un programador), estos últimos folios tienen caducidad de un año, pero algo importante, los folios se congelan solamente. Es decir:

Si tengo el paquete gratuito de 30 folios y solo gaste 1 folio en una factura en los 3 meses, compro mi paquete de 10 folios, ahora tendría 39 folios (29 que me quedaron + 10 nuevos), y estos me duraran de caducidad 1 año, e igual al año se congelaría la cantidad.

¿Qué diferencia tiene con la aplicación del SAT?
Que tu factura la harás mucho más rápido ya que puedes guardar datos de tus clientes, empleados (también se pueden timbrar nominas), productos, tipos de comprobantes, tienes asistencia rápida, puedes entrar desde el celular ya que el sitio es responsivo, puedes ver tus facturas rápidamente, descargarlas, enviarlas por correo, y muchas cosas más, además el sistema se actualiza con nuevas cosas y todo esto es solo por el precio de tus folios (no se cobro ni la actualización de 3.2 a 3.3).

Precios paquetes (tomo la imagen del sitio igual revisar en el sitio los precios por si cambiaron):

Es decir si eres un doctor, un arquitecto, un freelance o una persona que utiliza pocos folios al año, es conveniente esta plataforma ya que por un precio bastante bajo tienes todo un poderoso sistema.

El enlace es el siguiente (recuerden seleccionar el paquete gratuito de 30 folios al registrarse):

Facturacenter.com
facturacenter.com.mx

Dudas y comentarios abajo hay un formulario.